داستانِ یه آشنایی ;)

می خوام براتون از روند یادگیری و علاقه مند شدنم به برنامه نویسی و همچنین ابزار ها و تکنولوژی هایی که توی این مسیر بهشون برخوردم بگم. اما باید تأکید کنم به شخصه در دنیای برنامه نویس هیچی نیستم و اصلا ادعایی ندارم. این نوشته رو فقط به این خاطر منتشر می کنم که اگر کسی مثل من می خواد شروع به کد نویسی کنه و هنوز دو سه قدم اول رو برنداشته، بعد از خوندن این نوشته ، دید تازه ای از مسیرِ روبروش داشته باشه.

قبل از دانشگاه با شور و شوقی که کد نویس های تازه کار دارن و می خوان "همه رو هک کنن" و "تانک پرنده" برنامه نویسی کنن؛ با #c آشنا شدم. کلاس کوتاهی رفتم و با مقدمات و مبانی برنامه نویسی و مفاهیم بسیار ساده ای از طراحی الگوریتم آشنا شدم. این کلاس سه ماهه باعث شد من متوجه بشم کد نویسی اونقدر هم ساده نیست و قرار نیست بتونم حالا حالا ها کسیو هک کنم و تانک هارو پرواز بدم:) (البته ناامید نشدن هم عنصر مهمی بود که کمکم کرد)

همون موقع فهمیدم که همینه دیگه، این تویی.

بعد درگیر نظام بسیار شیریننن و دلچسببب آموزش و پرورش شدم. برای چند سال ، تو دبیرستان و اینا، وقت تلف کردم. کنکور رو هم چندان جدی نگرفتم. دانشگاه خفنی هم قبول نشدم.( سراسری، شهرستان، علوم کامپیوتر) اما می دونستم می خوام برنامه نویس بشم.
ترم یک دانشگاه،استادِ خوبِ مبانی برنامه سازیمون ، واقعا تفکر الگوریتمیک من رو شکل داد. شیخ ،دانشجوی دکترای رشته خودمون بود. چقدر خدا خیرش بده:) با کوئرا آشنامون کرد و اونجا برامون تکلیف هارو قرار می داد.
دوستان و همکلاسی های دور و برم ، بیشتر از من تجربه داشتن توی برنامه نویسی و قرار گرفتن توی اون محیط بود که بیشتر و بیشتر روی من تاثیر می گذاشت. ( ممکنه محیط روی شما بی اثر باشه، همونطوری که هنوز بعد از تقریبا نصف شدن لیسانسمون، بعضی دوستان درگیر اینکه "وای چیکار کنم ادوبی کانکتم وصل نمیشه" و ... هستند.)


مرحله ی "می چین ریشتیمون کیمپیوتیره، خیدیی بیرنیمه نیویسی هیستیم..." :

ما
ما


خیال پردازی نسبت به آینده، گوگل کردن حقوق برنامه نویس ها تو شهر فرنگ، جو نسبتاً رقابتی کوئرا و فاکتور های دیگه بود که من رو خیلی بیشتر از قبل به سمت کد نویسی کشوند. شروع کردم به دوره گذروندن و یاد گرفتن زبان سی که برای مبانی برنامه سازیمون لازم داشتیم. مطالب خیلیییی زیادی رو یادمه که گوگل می کردم و از همون جا ها به قدرت گوگل کردن پی بردم. چون واقعا هیچ مسئله نبود که گوگلش کنیم و توی نهایتاً چهارمین لینک جوابمون رو نده. یادمه ساعت های زیادی کف اتاق تو خوابگاه می نشستیم با کلی چرکنویس و مداد و لپتاپ و ... ، سوال های سخت شیخ رو حل می کردیم. رقابتمون با اتاق های دیگه جوری شده بود که " هرکی زودتر سابمیت کنه و 100 رو سبز کنه ، شاخ تره..."


