چگونه اولین کار توسعه‌ی خود را بدون نوشتن یک فرم درخواست کاری با موفقیت به دست آورم؟ - بخش دوم

ترجمه و تالیف : پوریا رزمجویی
تاریخ انتشار : 15 تیر 99
خواندن در 6 دقیقه
دسته بندی ها : برنامه نویسی

در ادامه‌ی مقاله‌ی قبلی که روایتی از داستان زندگی من قبل از یادگیری برنامه نویسی بود خواهیم نوشت.

شور و اشتیاق جدیدی متولد شد

در اول آوریل ۲۰۱۹، با خودم عهد بستم که در طول روز دو ساعت کدنویسی کنم تا زمانی که به هدفم برسم. آن زمان در اینستاگرام فعال بودم و با حساب شخصی خودم در جستجوی سایر کدنویسان بودم. صادقانه بگویم که هیچوقت فکر نمی‌کردم که چنین انجمن بزرگی از برنامه‌نویس‌ها وجود داشته باشد.

امروز خیلی خوشحال هستم که آن‌ها را در اینستاگرام پیدا کردم. فکر می‌کردم که این یک شروع عالی خواهد بود. چند ساعت بعد حساب جدیدی در اینستاگرام ایجاد کردم تا مختص ماجراجویی‌های کدنویسی من باشد. من اولین پست خود را به منظور تعیین هدفم نوشتم و خودم را به طور مختصر معرفی کردم. در روزهای بعد چالش ۱۰۰ روز کدنویسی را شروع کردم.

با آن اشتیاق جدید تحریک شدم و به یادگیری HTML5 و CSS3 در Codecademy ادامه دادم تا اینکه هر دو دوره را تمام کردم و به طور کامل از مهارت‌های خود مطمئن شدم. 

من درباره‌ی FreeCodeCamp زیاد شنیده بودم، پس به وبسایت آن‌ها مراجعه کردم و دیدم که برای رشته‌های کاری مختلف گواهی‌نامه‌هایی ارائه می‌دهند. متوجه شدم که این می‌تواند راهی عالی برای به دست آوردن تجربه عملی باشد و می‌توانستم با این گواهی نامه به خودم پاداش بدهم.

حوالی مه ۲۰۱۹ بود که رشته‌ی طراحی وب پاسخگو را انتخاب کردم، کلیه‌ی پروژه‌ها را تکمیل و در نهایت گواهی نامه را دریافت کردم که هنوز هم بر روی دیوار آویزان است.

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

پس از دو ماه تحقیق در مورد HTML و CSS (به همراه SCSS)، احساس کردم که می‌خواهم برای موضوعات بعدی برنامه‌ریزی کنم. این به این خاطر بود که من از زمانی که در حال یادگیری پایتون بودم می‌دانستم که می‌توانم با این همه فناوری روبرو شوم.

بنابراین مجبور شدم این بار اضافه را از روی موضوعات بالقوه‌ای که برای رسیدن به یک شغل توسعه دهنده‌ی فرانت-اند لازم بود بردارم. این قدرتِ داشتن هدف در ذهن است. شما می‌دانید که می‌خواهید به کجا بروید و به طور خودکار اقدامات خود را برای رسیدن به آن‌جا شکل می‌دهید.

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

البته، من برنامه‌ی کاری را به مرور زمان ویرایش کردم و بعضی از جزییات را تغییر دادم، اما طرح کلی را فراموش نکردم و این کار چیزی بود که مرا به ادامه دادن مجبور می‌کرد.

پس از ساخت چند سایت جعلی با HTML و SCSS بالاخره در ژوئیه ۲۰۱۹ شروع به یادگیری جاوااسکریپت کردم. صادقانه بگویم، HTML و CSS برای یادگیری بسیار بی دردسر هستند، مخصوصا وقتی که مبتدی هستید. از طرف دیگر یادگیری جاوااسکریپت زمان‌بر بود و باعث سردرد‌های زیادی برای من می‌شد.

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

یادگیری برنامه نویسی واقعی

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

من از تمام کلاس‌های Jonas Schmedtmann در Udemy لذت بردم و با کمک دوره‌ی جاوااسکریپت او یک بنیان مستحکم ساختم.

اولین پروژه‌ای که خودم ساختم "Rock Paper Scissors" بود که ساخت آن حدود یک هفته زمان برد. این کار سختی بود اما من می‌توانستم یادگیری‌های مربوط به آن دوره را مانند DOM Manipulation و تعامل با ورودی‌های کاربر تقویت کنم. پس از اتمام آن، با مباحث بعدی ادامه دادم، سپس مدتی دست از کار کردن کشیدم و پروژه‌های خودم را با دانش تازه ساختم.

