احتمالا شما هم مانند بسیاری از افراد دیگر که به دنیای دیجیتال علاقهمند شدهاند، از خود پرسیده باشید که چگونه برنامهنویسی را شروع کنم؟ ممکن است سوالات دیگری هم در ذهنتان وجود داشته باشد:
- برنامهنویسی چیست؟
- چگونه یک برنامهنویس حرفهای شویم؟
- بهترین راه برای برنامهنویس شدن
- برای برنامهنویس شدن چه رشتهای باید خواند؟
- چگونه برنامهنویسی اندروید را شروع کنیم؟
- چگونه برنامهنویس بکاند یا فرانتاند شویم؟
- برای برنامهنویس شدن چقدر زمان لازم است؟
- بهترین زبان برنامهنویسی چیست؟ (جاوا، جاوا اسکریپت، سی پلاس پلاس، سوئیفت، کاتلین، گو، راست، پایتون، پی اچ پی، سی شارپ، Asp و...)
اگر به دنبال پاسخ به سوالات بالا هستید، پیشنهاد میکنم این مقاله را بخوانید تا کمی مسائل برایتان روشن شود.
فهرست مطالب
چرا باید برنامهنویس شوم؟
به نظر من مهمترین معیار و سنجش برای شروع، علاقه قبلی به این کار است. پس ابتدا باید از خود بپرسید که آیا به
برنامهنویسی علاقه دارم؟ اگر واقعا علاقه دارید، باید تبریک گفت زیرا شما اولین و مهمترین معیار را با خود
دارید. سپس باید برای خود یک هدف درست مشخص کنید. از خود بپرسید که چه میخواهید؟ آیا برنامهنویسی
شما را به هدفتان خواهد رساند؟ برای روشن شدن موضوع، بهتر است نقاط مثبت و منفی این شغل را با هم بررسی کنیم:
نقاط مثبت
- حقوق مناسب: امروزه یکی از مناسبترین شغلهای موجود در بازار ایران و جهان از لحاظ اقتصادی برنامهنویسی است
- دریافت حقوق با نرخ دلاری: این مورد برای ایرانیان بسیار جذاب است. با قیمت دلار امروز و وضعیت تحریم که باعث میشود بسیاری از افراد قابلیت صادرات نداشته باشند، با حرفهای شدن در این شغل میتوانید بسیار راحتتر از سایر افراد به درآمد دلاری برسید
- امکان دورکاری: اگر از آن دسته از افرادی هستید که به دنبال یک شغل دورکاری و یا به دنبال شغل دومی برای کار در خانه هستید، یکی از بهترین گزینهها یادگیری برنامهنویسی و گرفتن پروژههای فریلنسری و انجام آن از خانه است
- تقاضای بالا در بازار: معمولا کسانی که برنامهنویس حرفهای باشند، چیزی به نام نبودن کار یا بیکاری برایشان مطرح نیست. زیرا بسیاری از شرکتها به دنبال نیروی متخصص در زمینههای وسیع برنامهنویسی هستند و همچنین بسیاری از افراد هم به صورت شخصی تقاضای پروژههای گوناگون را دارند. بنابراین اگر برنامهنویس شوید، خیالتان از آینده شغلی و داشتن یک کار مناسب راحت خواهد بود
نقاط منفی
- تغییرات سریع در تکنولوژیها: یکی از مسائلی که برنامهنویسان با آن ممکن است با آن مشکل داشته باشند، نیاز به آپدیت روزانه دانش و مهارت خود است. انتخاب این شغل به این معناست که همیشه باید مطالعه کنید و دانش خود را بهروز کنید. شاید دانش امسال شما نسبت به سال آینده، زمین تا آسمان تغییرات داشته باشد. بنابراین باید اهل مطالعه باشید و از آن دست نکشید
- استرس و فشارهای روحی: گاهی اوقات ممکن است یک اشتباه کوچک رخ دهد ولی چندین روز شما را گرفتار کند. یا ممکن است کار را به اتمام رسانده باشید اما از عملکرد 100% آن اطمینان نداشته باشید. گاهی ممکن است پروژه را نتوانید در موعد مقرر انجام دهید و کار ناتمام شود. حتی ممکن است ساعتها برای یک پروژه وقت گذاشته باشید اما در دریافت خروجی نهایی به مشکل بخورید. همه و همه عوامل استرسزای این شغل است. بنابراین ممکن است یک روز با مشکلات فشار عصبی و استرسی دست و پنجه نرم کنید. پس باید قبل از شروع این کار حتما با این مسائل آشنا باشید تا از آنها پیشگیری کنید
- ساعات کاری طولانی و متفاوت: فرض کنید مدیریت سرور یک نرمافزار با مخطاطبین زیاد در دست شما باشد. شما نمیتوانید تغییرات را در وسط روز انجام دهید. مجبورید در زمانی که مخاطبان کمتری از اپلیکیشن استفاده میکنند، تغییرات را انجام دهید. بهترین زمان معمولا نیمه شب است. باید بدانید که ممکن است با توجه به نوع کار شما، در هر زمانی مجبور به انجام کار شوید و با آن مشکلی نداشته باشید. بسیاری از زمانها ممکن است ساعات طولانی از سیستم استفاده کنید و این کاملا عادی است
- کم تحرکی: برنامهنویسی یعنی کم تحرکی ولی استفاده زیاد از مغز! باید بدانید که پس از چندین ساعت کار، این مغز شما است که خسته شده و نه سایر اعضای بدن شما. پیشنهاد میشود برای عدم عادت به این شرایط کاری حتما هر روز ورزش کنید. زیرا ورزش هم مشکل کم تحرکی شما را حل خواهد کرد و هم از فضای استرسزای کاری شما را دور خواهد کرد
موارد گفته شده باید گوشهای از مزایا و معایب این شغل است. البته هر شغلی در دنیا مزایا و معایب خودش را دارد و
برنامهنویس شدن هم از این قاعده مستثنا نیست. حال تصمیم بگیرید که آیا مزایای آن شما را راضی میکند و آیا میتوانید
با معایب آن کنار بیایید؟ اگر پاسختان بله است، پس ادامه مطلب را بخوانید.
برای یادگیری برنامهنویسی از کجا شروع کنم؟
قدم بعدی که احتمالا با آن روبرو هستید، این است که در چه زمینهای علاقه به فعالیت دارید. دنیای برنامهنویسی دنیای بسیار گستردهای است و شما باید در این دنیای گسترده انتخاب کنید که در کدام قسمت متخصص شوید.
برای شروع راه کدنویسی باید یکی از پتلفرمهای زیر را انتخاب کنید:
- برنامهنویسی موبایل
- برنامهنویسی وب
- برنامهنویسی دسکتاپ
دقت کنید که انتخاب یکی از زمینههای بالا به معنای اینکه همه چیز در این سه حوزه ختم میشود نیست. در ادامه راه ممکن است انتخاب کنید که بسیار سطح بالاتر کد بزنید. شاید انتخاب کنید که برنامهنویس سختافزار شوید و یا اپلیکیشنهایی برای واچ یا تلویزیون هوشمند بسازید. این کاملا به ادامه راه شما بستگی دارد. در ابتدا با دانش کنونی شما باید یکی از آیتمهای بالا را که بیشتر علاقه دارید در آن فعالیت کنید را انتخاب کنید.
1. برنامهنویسی موبایل (توسعه دهنده اپلیکیشنهای موبایل)
همانطور که میدانید، امروزه با فراگیر شدن گوشیهای هوشمند در دنیا، اپلیکیشنهای موبایل طرفداران زیادی پیدا کردهناد. همین باعث شده که بازار کار توسعه اپلیکیشنهای هوشمند بشدت پر و پا قرص باشد. هم اکنون در دنیا دو سیستم عامل اندروید و آی او اس (IOS) تقریبا کل بازار دنیا را به خود اختصاص دادهاند و رقیبی هم ندارند. بنابراین انتخاب یک سیستم عامل برای شروع برنامهنویسی میتواند گزینه درستی باشد. البته یادگیری برنامهنویسی اندروید یا آی او اس به این معناست که میتوانید برای واچها و تلوزیونهای هوشمند این سیستمعاملها هم اپلیکیشن طراحی کنید. بنابراین گزینههای شما فقط دستگاههای موبایل نیست.
- اگر علاقهمند به توسعه اپلیکیشن موبایل برای سیستم عامل اندروید هستید، پیشنهاد ما یادگیری برنامهنویسی به زبان کاتلین است. سپس باید اولین اپلیکیشن خود را در نرمافزار اندروید استودیو بسازید.
- اگر علاقهمند به توسعه اپلیکیشن موبایل برای سیستم عامل IOS هستید، پیشنهاد ما یادگیری زبان سوئیفت ( Swift ) و کار با نرمافزار xCode است. دقت کنید که برای استفاده از xCode باید مک بوک داشته باشید و یا در غیر اینصورت میتوانید از نسخه هکینتاش بر روی سیستم خود استفاده کنید.
در سالهای اخیر توسعه اپلیکیشنهایی چند پلتفرمی موبایل (Mobile Cross-Platform Programming) بسیار داغ است و به سرعت رشد کرده است. یعنی شما اپلیکیشن را برای اندروید و آی او اس به صورت همزمان توسعه بدهید و از هر دو خروجی را بگیرید.
محبوبترین تکنولوژیهای توسعه اپلیکیشنهای کراس پلتفرم:
- ریاکت نیتیو (React Native)
- فلاتر (Flutter)
- Kotlin Multiplatform Mobile (KMM)
البته یک مورد دیگر را نیز میتوان تا حدی به این گروه اضافه کرد و آن هم وب اپلیکیشنها هستند که میتوانند خروجی را به خوبی برای هر دو سیستمعامل نمایش دهند.
- برای یادگیری ریاکت نیتیو باید اصول پایه طراحی وب را فرا بگیرید (که شامل HTML، Javascript میباشد) و همچنین باید فریمورک Reactjs را هم بشناسید. React توسط کمپانی متا (فیسبوک) خلق شده است.
- برای یادگیری فلاتر باید زبان Dart را یاد بگیرید و سپس شروع به یادگیری فریمورک کنید. دارت توسط گوگل خلق شده است و هم اکنون بسیار پرطرفدار است.
- برای یادگیری KMM ابتدا باید زبان کاتلین را یاد بگیرید. KMM هم اکنون بسیار جوان است و در نسخه آلفا قرار دارد و تا رسیدن به نسخه پایدار زمان زیادی نیاز است اما باید بدانید که این پروژه توسط گوگل و Jetbrains مدیریت میشود و کاستیهای فلاتر و React Native را ندارد (به دلیل امکان کدنویسی 100% بومی). بنظر میآید KMM به سرعت جای خود را در بازار توسعه دهندگان مولتی پلتفرم موبایل پیدا کند. برای آشنایی بیشتر مقاله " KMM چیست؟ (توسعه اپلیکیشن اندروید و iOS با زبان کاتلین) " را بخوانید.
2. برنامهنویسی وب
یکی از جذاب ترین شاخههای برنامهنویسی، ساخت اپلیکیشنهای وب است. ساخت اپلیکیشنها و وبسایتهای مبتنی بر وب حقیقتا بسیار جذاب است. از همه مهمتر اینکه مشاغل این حوزه بسیار زیاد است و کسی که در این زمینه متخصص شده باشد، پیدا کردن یک کار مناسب برایش نباید سخت باشد.
اگر با برنامهنویسی وب آشنایی خیلی کمی داشته باشید، احتمالا نامهای فرانتاند (Frontend ) بکاند (Backend) یا دولوپر فول استک (Fullstack Web Developer) به گوشتان خورده باشد.
- برنامهنویس فرانتاند: شخصی که رابط کاربری و رابط تجربی (UI/UX) را پیاده میکند. به زبان سادهتر، وقتی یک سایت را باز میکنید، کل ظاهر و مسیرهایی که در آن سایت مشاهده میکنید را برنامهنویسان فرانتاند توسعه دادهاند. پس اگر به طراحی و ساخت ظاهری سایت علاقه دارید، حتما فرانتاند برای شما مناسب است.
- برنامهنویس بکاند: ظاهر یک سایت همه چیز نیست. فرض کنید شما سایتی را تایپ کردهاید و قصد دارید آن را باز کنید. سرور ابتدا درخواست شما را میگیرد و پس از تجزیه و تحلیلهای لازم پاسخ مناسب را به شما باز میگرداند. تمام این فرآیند دریافت درخواست تا ارسال پاسخ برای درخواست شما توسط یک برنامهنویس بکاند انجام گرفته است. بنابراین برای نمایش یا سایت ابتدا باید بکاند پاسخ را بازگرداند و حال وظیفه نمایش اطلاعات به صورت یک ظاهر شکیل به دست برنامهنویس فرانتاند است.
- توسعه دهنده فول استک: به شخصی که در هر دو زمینه فرانتاند و بکاند تخصص کامل را دارد، توسعه دهنده فول استک میگویند. یک نکته حائز اهمیت این است که برنامهنویسان فول استک بسیار تقاضای بیشتری دارند و یافتن شغل برایشان بسیار راحتتر است تا اینکه فقط در یکی از زمینههای فرانتاند یا بکاند تخصص داشته باشند.
3. برنامهنویسی دسکتاپ
اگر علاقه به ساخت اپلیکیشن برای اجرا بر روی لپ تاپ و کامپیوتر دارید، باید این شاخه را انتخاب کنید. بیشتر بازار دسکتاپها را سیستمعامل ویندوز به خود اختصاص داده است اما نباید از MacOs و لینوکس غافل ماند. هر کدام طرفداران و مشتریان خود را دارد. شاید هم اکنون برنامهنویسی دسکتاپ محبوبیتی همانند دو شاخه قبل را نداشته باشد اما باید بدانید که بسیاری از اپلیکیشنها به دلیل حجم و نوع کارایی باید برای دسکتاپ توسعه داده شوند. در دنیا در حال حاضر طیف گستردهای از اپلیکیشنها برای دسکتاپ توسعه داده میشوند. برای مثال ما برنامهنویسان تمام اتکایمان به IDE ها و کامپایلرهایی است که برای دسکتاپ ساخته شده است و یا طراحان گرافیکی دائما با اپلیکیشنهایی مانند فتوشاپ و ایلوستریتور سر و کار دارند.
به طور کلی سه روش زیر را برای طراحی اپلیکیشنهای دسکتاپ پیشنهاد میکنیم:
- جاوا اسکریپت: خوشبختانه به کمک جاوا اسکریپت ، HTML و CSS و در واقع به لطف فریمورک Electron میتوانید اپلیکیشن دسکتاپ بسازید
- جاوا: با استفاده از جاوا و به کمک کتابخانههای Swing میتوانید اپلیکیشنهای قدرتمندی برای دسکتاپ بسازید
- سی شارپ: زبان برنامهنویسی C# نیز در ساخت اپلیکیشنهای دسکتاپ بسیار محبوب است و میتوانید از آن برای ساخت اپلیکیشنهای ویندوزی، لینوکسی یا مک استفاده نمایید
- کاتلین: کاتلین یک زبان چند منظوره است که با آن میتوان برای توسعه همه نوع اپلیکیشنی استفاده کرد. کاتلین میتواند به شما امکان ساخت اپلیکیشنهای ویندوزی، لینوکسی و مک را بدهد
برای پیشرفت در برنامهنویسی صبور باشید
حال که انتخاب کردیم در چه مسیری قدم برداریم، باید با یافتن یک دوره آموزش مقدماتی برنامهنویسی مناسب و شروع یادگیری، قدم بعدی را برداریم. نکته بسیار مهم و حائز اهمیت این است که باید بدانید ممکن است در اوایل و ای بسا تا حتی دو الی سه ماه بسیاری از مسائل هنوز برایتان به درک روشنی نرسیده باشد. این کاملا طبیعی است و نگران نباشید. فقط شما نیستید که به این مشکل احتمالا برخوردهاید. بسیاری از افراد دیگر هم همین مشکل شما را داشتهاند اما آنهایی که صبور بودهاند و حوصله به خرج دادهاند، در نهایت موفق شدند و از سختیهای اولیه آن عبور کردهاند. پس از گذراندن این دوره ابتدایی اگر زمینه علاقه قبلی را داشتهاید، به شما اطمینان خواهم داد که عاشق برنامهنویسی خواهید شد.
نکاتی در ارتباط با پیشرفت در برنامهنویسی
- تمرین کردن را فراموش نکنید: مهارت کدنویسی با تمرین زیاد محقق خواهد شد. در واقع تا کد نزنید، برنامهنویس نمیشوید. دیدن دورهها و آموزشهای برنامهنویسی به خودی خود کمک کننده نیست. شما باید آموزههای خود را بتوانید خودتان انجام دهید. نباید با تغییر صورت مسئله، در نوشتن کد ناتوان شوید. باید اینها را تجربه کنید و تجربه فقط با دست به کد شدن بدست میآید. وقتی شروع به نوشتن کد کردید، با انواع چالشها و ایرادات روبرو خواهید شد. این خوب است و باید سعی کنید که مشکلات را خودتان برطرف کنید
- از دیگر برنامهنویسان کمک بگیرید: اگر در راه خود با مشکلاتی روبرو شدید که پاسخی برای آنها نداشتید، سعی کنید از برنامهنویسان با تجربهتر استفاده کنید. آنها مسیر شما را یکبار به جلو رفتهاند و بنابراین میتوانند به شما کمک بسیاری کنند
- هر روز مطالعه کنید: برنامهنویسی موفق است که هر روز دانش و مهارت خود را با مطالعه بیشتر کند. حتی آنهایی که سابقه بسیار طولانی دارند هم از قاعده مستثنا نیستد. همه باید مطالعه کنند و معلومات خود را بیشتر کنند. حال هر کس در سطح و لول خود
- حوصله داشته باشید: در هر سطحی که باشید، ایرادات همیشه هستند و باید با آنها کنار بیاید. برای اینکه بتوانید در این شغل موفق شوید، باید حوصله داشته باشید و راه را ادامه دهید. حتی اگر یک روز پروژه گرفتید، باید در انجام پروژه نیز حوصله به خرج دهید و از روبرو شدن با مشکلات عقب نکشید