برو به محتوای اصلی
علیرضا رضوی
توسعه‌دهنده وب و موبایل
سال گذشته پرسیده شده

به‌عنوان یک برنامه‌نویس معمولی (با تجربه کار لاراول و ویوجی‌اس)، در چه مسیری گام بردارم، یا چه کتابی را مطالعه، یا چه چیز/زبان جدیدی را یاد بگیرم تا دانشم را افزایش دهم و در کارم حرفه‌ای شوم؟

من کجام؟ اینجا کجاست؟

در جوابکو می‌تونید در مورد هر موضوعی سوال کنید، به سوالای بقیه جواب بدید و تجربتون رو به اشتراک بگذارید!

سیاوش محمودیان
بنیانگذار جواب‌کو

پروژه شخصی انجام بده.

ساده‌ترین راه برای بهتر شدن در برنامه‌نویسی انجام پروژه هست. یک موضوع جذاب رو که به نظرت مشکلی رو برای خودت یا دوستانت حل می‌کنه یا اینکه انجامش برات خیلی جذاب هست رو انتخاب کن و انجامش بده.

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

برای انتخاب تکنولوژی‌هایی که به عنوان یه برنامه‌نویس باید دنبالش بری، کافیه یک سر به فرصت‌های شغلی بزنی و ببینی چه تکنولوژی‌هایی درخواست بیشتری براشون هست. یه منبع خوب دیگه هم مراجعه به بخش داغ StackShare۷۵ هست. توی این صفحه نشون می‌ده در زمان حاضر کدوم تکنولوژی‌ها در شرکت‌ها داغ‌تر هستند و سرعت رشد خوبی دارن.

من خودم وقتی جواب‌کو رو شروع کردم یه چک کردم دیدم تقاضا برای React.js خیلی زیاد شده و خیلی وقت هم بود دوست داشتم یاد بگیرمش. برای همین با اینکه هیچ تجربه‌ای از React.js نداشتم جواب‌کو رو با این چارچوب بالا آوردم. به مشکلات خیلی زیادی خوردم و دفعه‌های مختلف کد رو Refactor کردم ولی به جاش توی زمان خیلی کم به یه دانش خوب در ارتباط با این چارچوب رسیدم.

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

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

یادگیری Node js و React js و MongoDb رو بهتون پیشنهاد می‌کنم. کلاْ خبره شدن توی MERN Stack خیلی در آینده بکار شما خواهد اومد.

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

از اونجایی که وب (سرویس‌های آنلاین) داره به صورت یک پیش‌فرض توی سرویس‌ها تبدیل میشه شما باید به سمت برنامه‌نویسی برای زیرساخت‌های دیگه برید و خب Node js قراره اون پلتفرم واسط باشه. از وب گرفته تا برنامه‌نویسی برای درون (Drone)!

React js هم که با دیگر پکیج‌های هم‌خانوادش تونسته برنامه‌نویسی سمت موبایل (React Native) و دسکتاپ (Electron) رو تسهیل کنه و قطعاْ اینکارش بی رقیبه.

MongoDb هم برای تکنولوژی امروز نوشته شده. و شاید بدون در نظر گرفتن ویژگی اصلیش که نداشتن ساختار هست بشه اون رو از خیلی جهات دیگه برتر از SQL امروزی دونست٬ اضافه کردن Transaction توی نسخه جدیدش که قطعاْ باعث میشه که هیچ کمبودی در مقایسه با SQL نداشته باشه.

برای یادگیری این مباحث من دوره‌های سایت roocket.ir۴۴ رو پیشنهاد می‌کنم که برای شروع آروم خوب هستن و در ادامه شمایید medium.com۷۴

این رو هم اضافه کنم که سوییچ کردن از php به این استک بسیار سخت و سردرگم‌کننده هست (حداقل واسه من اینجوری بود). چون در مقایسه با لاراول شما نمی‌تونید یک فریم‌ورک منسجم توش پیدا کنید و هر روز یکی یه چیز جدید توش اختراع می‌کنه٬ خیلی از پکیج‌هاش هنوز بالغ نشدن و منطقش جوریه که انگار طراح‌های وب (طراح‌های گرافیکی منظرومه البته با احترام) نشستن Node js رو کد کردن٬ خیلی شاید بر روی منطق به نظر نرسه.

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

مهدی گران
مدیر فنی و اجرایی پروژه های نرم افزاری

توصیه من فراگیری ReactNative هست. فریم‌ورک‌های Native آینده‌ی برنامه‌نویسی وب و موبایل را رقم خواهند زند. 

اگر به دنبال شاخه‌ای جز این هستید، Data Science۹، بی‌شک برای سرمایه‌گذاری ارزشمنده. پیش‌بینی بنده این هست که رشد تقاضای نیروی کار در این حوزه تا دو سال آینده بسیار زیاد باشه.

محمد حسین عابدی
توسعه دهنده وب @بامیلو

پیشنهاد من برای کتاب‌هایی که واقعا می‌تونه تو حرفه‌ای‌تر شدن کمک کنه این کتاب‌ها است:

  1. کتاب Clean Code۵۸
  2. کتاب Laravel: From Apprentice To Artisan که خود سازنده لاراول نوشته و به شدت میتونه درک آدم از فریم‌ورک رو بالا ببره
  3. کتاب Refactoring To Collection۱۲۲ که در مورد Collection تو لاراول توضیح داده و خوندنش باعث می‌شه کدهای بسیار تمیزتری بنویسیم و در واقع آموزش imperative programming در لاراول هست

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

  1. این۵۷ پروژه توسط خود سازنده لاراول توسعه داده شده و هم ساده است هم بسیار میشه ازش چیز یاد گرفت
  2. تو این رشته از pull request۵۸ها جناب Adam Wathan توضیح می‌ده که چگونه کنترلر‌ها رو مدیریت کنیم که بزرگ نشن
  3. کلا پروژه‌هایی که توسط تیم Spatie۲۰۸ تولید میشه بسیار باکیفیت و کاربردی هستند و توصیه می‌کنم حتما بهشون نگاه کنی