در یک دوره‌ی آموزشی شرکت کردم، چیزهای جدیدی یاد گرفتم، برای مدتی کار نکردم تا پروژه‌ی خودم را بر اساس مهارت‌های ﺁموخته شده بسازم. مشخص شد که این کار برای من موثرترین روش برای یادگیری واقعی کدنویسی است.

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

سخت‌ترین پروژه‌ای که تا به امروز انجام داده‌ام ساخت سایت تجارت الکترونیکی با آن فیلترها بود. ساخت این سایت سه هفته به طول انجامید. اما یک‌بار که از این موانع عبور کردم و هر آنچه که داشتم را برای حل این مشکل انجام دادم، احساس بزرگی را تجربه کردم که باعث می‌شد ساعت‌ها به این کار ادامه بدهم. به همین دلیل بود که به صورت شبانه روزی ﺁن‌جا نشسته بودم و مثل دیوانه‌ها تایپ می‌کردم.

بعد از سه ماه که به صورت تمام وقت درگیر وانیلا جاوااسکریپ بودم با یک مدیر ارشد فنی از یک سازمان تجارت الکترونیکی آشنا شدم. کجا؟ درست است، در اینستاگرام. مدتی او را دنبال کردم چون واقعا تحت تاثیر اخلاق کاری او قرار گرفته بودم. او از من پرسید که آیا دوست دارم دوره‌ی کارآموزی را در این شرکت انجام دهم یا خیر؟! به نفس نفس افتادم و احساس ترس کردم. من می‌دانستم که این کار راه نهایی برای گسترش چشم‌گیر حاشیه‌ی آسایشم خواهد بود، پس در پذیرش پیشنهادش تردید نکردم.

اولین گام من به‌عنوان یک توسعه دهنده‌ی وب در دنیای واقعی

بعد از ۶ ماه یادگیری توسعه‌ی وب، هرگز به انجام چنین کاری فکر نکرده بودم. معمولا من به اتفاقات کاملا تصادفی اعتقاد ندارم. امروز فکر می‌کنم اقداماتم از حضور در اینستاگرام و تمرکز بر اعمالم در قبال هدفم باعث شد که این اتفاقات به صورت همزمان رخ دهد.

ما یک دوره‌ی آموزشی دو هفته‌ای در اکتبر ۲۰۱۹ برگزار کردیم. محل سازمان تا محل زندگی من دو ساعت فاصله داشت و پیش خودم فکر کردم که بهتر است یک هواپیمای مسافربری در آن‌جا رزرو کنم. من هنوز به‌عنوان یه تکنسین برق کار می‌کردم و برای اینکه بتوانم یک هفته مرخصی بگیرم ساعات زیادی را اضافه کاری می‌کردم و یک هفته هم بخاطر تعطیلات مرخصی گرفتم و باعث شد تا اساس آن کارآموزی پایه‌گذاری شود. با اینکه این کار باعث شد از آپارتمان راحت و دوستانم دل بکنم، اما می‌دانستم تحمل این چیزها برای پیشرفت من به‌عنوان یک توسعه دهنده و یک انسان مهم خواهد بود. پس عزمم را جزم کردم و به راهم ادامه دادم.

قبل از ورود به این سازمان، آخرین باری که احساس نگرانی کردم را به خاطر نمی‌آورم. از گذشته می‌دانستم شرایطی که باعث اظطراب و عصبی شدن من می‌شود، آن چیزی است که برایم اهمیت بیشتری دارد.

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

در این دو هفته چیزهای زیادی یاد گرفتم. پس از دوره‌ی کارﺁموزی، به نوشتن و خواندن کدهای پیچیده‌تر عادت کردم و روزانه ده ساعت کار می‌کردم تا توسعه دهنده شوم. ابزارهای توسعه دهنده‌ی کروم به ماهیت دوم تبدیل شد و من چیزی را که توانستم در طول دو هفته یاد بگیرم را دیدم.

حتی تا همین امروز هم بخاطر آن فرصت و برای همه‌ی افرادی که در آن‌جا ملاقات کردم بسیار سپاس‌گزارم!

نزدیک‌تر شدن به هدفم

دوره‌ی کارآموزی تاثیر بسیار خوبی داشت و من تشخیص دادم که کار کردن به‌عنوان یک توسعه دهنده‌ی تمام وقت برای من کار درستی است. پس با برنامه‌ی درسی خودم شروع به پیشرفت کردم و می‌خواستم در ژانویه سال ۲۰۲۰ کارآموزی دیگری را در یک شرکت متفاوت انجام دهم.

