سلام به همه شما علاقه مندان به برنامه نویسی، به کاملترین صفحهای که برای معرفی و بررسی برنامه نویسی در وب فارسی وجود داره خوش اومدید 😉
احتمالا تا امروز اسم برنامه نویسی کامپیوتر یا Programming به گوشتان خورده و شاید حتی تمایل داشته باشید به یک برنامه نویس تبدیل شوید!
نمی توان بطور قطع گفت برای ادامه مسیر شغلی در برنامه نویسی، نیاز به تحصیل در رشته کامپیوتر دارید ولی اگر در رشته مهندسی یا علوم کامپیوتر تحصیل نمایید، بصورت پایه ای با زبان های برنامه نویسی آشنا شده و با برخی از آن ها کدنویسی خواهید کرد.
اما بیایید ابتدا به یک سوال بنیادین پاسخ دهیم؛ برنامه نویسی یا Programming چیست و برای تبدیل شدن به یک برنامه نویس موفق باید در چه راهی قدم گذاشت؟
می توان با اطمینان گفت یکی از بزرگترین آرزوهای دولوپرها و برنامه نویسان جهان، کار در شرکت های بزرگ فناوری همچون اپل، آمازون، IBM، گوگل، Cognizant و بسیاری دیگر از این غول های حوزه آی تی است؛ ارزش برند برخی از این شرکت ها چیزی حدود 700 میلیارد دلار است که چیزی بیش از 5 برابر کل بودجه پیشنهادی کشور ایران در سال آتی (1401) است!
درباره بزرگترین شرکت های حوزه آی تی بیشتر بخوانید.
برنامه نویسی چیست و به چه کسی برنامه نویس می گویند؟
برنامه نویسی به معنای اعطای فرامین به کامپیوتر جهت اجرا و خلق الگوریتم های کامپیوتری است. الگوریتمها با این دید طراحی میشوند که بعد از تبدیل به یک زبان برنامه نویسی مانند Python، Java یا C، برای اجرا به کامپیوتر داده شوند.
اگر تا امروز به کمک یک دستور غذایی آشپزی کردهاید، میتوانید خود را یک کامپیوتر دانسته و شخصی که رسپی آشپزی را تهیه کرده یک برنامه نویس بدانید. برنامهها هستند که کامپیوتر را وادار به انجام کاری میکنند در غیر اینصورت کامپیوترها تنها ماشینهایی پیچیده هستند که انرژی الکتریکی را به گرما تبدیل می کنند!
تعداد افرادی که در حال یادگیری برنامه نویسی هستند هر ساله رو به افزایش است بطوریکه امروز حدود 26.2 میلیون Software Developer (توسعه دهنده نرم افزار) در دنیا وجود دارد در حالی که این عدد در برابر مشاغل دیگری که به نوعی به Programming مربوط هستند، حتی به حساب نمی آید.
تا اینجا با مفهوم برنامه نویسی آشنا شدیم؛ اما برنامه نویس کامپیوتر کیست؟
برنامه نویس یا Programmer کسی است که به کمک زبانهای برنامه نویسی که از محبوب ترین آنها میتوان به پایتون، C و جاوا اشاره کرد، کدها را نوشته و برای اجرا به کامپیوتر می دهد.
تاریخچه برنامه نویسی کامپیوتر
بسیاری از مورخان معتقدند آدا لاولیس (Ada Lovelace) اولین کسی بود که یک برنامه کامپیوتری را منتشر کرد. این ریاضیدان در اواسط قرن نوزدهم برای اولین بار نوشتههای لوئیجی فدریکو منابریا را روی موتور تحلیلی ترجمه کرد. او در این ترجمه با افزودن یادداشتهای خود روشی برای محاسبه اعداد برنولی برای موتور تحلیلی معرفی کرد.
برنامه نویسی کامپیوتر برای اولین بار توسط آلونزو چرچ (Alonzo Church) و همچنین با ماشین تورینگ (انیگما) معرفی شد که به نوبه خود انقلاب بزرگی در زمینه رمزنگاری بود. انیگما یک ماشین محاسباتی است که در طول جنگ جهانی دوم توسط آلن تورینگ ساخته شد تا بتوانند کدهای آلمانها را رمزگشایی کنند. بعدها در دهه 1920 کامپیوترهایی ساخته شدند که قابلیت اجرای زبانهای برنامه نویسی را داشتند، به این ترتیب در قرن بعد با ادامه روند تکامل ماشینها و پیشرفت تکنولوژی تعداد زبانهای برنامهنویسی نیز افزایش یافت.
دولوپر کیست و چه تفاوتی با برنامه نویس دارد؟
دولوپر یا توسعهدهنده کسی است که نرم افزارها و برنامههای کاربردی را از صفر میسازد. فرق Developer با برنامه نویس در این است که دولوپر نه تنها کد منبع یک برنامه نرم افزاری را مینویسد بلکه آن را اشکال زدایی (دیباگ) کرده و سپس آن را اجرا میکند. در واقع دولوپر کسی است که مسئولیت کل پروژه تولید و ساخت یک برنامه کاربردی یا نرم افزار را به عهده دارد و ممکن است چندین برنامه نویس زیر نظر او کار کنند؛ در حالی که برنامه نویس کسی است که صرفاً مسئولیت نوشتن کد برنامه را به عهده دارد.
بنابراین وظایف دولوپر به مراتب بیشتر از یک برنامه نویس است و بعضاً به نامهای توسعهدهنده نرم افزار یا مهندس نرم افزار نیز شناخته میشود.
اکثر دولوپرها برای توسعه محصولات یا خدمات خود از یک یا چند زبان برنامه نویسی استفاده میکنند. شرکتهایی مثل مایکروسافت و اوراکل به دلیل پیچیدگی محصولات و خدماتی که توسعه میدهند و به مشتریان میفروشند دولوپرهای زیادی استخدام میکنند.
برنامهنویس خوب چه کسی است و چگونه یک برنامه نویس خوب باشیم؟
یادگیری کدنویسی آسان است، اما کد خوب نادر است. کد خوب در پیش نویس اول به سختی پیدا میشود. پس از کار با صدها توسعهدهنده، ما میتوانیم ویژگیهای اصلی یک کد خوب را شناسایی کنیم. ما درک میکنیم که برای توسعه دهنده نرم افزار بسیار مهم است که کد خوبی بنویسد تا آن را قابل نگهداری تر، خواناتر، توسعه پذیرتر و بدون اشکال کند.
درک این نکته مهم است که کدنویسی دریچه اولیه موفقیت برای برنامه نویسان است، اما چیزی که یک برنامه نویس خوب را می سازد بسیار بیشتر است. هر برنامه نویس بزرگی از چند روش خوب پیروی میکند:
- اشتیاق برای یادگیری :
فناوری حوزهای است که همیشه در حال تغییر است. همیشه یک نوآوری وجود دارد که به وقوع میپیوندد. زبان های برنامه نویسی جدید با نحو (Syntax) بهبود یافته و شیوههای بهتر مورد توجه قرار می گیرند. چارچوبها و کتابخانههای جدیدی برای بهبود فرآیند توسعه معرفی شدهاند. دانستن همه این نوآوریها و انتخاب ویژگیهای مهم برای کمک به توسعه دهندگان برای بهبود کد خود، منجر به کدی بدون اشکال و قابل نگهداری میشود.
زمانی که فناوری همیشه در حال پیشرفت است و مهارتها و تواناییهای یک برنامه نویس امروزی احتمالاً در چند سال آینده منسوخ میشوند، این ویژگی به شدت توسط متقاضیان نادیده گرفته میشود. مهم است که برنامه نویسی باشید که علاقه مند به همگام شدن با آخرین روندها باشد و مشتاق استفاده از هر فرصتی برای یادگیری مهارت های جدید و بهبود مهارتهای موجود باشد.
راههای زیادی برای دانستن آخرین روندهای بهبود یافته در دنیای فناوری وجود دارد، بهعنوان مثال، پیوستن به جوامع فناوری، شرکت در رویدادهای فناوری، صحبت با رهبران و بحثهای منظم.
- ارتباطات منظم :
توسعه محصول یک فرآیند بسیار پویا است. یکی از ویژگی های یک برنامه نویس خوب این است که به هر ذینفعی (Stakeholder) اجازه میدهد تا از وضعیت کد، روان یا مسدود بودن آن مطلع شود. ارتباط منظم کلید محصولات عالی است. مهارتهای ارتباطی خوب به طور مستقیم با مهارتهای توسعه خوب ارتباط دارد.
یک توسعه دهنده نرم افزار عالی میتواند مشکلات را به وضوح درک کند، آنها را به فرضیهها تقسیم کند و راه حلهایی را به شیوهای منسجم پیشنهاد کند. آنها مفاهیم را به سرعت درک میکنند، یا سؤالات مناسبی را برای فهمیدن میپرسند. این در واقع یکی از ویژگیهایی است که در توسعه دهندگان نادر است زیرا بیشتر برنامه نویسان درونگرا هستند و فقط دوست دارند با برنامه نویسان دیگر ارتباط برقرار کنند. ابزارهایی مانند Jira، Trello به هر ذینفع کمک میکند تا از وضعیت هر ویژگی در محصول آگاه شود.
- مدیریت زمان و وظایف :
فناوری اگر به خوبی نگهداری و ردیابی نشود، میتواند بسیار پیچیده باشد. یک برنامه نویس خوب همه را در جریان قرار میدهد که کد به چه مرحلهای رسیده است و چه ویژگیهایی باقی مانده است. شکستن الزامات تجاری در الزامات فناوری نیز هنری است که برنامه نویسان بزرگ میتوانند به آن دست یابند. ابزارهایی مانند Jira به ردیابی ویژگیهای فنی کمک میکند. همچنین کدنویسی چیزی است که نیاز به زمان و تلاش دارد. بنابراین آنها زمان خود را به خوبی مدیریت میکنند تا بین کار و زندگی تعادل برقرار کنند!
یک برنامه نویس عالی بسیار قابل اعتماد است. آنها اخلاق کاری قوی دارند و به موقع در جلسات حاضر میشوند. یک مهارت مهم، توانایی تخمین مقدار زمان مورد نیاز برای تکمیل یک کار، برقراری ارتباط با آن و انجام آن است. توسعه دهندگان استثنایی در مدیریت مشتریان یا رهبران خود به جای اینکه شما آنها را مدیریت کنید عالی هستند.
- تجربه فنی گسترده :
فقط دانستن یک فناوری یا یک زبان برنامه نویسی یک استعداد بسیار اساسی است. برنامه نویسان خوب همیشه در یک فناوری به کارایی میرسند و سپس از فناوریهای دیگر آگاه میشوند. این به آنها کمک میکند تا از نحوه عملکرد کل سیستم آگاه شوند. به عنوان مثال، توسعه دهندگان (Front-end) مشتاقند بدانند چه کسی از دادههایی استفاده میکند که کاربر وارد می کند و چگونه Back-end این دادهها را پردازش میکند. بسیاری از شرکت ها اهمیت این عمق و وسعت فناوریها را میدانند، بنابراین بسیاری از شرکت ها به چرخش منظم برنامه نویسان اعتقاد دارند.
یک توسعه دهنده با تجربه در بهترین شیوهها مانند توسعه چابک و نرم افزار های مدیریت وظایف مانند Jira و Trello به خوبی آشنا است. آنها همچنین بر کنترل نسخه، محیطهای مختلف توسعه و فرآیند استقرار برنامهها تسلط دارند.
- کار تیمی :
برنامه نویسان گرگهای تنها هستند و معتقدند بهترین مشارکت کنندگان فردی هستند. برنامه نویسان خوب ارزش یک تیم را میدانند و بنابراین سعی میکنند فناوری را در تیم یاد بگیرند و بحث کنند. توسعه دهندگان خوب دیگران را با آموختهها و تجربیات خود آموزش میدهند. آنها توسعه دهندگان جوان را تشویق میکنند تا سؤال بپرسند و آموختههای خود را به اشتراک بگذارند.
آنها به هم تیمیها کمک میکنند، مهارتهای جدیدی را به دیگران آموزش میدهند و اسنادی را مینویسند که به هم تیمیها نه تنها در سازمانشان بلکه به طور کلی به جامعه توسعهدهنده کمک میکند. ابزارهایی مانند Confluence برای ایجاد اسناد در سطح تیم استفاده میشود. جدا از روابط حرفهای، بازیهای آنلاین و گردشهای تیمی واقعاً راه های عالی برای ایجاد پیوند در سطح تیم هستند.
کاربردهای برنامه نویسی رایانه
تقریباً همه سیستمهای هوشمندی که اطراف خود میبینید نتیجه برنامه نویسی رایانه هستند. اما اگر بخواهیم دقیقتر نگاه کنیم از کاربردهای برنامه نویسی کامپیوتر میتوان به موارد زیر اشاره کرد:
- راهاندازی وبسایتها و استفاده از برنامههای آنلاین و تحت وب
- طراحی و راهاندازی نرمافزارهای کامپیوتری: در این حوزه یک دولوپر مسئولیت طراحی و توسعه یک برنامه یا نرمافزار کامپیوتری را بهعهده میگیرد. اولین مرحله طراحی رابط کاربری است که توسط یک طراح رابط کاربری (UI) انجام میشود و بعد کاربر پسند بودن طراحی (UX) بررسی میشود. سپس گروهی متخصص از برنامه نویسان کامپیوتر نرم افزار را پیادهسازی میکنند.
- طراحی و ایجاد بازیهای کامپیوتری
- برقراری ارتباط با سخت افزار: در این مدل برنامه نویسی که اصطلاحاً برنامه نویسی سیستمی نام دارد، برنامه نویس میتواند با کد نویسی و اجرای فرمانهای نوشته شده، تغییراتی در یک سخت افزار ایجاد کند. فرضاً میتواند با اجرای یک دستور ساده یک چراغ LED را روشن و خاموش کند. از این نوع کد نویسی به شکل پیشرفته در طراحی ریزپردازندهها استفاده میشود.
آنالیز داده و استفاده از ابزارهای آماری و تحلیلی: متخصصین حوزههای دادهکاوی و هوش تجاری برای محاسبات آماری و نمایش گرافیکی دادهها از یک سری زبانهای برنامه نویسی خاص (مثل R) استفاده میکنند. امروزه بسیاری از شرکتهای بزرگ دنیا که با دادههای بزرگ سر و کار دارند برای تجزیه و تحلیل این دادهها متخصصین زبانهای برنامهنویسی تحلیل داده استخدام میکنند. شرکتهایی مثل فیسبوک، اوبر، گوگل، مایکروسافت و ... .
فهرست محبوب ترین زبان های برنامه نویسی کامپیوتر
حوزه برنامه نویسی با سرعت هرچه تمامتر رو به جلو حرکت میکند و این پیشرفت سریع موجب میشود برنامه نویسان برای موفق بودن در حوزه کاری خود زبانهای برنامه نویسی متعددی یاد بگیرند. در ادامه فهرستی از محبوبترین زبانهای برنامه نویسی کامپیوتر در سال 2020 به همراه میزان محبوبیت هریک آورده شده است:
- Rust: 86.1٪
- TypeScript: 67.1٪
- Python: 66.7٪
- Kotlin: 62.9٪
- GO: 62.3٪
- Julia: 62.2٪
- Dart: 62.1٪
- C#: 59.7٪
- Swift: 59.5٪
- JacaScript: 58.3٪
میزان حقوق و آینده شغلی برنامه نویس کامپیوتر
حقوق یک برنامه نویس کامپیوتر درست مثل سایر مشاغل بستگی به تجربه کاری شخص برنامه نویس دارد. بنابر اطلاعات به دست آمده از سایت ایران سلری (Iran Salary) میزان حقوق برنامه نویسان در سال 1400 حداقل 2 میلیون و حداکثر 16 میلیون تومان متغیر بوده است.
بر اساس اطلاعات مربوط به سال 1400 منتشر شده توسط این سایت، میزان حقوق برنامه نویسانی با تجربه کاری کمتر از یک سال بطور میانگین 3.5 میلیون، بین یک تا سه سال 4.5 میلیون، بین سه تا پنج سال 6 میلیون، بین پنج تا هفت سال 7.2 میلیون، بین هفت تا 10 سال 8.2 میلیون، بین 10 تا 15 سال 8.9 میلیون، بین 15 تا 20 سال 10.2 میلیون، بین 20 تا 30 سال 10.9 میلیون و بیش از 30 سال 9.3 میلیون تومان بوده است.
با روند رو به رشد توسعه وب و اپلیکیشن ها، نیاز شرکت ها به برنامه نویس رو به افزایش است و این تأییدی است بر افزایش درآمد برنامه نویسیبررسی درآمد برنامه نویسی در ایران و خارج از کشور در 1402در این صفحه عالی به بررسی درآمد برنامه نویسی در ایران و خارج از کشور پرداخته، همچنین در خصوص راههای کسب درآمد از برنامه نویسی و درآمد زبان های مختلف صحبت شده است. و آیندهای روشن برای این شغل.
کسب عنوان برنامه نویس کامپیوتر
برای کسب عنوان برنامه نویس کامپیوتر فرد باید حداقل به یک زبان برنامه نویسی مسلط باشد و بتواند توسط آن زبان کد نویسی کند. عدهای تصور میکنند برای کسب عنوان برنامه نویس کامپیوتر حتماً باید مدرک دانشگاهی مهندسی کامپیوتر داشته باشند که البته پر بیراه هم نیست.
دانشجویان رشته های کامپیوتر شامل مهندسی و علوم کامپیوتر، از زمان شروع تحصیل در دوران کارشناسی، درسی را تحت عنوان "مبانی کامپیوتر و برنامه نویسی" گذرانده و با مقدمات برنامه نویسی آشنا میشوند؛ این در حالی است که دانشجویان این دو رشته هر کدام بطور تخصصیتری نیز در مباحث Programming آموزش میبینند. دانشجویان میتوانند در کنار این آموزشها به صورت خودخوان یا شرکت در دورههای برنامه نویسی آنلاین و حضوری، مهارتهای خود را تقویت کنند.
پس از انتخاب یک زبان، تسلط به زبان مورد نظر و اجرای چندین و چند برنامه مبتنی بر آن زبان میتوان گفت مسیر حرفهای فرد به عنوان برنامه نویس کامپیوتر آغاز میشود.
برای آموزش برنامه نویسی باید از کجا شروع کرد؟
به دلیل اهمیت فراوان این مسئله، مقالهای جداگانه در خصوص این پرسش که چگونه باید آموزش برنامه نویسیچگونه آموزش برنامه نویسی را بصورت حرفهای شروع کنیم؟چگونه آموزش برنامه نویسی را حرفه ای شروع کنیم؟ این یکی از سوالات متداول تمامی افرادی است که میخواهند آموزش برنامه نویسی را شروع کنند. در این صفحه این موضوع مورد بررسی و موشکافی قرار گرفته است را بصورت حرفهای شروع کنید برای شما عزیزان قرار داده شده که توصیه اکید میکنیم این مقاله را نیز بصورت کامل مطالعه کنید.
ابتدا باید زمینه برنامه نویسی و پلتفرم کاری خود را انتخاب کنید به این معنی که مشخص کنید در کدام یک از سه زمینه برنامه نویسی موجود میخواهید کار کنید؟
1- برنامه نویسی تحت وب
2- برنامه نویسی موبایل
3- برنامه نویسی دسکتاپ
پس از اینکه زمینه برنامه نویسی خود را مشخص کردید باید یکی از زبانهای برنامه نویسی مناسب برای آن زمینه را انتخاب کنید. سپس میتوانید بصورت خودآموز و با استفاده از فیلم ها و آموزشهای رایگانی که در اینترنت وجود دارد آن زبان برنامه نویسی را یاد بگیرید و یا اینکه در کلاسهای آموزشی مربوط به آن زبان برنامه نویسی شرکت کرده مهارت کدنویسی خود را ارتقا دهید.
کتاب هایی که هر برنامه نویسی باید حداقل یکبار بخواند
اگر برنامه نویس هستید، باید خواننده خوبی نیز باشید زیرا ذهن را توسعه میدهد و ذهن سلاح شماست، شما باید آن را روزانه آموزش دهید. قبل از یافتن هر راه حلی برای یک مسئله، خواندن و درک مسائل مهم ترین رکن برای حل آن مسئله است. بدون مهارت خواندن و درک خوب، فرد زمان بیشتری را برای درک مشکلات قبل از حل آن صرف میکند.
در زیر لیستی از کتابهایی که هر برنامه نویسی باید بخواند وجود دارد. این کتابها نه تنها نحو (Syntax) و معناشناسی زبان های برنامهنویسی را آموزش میدهند، بلکه به شما کمک میکنند تا فکر کنید، سازماندهی کنید و به حلکننده خوبی برای مسائل تبدیل شوید، که در واقع مهمترین درس برای یک برنامه نویس است. این کتابها نه تنها برای تسلط بر یک زبان برنامه نویسی خاص مانند C++، جاوا یا پایتون هستند، بلکه به شما کمک میکنند تا برنامه نویس بهتری شوید.
- Clean Code :
حتی کد بد هم میتواند کار کند. اما اگر کد تمیز نباشد، می تواند یک سازمان را به زانو درآورد. هر سال، ساعتهای بی شماری و منابع قابل توجهی به دلیل کد نوشته شده ضعیف از بین میروند. اما لازم نیست اینطور باشد.
رابرت سی. مارتین (Robert C. Martin)، کارشناس معروف نرم افزار، یک الگوی انقلابی را با Clean Code ارائه میدهد. مارتین با همکارانش همکاری کرده است تا بهترین روش چابک خود در پاکسازی کد که در حال پرواز (on the fly) نام دارد را به کتابی تبدیل کند که ارزشهای یک مهندس نرمافزار را در درون شما القا میکند و شما را به برنامهنویس بهتری تبدیل میکند، اما فقط در صورتی که در چارچوب آن کار کنید.
در این کتاب، شما در حال خواندن کد خواهید بود، تعداد زیادی کد، و در مورد اینکه چه چیزی در آن کد درست است و چه چیزی اشتباه است، به چالش کشیده خواهید شد. مهمتر از آن، شما برای ارزیابی مجدد ارزشهای حرفهای و تعهد خود به حرفه خود به چالش کشیده خواهید شد.
Code به سه قسمت تقسیم میشود، اولی اصول، الگوها و شیوههای نوشتن کد تمیز را شرح میدهد، بخش دوم شامل چندین مطالعه موردی با افزایش پیچیدگی است. هر مطالعه موردی تمرینی برای تمیز کردن کد است. تبدیل یک پایه کد که دارای مشکلاتی است به یک پایه صحیح و کارآمد، بخش سوم نتیجه است: یک فصل منفرد حاوی فهرستی از اکتشافات جمع آوری شده در هنگام ایجاد مطالعات موردی است. نتیجه یک پایگاه دانش است که طرز فکر ما را هنگام نوشتن، خواندن و پاک کردن کد توضیح میدهد.
این کتاب برای هر توسعهدهنده، مهندس نرمافزار، مدیر پروژه، سرپرست تیم یا تحلیلگر سیستم که علاقهمند به تولید کد بهتر است، ضروری است.
خواننده این کتاب به درک مفاهیم زیر خواهد رسید:
- نحوه تشخیص کد خوب و بد
- چگونه کد خوب بنویسیم و چگونه کد بد را به کد خوب تبدیل کنیم
- نحوه ایجاد نامهای خوب، توابع خوب، اشیاء خوب و کلاسهای خوب
- نحوه قالب بندی کد برای حداکثر خوانایی
- نحوه پیاده سازی مدیریت کامل خطا بدون پنهان کردن منطق کد
- نحوه تست واحد (Unit Test) و تمرین توسعه تست محور(Test-Driven Development)
- The Pragmatic Programmer :
این کتاب به هیچ وجه در مورد هیچ زبان برنامه نویسی خاصی نیست، حکمت موجود در این کتاب برای همه زبان های برنامه نویسی صدق می کند.
کتابی کلاسیک در این زمینه است و اغلب به عنوان کتاب درسی در دورههای دانشگاهی مورد استفاده قرار میگیرد، کتابی است که توصیههای عملی و صحیح برنامه نویسی را ارائه میدهد که میتوانید در هر پروژه توسعه ای از آن استفاده کنید.
این کتاب از قیاسها و داستانهای کوتاه برای ارائه روشهای توسعه و هشدارها استفاده میکند، برای مثال نظریه پنجرههای شکسته (Broken Windows Theory)، داستان سوپ سنگ (Stone Soup)، یا قورباغه در حال جوشیدن (Boiling Frog). برخی از مفاهیم در کتاب نامگذاری یا رایج شدند، مانند کاتاهای کد (Code Katas)، تمرینهای کوچک برای تمرین مهارت های برنامهنویسی، DRY (مخفف Don't Repeat Yourself) و اشکالزدایی اردک لاستیکی (Rubber Duck Debugging)، روشی برای اشکالزدایی که نام آن ارجاع به داستانی در کتاب است.
- Code Complete :
این کتاب توصیههای سطح بالایی در مورد کد ارائه میکند، از اهمیت غلبه بر پیچیدگی تا مراقبت از سقوط سنگ (یعنی علائم هشدار دهنده)، همچنین بخش بزرگی در مورد نحوه نوشتن کد با کیفیت بالا دارد که به سطوح ثابتی از انتزاع نیاز دارد که با مرزهای واضح از هم جدا شوند. در مجموع، یک کتاب مرجع مهم با توصیه های فوق العاده است.
مک کانل (Steve McConnell) فعالیت های اصلی در ساخت و ساز را طراحی دقیق، برنامه ریزی ساخت و ساز، کدگذاری و اشکال زدایی، تست واحد، یکپارچه سازی و آزمایش یکپارچه سازی تعریف می کند. اگرچه او ارزش سایر جنبههای توسعه نرم افزار مانند الزامات و مستندات را نادیده نمیگیرد، او به دلایل متعددی بر ساخت نرم افزار تأکید میکند.
تنها درصد کمی از توسعه دهندگان نرم افزار این کتاب را میخواندند، بنابراین اگر این کتاب را بخوانید مطمئناً مزیتی خواهید داشت. تنها با مطالعه این کتاب میتوانید چندین سال تجربه کسب کنید.
- Coders at Work :
تمرکز این کتاب بر این است که برنامه نویسان چگونه کار خود را انجام میدهند و چگونه خود را میبینند. نشان میدهد که برنامه نویسان معروف اغلب هیچ تفاوتی با برنامه نویسان دیگر ندارند و با همان مشکلاتی دست و پنجه نرم میکنند که بقیه انسانها نیز میکنند.
موضوعات اولیه در این مصاحبهها شامل نحوه یادگیری برنامه نویسی توسط مصاحبه شوندگان، نحوه اشکال زدایی کد، زبانها و ابزارهای مورد علاقه آنها و غیره است.
- The Mythical Man-Month :
موضوع اصلی این کتاب این است که افزودن نیروی انسانی به پروژه نرم افزاری که از برنامه عقب مانده است، آن را حتی بیشتر به تأخیر میاندازد. این ایده به قانون بروکس (Brooks's law) معروف است و همراه با اثر سیستم دوم (Second-System Effect) و حمایت از نمونه سازی (Prototyping) ارائه شده است.
The Mythical Man-Month نسبت به سایر کتابهای این فهرست کوتاهتر است و در مدت زمان کمتری خوانده میشود. یک کتاب عالی برای مدیران پروژه یا مدیران از هر نوعی است تا پیچیدگی های پروژه های نرمافزاری را که آنها را از انواع دیگر پروژهها متمایز میکند، بهتر درک کنند.
چگونه به عنوان یک توسعه دهنده، شغل پیدا کنیم؟
با توجه به مشاغل پرسود و انعطاف پذیری که در حوزه فناوری وجود دارد (بسیاری از این مشاغل فنی به مدرک مرتبط با رشته کامپیوتر نیاز ندارند)، و فرصتهای رو به رشد برای داشتن یک شغل فنی خارج از شرکت های فناوری، ممکن است از خود بپرسید: چگونه وارد توسعه نرم افزار شوید و برنامه نویس شوید؟ آیا به دست آوردن یک شغل توسعه دهنده جوان (Junior) سخت است؟ و برای گرفتن شغل توسعه دهنده چه کاری باید انجام دهم؟
- یک سایت نمونه کارها (Portfolio) پر از کارهای مرتبط بسازید :
شما باید هر کاری را که برای شرکتها یا مشتریان انجام دادهاید (با اجازه آنها) و احساس خوبی نسبت به آن دارید، درج کنید، و به یاد داشته باشید که پروژههایی را که محدوده شما را به عنوان یک طراح و توسعهدهنده نشان میدهند، بگنجانید. آنچه در اینجا مهم است این است که شما در حال بارگذاری کارهای قوی و تمیز هستید که نشان دهنده سطح مهارت و برند شما باشد.
- رزومه خود را اصلاح کنید :
حتی اگر نمونه کار شما جایی است که مهارتهای خود را به عنوان یک توسعهدهنده جوان نشان میدهید، اکثر شرکتها همچنان رزومه میخواهند و از آن برای حذف نامزدها استفاده میکنند. این بدان معناست که مال شما باید به اندازه نمونه کارها حرفهای باشد. اطمینان حاصل کنید که مهارتهای اصلی خود را برجسته کردهاید، تجربههای مرتبط با فناوری را انجام دادهاید و جزئیات خاصی را برای اثبات دستاوردها و نقاط قوت خود ارائه میدهید.
علاوه بر این، برای انتخاب یک الگوی تمیز و آسان برای استفاده به عنوان رزومه وقت بگذارید. مجموعهای از الگوهای رزومه به صورت رایگان در سراسر اینترنت موجود هستند، و کارفرمای آینده شما از شما به خاطر ارائه تمام تجربیات شما به شیوهای واضح و بصری خوشایند تشکر خواهد کرد. به یاد داشته باشید، شما میخواهید به همان اندازه که کارفرمای شما میخواهد کسی را استخدام کند، استخدام شوید!
- اخبار صنعت را دنبال کنید :
منابعی را برای پیگیری اتفاقات فناوری در نظر بگیرید. این هم برای اولین مصاحبه شغلی شما و هم برای تمام صحبتهای کوچکی که با دوستان فناوری جدید انجام میدهید بسیار مهم است. لازم نیست در هر داستان یا موضوعی متخصص باشید. فقط بدانید چه چیزی داغ است و چه اتفاقی میافتد. میتوانید وبلاگها یا سایتهای خبری فناوری را در وعده صبحانه بخوانید یا وقتی در صف فروشگاه منتظر هستید فهرستهای توییتر را دنبال کنید.
- به طور منظم مهارت های جدید و مرتبط را بیاموزید :
علاوه بر پیگیری اخبار، باید با مهارتها و ابزارهای جدید تجارت نیز همراه باشید. بهعنوان یک توسعهدهنده سطح ابتدایی، دانستن این موارد شما را بسیار مورد تقاضا قرار میدهد. اینکه چه مهارت هایی را باید بیاموزید بستگی به زمینه ای دارد که علاقه مندید در آن فعالیت کنید.
- جستجوی شغل خود را برای مشاغل توسعهدهنده جوان شروع کنید :
اکنون که تلاش بیشتری را با انجام مراحل گفته شده انجام داده اید، زمان آن رسیده است که به لیست مشاغل واقعی توسعه دهنده در سطح ابتدایی بپردازید. با جستجوی ساده «توسعهدهنده جوان» در سایتهایی مانند Jobvision، Jobinja و Quera شروع کنید و نگران شرکت یا مکان نباشید. ایده این است که شما ببینید کارفرمایان به دنبال چه هستند و به طور کلی چه نوع گزینههایی در دسترس هستند.
به خاطر داشته باشید که شرح شغلها بیشتر از آنچه واقعاً از نامزدها انتظار میرود، الزامات و مهارتهای فنی را فهرست میکنند (گاهی اوقات بسیار بیشتر!). اجازه ندهید این شما را دلسرد کند، بسیاری از مدیران استخدامی تصمیم خود را بر اساس توانایی شما برای یادگیری در محل کار میگیرند - هیچ کس قرار نیست از همه چیز در موقعیت جدید مطلع شود و شما آموزشهای حین کار (حتی در استارتآپها!) را خواهید دید.
هنگامی که احساس کردید چه چیزی وجود دارد، رزومه خود را برای مشاغلی که واقعاً به آنها علاقه دارید ارسال کنید. واقع بین باشید اما خجالتی نباشید. هیچ کس با در دست داشتن موقعیت توسعه دهنده در خانه شما را نخواهد زد. به همه دوستان، خانواده، همسایگان، و … اجازه دهید بدانند که شما فعالانه به دنبال شغل هستید.
- مصاحبه برای شغل، حتی اگر مطمئن نیستید که آماده هستید :
وقتی آن لحظه شاد درخشان اتفاق میافتد و از شما خواسته میشود مصاحبه کنید، آن را دنبال کنید! تجربهای که از نشستن حضوری یا چت ویدیویی با یک کارفرمای بالقوه به دست خواهید آورد، شما را به یک نامزد رقابتیتر برای مشاغل تبدیل میکند.
لباس راحت اما حرفه ای بپوشید، سوالات حل مسئله را با یکی از دوستان یا اعضای خانواده تمرین کنید و از قبل در مورد شرکت تحقیق کنید تا برای کارفرما نیز سوالاتی داشته باشید.
قبل از مصاحبه درباره میزان حقوق دریافتی موقعیت شغلی مورد نظرتان تحقیق کنید و میانگینی از حقوق های داده شده را در ذهن داشته باشید، تا هنگامی که کارفرما از میزان حقوق مورد انتظارتان سوال میکند، بتوانید جواب قانع کننده ای بدهید.
مهم نیست اولین مصاحبه شما چگونه پیش برود، از این تجربه جان سالم به در خواهید برد، که مصاحبه بعدی را بسیار آسان تر میکند. بعلاوه شما ایده بسیار بهتری در مورد نحوه انجام مصاحبه های آینده خواهید داشت و باید روی آنها کار کنید. در کمترین زمان، به جای اینکه فقط برای مشاغل توسعه دهنده جوان درخواست دهید، اولین شغل خود را میپذیرید!
- فرآیند را تکرار کنید:
نکته جالب در مورد مشاغل توسعه دهنده جوان (و به طور کلی مشاغل توسعه دهنده) این است که کد شما بیشتر از آنچه در رزومه شما است برای شما صحبت می کند. اگر از مصاحبه خود پیشنهاد کاری دریافت نکردید، ادامه دهید. روی پروژههایی کار کنید تا به مجموعه خود اضافه کنید. هرچه تعداد بیشتری در مجموعه خود داشته باشید، مهارت های کدنویسی شما قوی تر به نظر میرسد و مهمتر از آن قوی تر می شود. در مصاحبه بعدی، شما کاندیدای قوی تری خواهید بود.
البته یکی از فاکتورهای مهم در انتخاب حوزه مورد نظرتان، توجه به میزان درآمد آن حوزه است، برای مثال اگر قصد انتخاب یکی از زبان های برنامه نویسی را دارد باید درآمد برنامه نویسیبررسی درآمد برنامه نویسی در ایران و خارج از کشور در 1402در این صفحه عالی به بررسی درآمد برنامه نویسی در ایران و خارج از کشور پرداخته، همچنین در خصوص راههای کسب درآمد از برنامه نویسی و درآمد زبان های مختلف صحبت شده است. با زبان های مختلف بررسی کرده و سپس بر اساس علاقه و محبوبیت آن زبان، تصمیمتان را بگیرید.
بهترین منابع رایگان برای یادگیری برنامه نویسی
اگر علاقه مند به یادگیری کدنویسی و برنامه نویسی هستید، در این پست، بهترین وب سایتها را برای یادگیری برنامه نویسی به شما معرفی خواهیم کرد.
- Udemy :
Udemy با ارائه بیش از 170000 دوره رایگان و پولی، یک وب سایت آموزش آنلاین است که در آن افراد میتوانند انواع مختلفی از مهارتها، از موسیقی گرفته تا فناوری اطلاعات و نرم افزار را بیاموزند. بخش توسعه (Development) به تنهایی دارای هزاران دوره آنلاین از جمله کلاسهای توسعه وب، علم داده و یادگیری ماشین است.
- Sololearn :
آیا میخواهید برنامه نویسی را در موبایل خود یاد بگیرید؟ اگر بخواهید SoloLearn مناسب ترین گزینه است. SoloLearn یک برنامه موبایل برای iOS و Android دارد. این وب سایت بستر مناسبی برای بهبود مهارتهای فنی شماست. در اینجا میتوانید بسیاری از دورههای برنامه نویسی رایگان را با تمرین در دنیای واقعی پیدا کنید. اگر میخواهید HTML و CSS یا زبانهای برنامه نویسی پیشرفته تر یاد بگیرید، میتوانید از این وب سایت استفاده کنید. همچنین میتوانید با استفاده از تالار گفتمان این سایت از دانشجویان دیگر کمک بگیرید.
- Coursera :
Coursera یک سایت آموزش آنلاین است که با بیش از 200 دانشگاه و شرکت برای ارائه هزاران دوره همکاری میکند. این کلاسها موضوعات مختلفی از تجارت گرفته تا علوم کامپیوتر را پوشش میدهند.
- Khan Academy :
خان آکادمی، یک سازمان غیرانتفاعی معروف، منابع آموزشی و یادگیری را به صورت رایگان ارائه میدهد. این سازمان مجموعه گسترده ای از دورهها را در موضوعات مختلف از جمله مبانی برنامه نویسی و علوم کامپیوتر ارائه می دهد. همچنین دارای یک برنامه موبایل برای iOS و Android است که کاملا رایگان و بدون اشتراک یا خرید درون برنامه ای است.
- edX :
edX دورههای واقعی در سطح کالج را از برخی از بهترین دانشگاههای جهان ارائه میدهد. edX در سال 2012 توسط دانشگاه هاروارد و MIT تاسیس شد و بیش از 160 دانشگاه عضو در سراسر جهان را شامل می شود. نیازی به گفتن نیست که کیفیت سخنرانیها و محتوا در مقایسه با بسیاری از سایتهای کدنویسی دیگر فوق العاده است. محتوای دوره در edX رایگان است و پلتفرم منبع باز است. در مجموع، اگر به دنبال دوره های کدنویسی با کیفیت بالا برای یادگیری در مورد جدیدترین فناوری ها و تئوری های موجود هستید، edX سایت برنامه نویسی مورد علاقه شما است.
- GeekforGeeks :
در اینجا میتوانید دورههایی را به زبانهای مختلف و همچنین آموزشها و آزمونهایی را بیابید. همچنین میتوانید موضوعات زیادی مانند ساختارهای داده، الگوریتم ها و یادگیری ماشینی را بیاموزید. میتوانید این وب سایت را به عنوان یک دانشگاه آنلاین در نظر بگیرید. شما حتی میتوانید پس از اتمام آموزشها گواهینامه دریافت کنید. علاوه بر این، این وب سایت به شما نکات و ترفندهایی در مورد برنامه نویسی می دهد. به طور خلاصه، GeekforGeeks آموزشهای مختلفی را برای برنامه نویسان مبتدی و پیشرفته ارائه می دهد.
- W3Schools :
W3Schools با ارائه یک تجربه یادگیری ساده و تعاملی، وب سایتی است که آموزشهای رایگان در مورد توسعه وب ارائه میدهد. این آموزشها با نمونههای کد زیادی همراه هستند و در موضوعات و سطح دشواری متفاوت هستند. همچنین دارای یک ویرایشگر کد آنلاین است که در آن افراد میتوانند قبل از اجرای کدهای کامپیوتری، آن را آزمایش کنند.
- FreeCodeCamp :
این وب سایت دارای یک کانال یوتیوب نیز میباشد. ویدیوهای تهیه شده توسط مربیان مختلف بسیار عالی است. در اینجا میتوانید ویدیوهای مربوط به هر زمینه مرتبط با نرمافزار را پیدا کنید. FreeCodeCamp هزاران ساعت چالش کدنویسی دارد. با آموزشهای FreeCodeCamp می توانید به راحتی برنامه نویسی را یاد بگیرید.
- Stack Overflow : در حین کار بر روی یک پروژه، گاهی اوقات با خطاهایی مواجه میشوید. تلاش برای حل این خطاها شما را بهبود میبخشد. هنگام دریافت خطا، در اینترنت جستجو خواهید کرد، Stack Overflow مکانی عالی برای یافتن راه حل مشکل شماست. اگر راه حلی برای مشکل خود نمیبینید، میتوانید اینجا بنویسید. احتمالاً در مدت زمان کوتاهی پاسخ سؤال خود را خواهید یافت. به طور خلاصه، این وب سایت جایی است که توسعه دهندگان سؤال میپرسند یا به آنها پاسخ میدهند. شما همچنین میتوانید با پاسخ دادن به سوالات خود را بهبود بخشید. هر مشکلی که حل میکنید امتیازی برای شما به ارمغان میآورد. با افزایش امتیازات میتوانید راحت تر شغل پیدا کنید. این وب سایت در بین برنامه نویسان بسیار محبوب است.
- YouTube :
یوتیوب قطعا یکی از بهترین وب سایتها برای یادگیری کدنویسی و مهارتهای فنی از ابتدا است. اگر قصد دارید یک برنامهنویس شوید، میتوانید کانالهای YouTube را برای یادگیری برنامه نویسی بدون تجربه قبلی پیدا کنید. با این حال، به یاد داشته باشید که شما واقعاً نحوه کدنویسی را فقط با تماشای کدهای شخص دیگری یاد نخواهید گرفت. کد خود را بدون دنبال کردن ویدیو بنویسید. ببینید تا کجا پیش میروید و فقط در صورت نیاز به کمک به یک آموزش مراجعه کنید. اگر نمی توانید یک پروژه برنامه نویسی را بدون «تقلب» به پایان برسانید، همچنان به تمرین بیشتری نیاز دارید.
چه سوالاتی هنگام مصاحبه شغلی فرانت اند پرسیده می شود؟
سوالاتی که برای استخدام یک برنامه نویس فرانت اند پرسیده میشود میتواند شامل دو دسته سوال عمومی و تخصصی باشد؛ سوالات عمومی مانند موارد زیر
1. وب سایت مورد علاقه شما و دلایل شما برای این انتخاب چیست؟
2. برای طراحی یک وبسایت کاربر پسند باید به چه نکاتی توجه کنیم؟
3. به چه نکاتی در طراحی توجه کنیم که به سئو سایت نیز کمک کند؟
سوالات تخصصی نیز میتواند بصورت زیر پرسیده شود.
تگ های HTML و دستورات CSS چیست، چه کاربردی دارد و چطور می توان به کمک آن ها سایت را واکنشگرا کرد طوری که روی ابعاد مختلف صفحه نمایش درست نشان داده شده و اصطلاحا mobile friendly باشد.
محبوب ترین زبان های برنامه نویسی کدامند؟
رده بندیهای مختلفی برای معرفی محبوب ترین زبانهای برنامه نویسی توسط سازمانهای مختلف ارائه میشود که در اکثر آنها Python، Java، سی شارپ، کاتلین و سوئیفت به چشم میخورد. برای شروع یادگیری یک زبان برنامه نویسی بیشتر از آنکه به رنک آن توجه کنید باید ببینید هدف شما از یادگیری آن زبان برنامه نویسی چیست، زیرا برای برخی از کارها باید زبان برنامه نویسی مناسب آن کار را فرا بگیرید.
بعنوان مثال اگر فردی میخواهد در حوزه یادگیری ماشین فعالیت کند باید به سراغ زبان برنامه نویسی پایتون برود و شخصی که میخواهد در حوزه طراحی سایت کار کند بهتر است به سراغ زبانهای برنامه نویسی مانند جاوا اسکریپت یا لاراول برود.
میانگین درآمد برنامه نویس در ایران چقدر است؟
میانگین درآمد یک برنامه نویس به مهارتها و تواناییهای آن شخص وابسته است؛ حقوق برنامه نویس بسته به تواناییها و سابقه کاری که دارد میتواند از 5 تا 25 میلیون تومان متغیر باشد، البته برنامه نویسان خاصی وجود دارند که درآمدهای بالاتری نیز دارند.
زبان برنامه نویسی پایتون چه کاربردهایی دارد؟
زبان برنامه نویسی پایتون (Python) زبانی چند منظوره و دارای کاربردهای بسیار زیادی است که از جمله آن ها می توان به موارد زیر اشاره کرد:
1- طراحی بک اند یک سایت
2- طراحی و ساخت برنامه های موبایل و دسکتاپ
3- استفاده از پایتون در هوش مصنوعی و یادگیری ماشین
4- استفاده در علم داده