گذشت اون دورانِ خیلی پر شورِ الگوریتم زدن و آکادمیک فکر کردن. کم کم( همونجور که 95 درصد بچه های کامپیوتری ، به همین سندروم دچار می شن) جذب توسعه تحت وب شدیم. جنگو و اس کیو ال و فرانت و بک و فلان و بسار و اره و اوره و شمسی کوره. در این حد که خودم به شخصه ، نقشه راهِ فول-استک شدن رو ، رنگی پرینت کرده بودم زده بودم دیوار اتاق :) انگار پوستره یه راک استاره. یادمه که پر بود از اسم فریم ورک های مختلف، زبان های جورواجور و... ( البته بچه های وب بهشون برنخوره، کارشون خفنه. اما Over-rated شده دیگه قبول کنیم :) )
این دورانِ "گیک پنداری" و "استارت آپ" زدن و ... نیز، گذشت. ( قضیه ی این عو عوی سگان شما نیز، بگذرد:) ) حالا دیگه وقتش بود یکم همه جدی تر پیگیر بشن ببین که چی می خوان از رشته اشون. علاقه اشون تو چه زمینه اییه و ... (ولی واقعا یکم هم خیال پردازی و جهالتِ اولیه لازمه که شما بتونید با اون ، گوشه گوشه ی تکنولوژی رو ناخنک بزنید و یکمی مزه اش رو بچشید)


مرحله ی "ما هیچی نیستیم....":

بازم ما
بازم ما


اونجا بود که من با دیتا و بیگ دیتا آشنا شدم. کتاب "همه دروغ می گویند" اثر " سِت استیونز" و برگردانِ " ریحانه عبدی" رو هم خیلی به موقع خوندم و هم چنین خوندن چند مقاله دیگه و مطالب مربوط به ابرداده، باعث شد خیلی جذب عظمت و قدرت این تکنولوژی بشم. کمی از وقتم رو روزانه می ذاشتم که ببینم این زمینه از تکنولوژی چه حرفی برای گفتن داره. چند وقت سرچ می زدم درباره اش و رجوع می کردم به بخش های مختلف کتابی که گفتم و اعتراف می کنم که شدید جذب داده و پردازش داده شده بودم. ولی متوجه شدم هنوز خیلی زوده برام که بخوام برم سمت یادگرفتن الگوریتم هاش و ریاضیاتش. پس شروع کردم ببینم چیارو می تونم یاد بگیرم.


پایتون

بعد از اینکه کمی تا مقداری C یاد گرفتم. جاوا رو هم مجبور شدم برای ترم دومم امتحان کنم که چندان کششی به ساختار و دستور زبانش نداشتم. کاربردش هم به دردم نمی خورد. آدمه "حاجی بیا یه اپلیکیشن بزنیم بال در بیاره و ..." نبودم. اما می دونستم باید بالاخره یه زبان سطح بالاتر یاد بگیرم. چند بار دیده بودم که ترم بالایی هامون انواع پروژه ها رو با پایتون پیاده سازی می کنن. از دفترچه تلفن و ماشین حساب گرفته تا وب-اپلیکیشن و الگوریتم های خفن هوش مصنوعی و ...
بیشتر که راجبش سرچ زدم دیدم بلهههه. دستور زبان عالی، زبان مفسری بدون دردسر، کلی پکیج های مختلف.کامیونیتی های فعال و هزار تا ویژگی خوب دیگه. گفتم همینه دیگه، باید یاد بگیرمش. اولش توی این اپ های اندرویدی برای یادگرفتنش دست و پا میزدم. Solo Learn و Learn It و ...
بعد از اینکه یکم بیشتر با دستور زبانش آشنا شدم، شروع کردم کد زدن توی پایتون-شِل. خیلی برام هیجان انگیز بود چون اولین زبانی بود که { } نداشت(اولینی من یاد می گرفتم) و کدنویسی باهاش خیلی راحت تر و روون تر بود.( برای اینکه بیشتر باهرچیزی آشنا بشم ، همیشه به سایت رسمی اون تکنولوژی/گجت/... سر می زنم. ) به داکیومنت های خود پایتون سر زدم و با PEP ( Python Enhancement Proposal ) آشنا شدم. PEP 8 رو خوندم که درباره قواعد Clean Code چیزای باحالی توش داره و کلا فسلفه اش اینه که جوری با پایتون بنویسید، که بقیه هم بتونن کد شمارو بخونن و درک کنن که توی ذهن شما چی می گذشته.
کم کم افتادم توی خط اینکه چند وقت یبار همون تمرین های کوئرا رو با پایتون سابمیت کنم. بعد از اون ، تو یوتوب از این آموزش های کوتاه برای پروژه های کوچیک می دیدم و توی تایم های خلوتم، پروژه های کوچیک می زدم و تمرین می کردم. با پروژه هایی مثل بازی های کوچیک، ماشین حساب چهار عمل اصلی، اپلیکیشن آب و هوا و ... . ذهنم رو بیشتر باز کردم توی پایتون و سعی کردم دستور زبانش رو بیشتر یاد بگیرم. درس ساختمان داده ای که پاس کردیم، زبان پایتون هم قبول می کردن به عنوان زبانی که باهاش الگوریتم ها رو پیاده کنیم. همون شد که من کلی سرچ زدم و الگورتیم های پیچیده تر و ساختمان داده های گسترده تر رو تونستم با پایتون کد نویسی کنم.
بعد از اون ( و تا به الان (و از الان به بعد ) ) سعی می کنم تو کامیونیتی های فارسی و گروه های تلگرامی، تا اونجایی که در توانم باشه، به پروژه های دانشگاهی و تمرین های کوچیک و مشکلات نصب و اجرا کردن پایتونِ بقیه و ... کمک کنم. ( خیلی پیشنهاد می کنم به عنوان کسی که تازه شروع به کد نویسی کردید و دوست دارید که ذهنتون راجب کد باز تر بشه. مشکلات بقیه رو سعی کنید رفع کنید، کد های افراد مختلف رو بخونید. دیدن کد های زیاد و پروژه های دیگه، باعث می شه دید شما نسبت به کد نویسی و خود زبان پایتون باز تر بشه. تفکر الگوریتمیک شمارو تقویت میکنه و در نهایت تجربه اتون توی کدنویسی بالا میره) هنوز هم پایتون می خونم، همچنان چیزای جدید یاد می گیرم. پکیج های مختلف رو امتحان می کنم. برنامه های تحت وب می نویسم و ...


یه عنوان برای این عکس (اختیاری)
یه عنوان برای این عکس (اختیاری)


الان در جایگاهی از تسلط هستم که می تونم با پکیج های مختلف پایتون ور برم و برنامه های جالب و باحال به عنوان تمرین بنویسم. البته باید بگم ، برنامه نویس شدن فقط مبتنی بر یادگرفتن یه زبان برنامه نویسی نیست. من در کنار پایتون با تکنولوژی ها و سیستم عامل های دیگه هم سر و کله می زنم . اما اینکه شما از چه ابزارهایی در راه توسعه و کد نویسی استفاده می کنید، کمتر حائز اهمیت است؛ چیزی که به شما خیلی کمک میکنه بهتر بتونید راه خودتون رو به عنوان یه برنامه نویس بشناسید، خوندن و در جریان بودن اتفاقات مهمِ دنیای تکنولوژیه. همچنین مطالعه و یادگیری تکنولوژی های مناسب شغل و علاقه اتون و خوندن علمی که پشت این تکنولوژی ها هست.( مثلا بلد بودن فیزیک و جبرخطی در توسعه بازی های کامپیوتری، بسیار مهمه)

در نهایت به چند مورد اشاره کنم که توی روند پیشرفتم خیلی کمکم کرد و قطعا به شما هم کمک می کنه:
- برنامه ریزی( چه کوتاه مدت چه بلند مدت)
-تعهد به برنامه شخصی خودتون
-واقع بین بودن
-واقع بین بودن
-صبور بودن

امیداورم خوندن این حتی به یک نفر کمک کرده باشه تا مسیر جلوی پاش رو روشن تر ببینه:)

ارادت.