در نوامبر ۲۰۱۹ شروع به یادگیری مطالب پیشرفته‌تری در جاوااسکریپت مانند Closures، AJAX، ویژگی‌های ES6، عملکرهای IIFE، Higher Order Functions و موارد دیگر کردم. همچنین jQuery، basic webpack، git و npm را یاد گرفتم.

من تصمیم گرفتم که پروژه بعدی‌ام باید شامل API باشد، زیرا دوست داشتم با قسمت بک-اند ارتباط برقرار کنم. کل نوامبر را صرف برنامه ریزی، طراحی و کدنویسی آن کردم.

نکته‌ای جداگانه:

ورود به طراحی UX یا UI هم بخشی از برنامه‌ی کاری من بود،‌ اما تمرکز اصلی خودم را بر روی برنامه نویسی گذاشته بودم. بنابراین من یادگیری آن را به آرامی در Adobe XD شروع کردم.

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

برای پایان دادن به سال ۲۰۱۹؛ به صورت عالی و جذاب، بوت استرپ را یاد گرفتم، چند الگو را شبیه‌سازی کردم و مشغول تعیین پنج هدف برتر برای سال ۲۰۲۰ بودم. همچنین از تعطیلات کریسمس استفاده کردم تا برای مدتی از کدنویسی فاصله بگیرم و می‌خواستم سال ۲۰۲۰ را با قدرت شروع کنم.

همچنین برای کارآموزی برنامه‌ریزی شده در ژانویه یا فوریه با حدود ۳۰ شرکت در منطقه‌ی محلی خودم تماس گرفتم. چند جلسه با آن‌ها برگزار کردم ولی هیچکدام از آن‌ها نتیجه‌ای نداشت.

مبحث بعدی که می‌خواستم یاد بگیرم فریمورک جاوااسکریپت بود. من با سایر توسعه دهندگان گفتگوی زیادی داشتم و بسیاری از آن‌ها گفتند که Vue بسیار عالی است. پس به منظور ساختن برنامه‌های وب بهتر و تبدیل شدن به یک توسعه دهنده‌ی ماهر، شروع به یادگیری Vue.js کردم. برای مقایسه Vue با فریمورک‌های دیگر، من چند آموزش مقدماتی در مورد React انجام دادم و اعتراف می‌کنم که از این فریمورک بیشتر خوشم آمد. کمی از Vue پیچیده‌تر بود ولی بلافاصله عاشقش شدم و مثل اغلب اوقات احساس سردرگمی کردم.

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

نکته‌ی جالب در مورد برنامه نویسی این است که هیچوقت پایانی وجود ندارد که بتوانید بگویید: "بسیار خوب، من همه چیز را یاد گرفتم..." همیشه چیزهای بیشتری برای یادگیری وجود دارد، حتی با زبان‌ها یا فریمورک‌هایی که در ۲۰ سال گذشته با ﺁن‌ها کار کرده‌اید.

می‌دانستم که نمی‌توانم استاد React شوم ولی باعث می‌شد به هدف خودم نزدیک‌تر شوم.

ساختن با React

من یک دوره‌ی خوب React را در Udemy جستجو کردم و با Andrew Mead آشنا شدم. تا به حال اسم او را نشنیده بودم اما رتبه این دوره بسیار خوب بود. پس یادگیری React را در مقیاسی بزرگ‌تر شروع کردم.

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

اما فقط کدنویسی همراه با دوره و انجام چالش‌های کد نویسی کافی نبود. هر چه بیشتر در React پیشرفت کردم، بیشتر عاشقش شدم. من همچنین از فراگیری نحوه‌ی آزمایش با Jest و Enzyme و پیاده‌سازی پایگاه اطلاعاتی مانند Firebase که برنامه‌های مرا پیچیده‌تر و پویاتر می‌کرد، لذت بردم.

تجربه‌ام به من آموخت که سختی کشیدن نشانه‌ای برای یادگیری بسیاری از چیزهای جدید و تبدیل شدن به یک توسعه دهنده‌ی ماهرتر است. پس هیچ راه دیگه‌ای برای یادگیری وجود نداشت.

منبع

گردآوری و تالیف پوریا رزمجویی
آفلاین
user-avatar

پوریا رزمجویی هستم، دارای مدرک لیسانس معماری

دیدگاه‌ها و پرسش‌ها

برای ارسال نظر لازم است ابتدا وارد سایت شوید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید