پیچ و خم مسیر زندگی یک برنامه نویس نوجوان


از بچگی کار کردن با کامپیوتر رو خیلی دوست داشتم. خیلی از همسن و سالانم از کامپیوتر فقط برای بازی استفاده می کردن ولی من بیشتر دوست داشتم که از اسرار برنامه های کامپیوتری سر در بیارم. هنوز که به اون روز ها فکر می کنم، هی غصه می خورم که چرا زودتر با برنامه نویسی آشنا نشده بودم و چرا زود تر این حس رو تو خودم کشف نکرده بودم.

تقریبا 13 سال داشتم که تصمیم گرفتم یه هکر بشم (بذارید صادق باشم، اسمش برام جذاب بود) و بدون این که اصلا هیچ پیش زمینه ای از شبکه و برنامه نویسی و سیستم عامل و وب و ... داشته باشم، در به در به دنبال ویدیو های آموزشی برای ورود به این زمینه بودم.

راستش رو بخواید، فکر می کردم که کار راحتیه و از سختی های راه خبر نداشتم. هنوز شروع نکرده به یه بنبست خیلی بزرگ خوردم. هر کاری کردم که ازش فرار کنم ولی نمی شد. به هر بهونه ای یقه ام رو می چسبید. اسمش "بن بست برنامه نویسی بود". اوایل خیلی ازش فرار می کردم. اسمش برام خیلی ترسناک بود و با خودم می گفتم بابا تو فقط یه بچه ای، تورو چه به برنامه نویسی و این حرفها. به هر حال تصمیم گرفتم که برنامه نویسی رو یادبگیرم. چند روز بعدش تحقیقاتم رو در این زمینه شروع کردم و فهمیدم که باید زبان های برنامه نویسی رو یاد بگیرم. زبان جاوا رو انتخاب کردم ولی حتی نتونستم برنامه hello world جاوا رو اجرا کنم. اصلا نمی دونستم jdk و jre و intellij idea و ... چی هستن. سرعت اینترنتم هم خیلی پایین بود در حد 20 kb بر ثانیه برای همین خیلی سر دانلودشون اذیت شدم. آخرش هم هیچی به هیچی. نتونستم حتی یه برنامه ساده جاوا رو اجرا کنم.

کاملا دلسرد شده بودم تا اینکه با زبان برنامه نویسی فوق العاده python آشنا شدم. تنها چیزی که نیاز داشتم فقط یه interpreter (مفسر) بود و یه ویرایشگر کد ساده مثل sublime. زبان برنامه نویسی python نسبت به جاوا خیلی آسون تر بود. کد های تمیز تری داشت. ساختار ساده کد ها من رو شگفت زده کرده بود. با خودم می گفتم مگه میشه اینقدر راحت برنامه نویسی کرد. python برای من شبیه به یه رویا بود. حالا از تعریف از python بگذریم. یه کتاب pdf برای یادگیری پایتون گرفتم و شروع به برنامه نویسی کردم. اطراف من هیچ کسی نبود که بتونم ازش کمک بگیرم پس باید خودم در کنار درس های مدرسه، برنامه نویسی رو هم یاد میگرفتم. اون روز ها رو دقیقا یادم نیست. ولی فکر کنم یادگیری مقدماتی python تقریبا یه ماه طول کشید.

تقریبا دیگه خواسته من تغییر پیدا کرده بود، دیگه نمی خواستم یه هکر باشم. دلم می خواست یه برنامه نویس باشم. این دفعه نه به خاطر اینکه اسمش برام جذاب بود بلکه به خاطر علاقه ای که نسب بهش پیدا کرده بودم. برنامه نویسی برای من یه سرگرمی باحال بود تا یه شغل. کم کم دلم می خواست برنامه های بزرگ تری نسبت به قبل بنویسم و به کاربرانم قابلیت تعامل با برنامه ام رو از طریق ویجت های بصری بدم. دلم می خواست برنامه هایم رابط کاربری داشته باشند پس رفتم سراغ tkinter که یکی از ساده ترین کتابخانه های ساخت رابط گرافیکی پایتون هستش. بعد از یادگیری اون اولین برنامه ام رو با پایتون نوشتم. برنامه ای که با اون میشد از طریق پروتوکل smtp و استفاده از سرویس gmail ، ایمیل فرستاد. متن ایمیل ها می تونست از یک فایل .txt گرفته بشه یا اینکه به عنوان پیش نویس توی یه فایل txt سیو بشه. همچنین قابلیت فرستادن ایمیل همزمان به چند نفر رو هم داشت. کلی به ساخت این برنامه به دست خودم افتخار می کردم. الان تقریبا 1 سال و نیم از زمان ساخت برنامه میگذره ولی من هنوز source code برنامه رو دارم. بعضی وقت ها بهش نگاه می کنم و به خودم میگم "این کد های به درد نخور ابتدایی رو واقعا من نوشتم؟". راستش الان که به اون کد های قدیمی نگاه می کنم، اشتباهات زیادی رو داخلشون می بینم. مثلا اسم متغیر ها به این شکل هست: aa, ab, ac, ad, ... , az , ba اصلا هم مشخص نیست چی به چیه. هیچ کامنتی هم برای توضیحات توش وجود نداره و کلی اشکال دیگه

دلم نمی خواست به رابط گرافیکی های ابتدایی که با tkinter می ساختم اکتفا کنم. بعضی اوقات وب سایت ها رو باز می کردم و از شکل عجیب و غریب دکمه ها، پاراگراف ها باکس ها و ... متعجب می شدم. با خودم می گفتم خدایا این ها رو چطوری می سازن. این کنجکاوی من رو به تکنولوژی های وب کشوند. کم کم html رو یاد گرفتم و بعدش هم css چند تا وب سایت به اصطلاح static هم ساختم. بعد مدتی دلم می خواست مثلا یه وبلاگ بسازم که بتونم بهش محتوا اضافه کنم. حالا دیگه دلم می خواست وب سایت هایی که دارم dynamic باشند. اون موقع ها نمی دونستم از پایتون هم میشه به عنوان backend وب سایت استفاده کرد (وگرنه وقتم رو برای php حروم نمی کردم. واقعا حیف اون همه وقت) برای همین هم رفتم سراغ php. هر وب سایتی برای ذخیره محتوا به یه پایگاه داده نیاز داره. وب سایت هایی که از php استفاده می کنند معمولا از mysql به عنوان پایگاه داده استفاده می کنن. من هم رفتم سراغ mysql و شروع کردم به یادگیری. بعد هم یه وبلاگ خیلی ساده با استفاده از php و mysql درست کردم.

من کلا آدمی هستم که از چالش خوشش میاد. با ساختن اون وبلاگ، اعتماد به نفس پیدا کرده بودم. با خودم گفتم حالا وقتشه که شانسم رو با java یه محکی بزنم. شاید الان بتونم برنامه های java رو بنویسم. و موفق هم شدم. بعد از اون کل تابستون رو جاوا کار کردم.

من اصلا روی یک چیز متمرکز نمی شدم و هی از این شاخه به اون شاخه می پریدم. بعد از اینکه فهمیدم از python هم میشه برای backend استفاده کرد به کلی برق از سرم پرید. اوایل با flask شروع کردم اما بعدا رفتم سراغ django چون امکانات خیلی زیادی داشت. دقیقا اینجا بود که به خودم گفتم چرا php رو یادگرفتم در حالی که می تونستم یه راست برم سراغ django

کم کم برنامه های وبی که می نوشتم پیچیده تر شد. تعداد دکمه های روی صفحه بیشتر شد و کمی مدیریت کد های javascript سخت بود. جای خالی یک framework جاوا اسکریپت خیلی احساس می شد. اول با angular کار کردم بعد رفتم سراغ react و بعد هم Vue. اما در نهایت svelte رو انتخاب کردم. همین الان بگم که این ها فقط نظر منه و من قصد بد جلوه دادن هیچ فریمورکی رو ندارم اما svlete بهترین فریمورکی بود که تا به حال دیده بودم. کد نویسی با svelte خیلی آسون بود و به کاربر قابلیت های زیادی میداد. اگه با فریمورک های دیگه ای کار میکنید، من بهتون شدیدا پیشنهاد می کنم که svelte رو یه امتحانی بکنید. اشتباه نکنید منظورم این نیست که توی پروژه هاتون استفاده کنید، من فقط منظورم اینه که svelte به یه بار امتحان می ارزه.

به هر حال من الان هنوز در حال یادگیری svlete و django هستم.


خیلی ممنون که وقتتون رو برای مطالعه این پست گذاشتید. منتظر نظرات شما عزیزان در قسمت کامنت ها هستم. با تشکر