چطور و از کجا باید برنامهنویسی را شروع کنیم؟
یکی از مشکلاتی که بسیاری از علاقهمندان به برنامهنویسی با آن مواجه هستند، عدم اطلاع از یک نقشهی راه درست است. وجود یک نقشهی راه خوب باعث میشود که شما تا حد زیادی در وقت و انرژیتان صرفهجویی و مراحل یادگیری را بهتر و سریعتر طی کنید. در ادامه توضیح میدهیم که چطور و از کجا باید برنامهنویسی را شروع کنید. با دیجیکالا مگ همراه شوید.
برنامهنویسان حرفهای و نیمهحرفهای معمولا با سوالات تکراری و زیادی از طرف علاقهمندان روبهرو میشوند. برخی از آنها را در ادامه مرور میکنیم:
بهترین زبان برنامهنویسی چیست؟
چقدر طول میکشد تا یه برنامهنویس خوب بشویم؟
میزان درآمد یک برنامهنویس چقدر است؟
تا چندسالگی میتوانم برنامهنویسی کنم؟
برای برنامهنویس شدن حتما باید رشتهی دانشگاهیام کامپیوتر باشد؟
اساسا چرا برنامهنویسی؟!
قبل از هر چیزی با خودتان صادق باشید. چه چیزی باعث شد که تمایل پیدا کنید برنامهنویسی را یاد بگیرید؟ درآمد بالای برنامهنویسان، علاقه به کامپیوتر و مباحث پیشرفتهی آن، وجههی شخصیتی که برنامهنویسان در اجتماع دارند، نیاز به شغلی که بتوانید در خانه بمانید و پول در بیاورید، تغییر جهان یا حتی به فعلیت رساندن ایدههایتان. اینها همه دلایل بسیار خوبی برای شروع یادگیری برنامهنویسی هستند ولی شاید دلایل خوبی برای ادامه نباشند.
اگر حوصلهی درگیر شدن با مسائل پیچیده را ندارید از شما میخواهیم که دستتان را به کد آلوده نکنید و به سراغ مهارتهای دیگری بروید.
برنامهنویسی نیاز به عشق، علاقه و پشتکار دارد. زندگی یک برنامهنویس با خطاها و انجام نشدن و زیر سوال رفتن مواردی که قبلا یاد گرفته، عجین است. در هر پروژهای برنامهنویسان میزان زیادی از وقتشان را برای رفع خطاهای موجود در برنامهی نوشتهشده صرف میکنند و شاید روزها طول بکشد تا بفهمند مشکل کار تنها از یک غلط املایی بوده است یا هر چیز دیگری. پس به عنوان یک برنامهنویس نیاز به این خواهید داشت که واقعا صبور و باپشتکار باشید. باید قبول کنیم که برنامهنویسی کار سادهای نیست. همین ساده نبودن برنامهنویسی، آن را خاص کرده است. نیازی نیست حتما در رشتهی کامپیوتر دارای تحصیلات باشید یا حتما سنتان بالای ۲۰ و کمتر از ۳۵ باشد. یا حتی نیاز نیست انسان بسیار باهوشی باشید یا ریاضیتان خیلی قوی باشد. ولی اگر همهی اینها را داشته باشید، ممکن است در کنار دیگر برنامهنویسان از جایگاه بهتری برخوردار شوید. اگر پشتکار زیادی در یادگیری ندارید و همچنین اصلا حوصلهی درگیر شدن با مسائل سخت و پیچیده را ندارید از شما میخواهیم که دستتان را به کد آلوده نکنید و به سراغ مهارتهای دیگری بروید.
با شرکت در یک دورهی برنامهنویسی یا خواندن یک کتاب جامع، شما یک برنامهنویس خواهید بود؛ برنامهنویس به این معنی که میتوانید به مطالب گفتهشده در آن کتاب یا آن دوره عمل کنید و بتوانید آن پروژهها را از نو بنویسید. برای یادگیری اولیهی برنامهنویسی زمان زیادی نیاز ندارید؛ ولی برای آنکه بتوانید آنچه را در ذهن شما یا مشتریتان است انجام دهید به تجربههای زیادی نیاز دارید. در واقع، شما به تخصصهای زیادی نیاز خواهید داشت که بسیاری از آنها در هیچ کتاب یا آموزشگاهی ارایه نمیشوند.
بعد از اینکه متوجه شدید که راه سادهای در پیش ندارید و درصورتیکه همچنان دوست دارید برنامهنویس شوید، باید تکلیف خود را روشن کنید و برای آیندهتان تصمیم درستی بگیرید. این تصمیم آیندهی شما را تغییر خواهد داد. پس باید با خود صادق باشید و از روی احساس تصمیم نگیرید.
کدام زبان برنامهنویسی؟
زبانهای برنامهنویسی زیادی در دنیا وجود دارند که قاعدتا قادر نیستید همهی آنها را یاد بگیرید. یکسری از زبانهای برنامهنویسی «چندسکویی» (Cross-Platform) هستند. یعنی با آنها میتوان برای بسترهای متفاوتی برنامهنویسی کنید. مانند زبان برنامهنویسی «جاوا» (Java) که به کمک آن میتوانید برای سیستم عامل اندروید، وب، ویندوز، لینوکس و مک برنامهنویسی کنید. ولی برنامهنویسی برای بسترهای مختلف به سادگیِ حرفزدن در مورد آن نیست و تقریبا برای هر بستر نیاز به مهارتهای خاصی است. اکثر زبانهای برنامهنویسی یکسری اصول عمومی دارند که معمولا در زبانهای مختلف تفاوت آنها بسیار کم است. مثلا شرطها در اکثر زبانهای رایج وجود دارند. بنابراین در ابتدای کار به شما پیشنهاد میکنم که مقدمات کلی برنامهنویسی را یاد بگیرید و روی یک زبان خاص وسواس نداشته باشید.
خوشبختانه معمولا منابع یادگیری بهصورت رایگان یا با صرف هزینهی بسیار کم در دسترس هستند. با جستوجو در گوگل به سایتهای زیادی خواهید رسید که به آموزش تخصص مورد نظرتان میپردازند. سایتهایی مثل «کد آکادمی» (Code Academy)، «کورسرا» (Coursera) و «خان آکادمی» (Khan Academy) منابع بسیار خوبی هستند.
اول سرمشق بنویسید بعد تغییرات ایجاد کنید
اکثر برنامهنویسانی که در اطرافتان میبینید، اولین برنامهای که موفق به نوشتناش شدند، برنامهی ساده «سلام جهان» (Hello world) بوده است که صرفا یک پیغام کوتاه روی نمایشگر نمایش میدهد. اگر از روی یک کتاب یا هرچیز مشابه آن اقدام به یادگیری برنامهنویسی میکنید، تمام تمرینهای خواستهشده را حتی اگر شده با تقلب کردن از دیگران، انجام دهید. سپس کمی خلاقیت خرج دهید و آن را به سبک خودتان بازنویسی کنید.
پس از آنکه کمی در کار خود پیشرفت کردید سعی کنید با چیزهایی که بلدید یک برنامه بنویسید. برای خودتان یک پروژه تعریف کنید و تمام تلاشتان را کنید که آن پروژه را با کیفیت بالا انجام دهید. همچنین میتوانید با استفاده از سایتهایی مثل «سورس فورج» (Source Forge) کدهای سایر برنامهنویسان را بهرایگان دریافت کنید و ببینید آنها چگونه آن برنامه را نوشتهاند و سپس خودتان را با آنها مقایسه کنید.
توسعه و مشارکت در برنامهها
یکی از کارهای پسندیدهای که برنامهنویسان حرفهای انجام میدهند انتشار کدهای نوشتهشدهشان در محیط اینترنت است. این کار باعث میشود که در ابتدا برنامهنویسان مبتدی بتوانند تجربیاتی از کدهای آنها کسب کنند. برنامهنویسان حرفهای و نیمهحرفهای هم میتوانند برنامههایشان را از این طریق توسعه داده و آنها را به برنامههای بهتری تبدیل کنند. سایت «گیتهاب» (GitHub) یکی از وبسایتهای بسیار معروف در این زمینه است که با جستوجو در آن میتوانید پروژههای انجام شده بهوسیلهی سایر برنامهنویسان را مشاهده و دانلود کنید. شما میتوانید برنامهها را توسعه دهید و دوباره منتشر کنید. حتی میتوانید به برنامهای قابلیت جدیدی اضافه کنید.
اگر تا به اینجای کار هنوز پروژهای برای دوستان یا آشنایانتان انجام ندادهاید و کمی استرس دارید که شاید از پس پروژههای تجاری برنیایید، به شما پیشنهاد میکنم با جستوجوی ساده در گوگل (البته به زبان انگلیسی) در انجام پروژهای داوطلبانه شرکت کنید. پروژههای داوطلبانه معمولا بهوسیلهی چند نفر با تخصصهای مشابه و شاید هم متفاوت انجام میشوند و از آنها درآمدی عاید شما نمیشود. برنامهنویسی برای بیمارستانها، خیریهها و سایر موسسات غیرانتفاعی از نمونه پروژههای داوطلبانه هستند که در انتهای پروژه شما چند دوست خارجی، مقدار زیادی اعتمادبهنفس و یک نمونه کار دارید.
شما چه تجربهای در یادگیری برنامهنویسی دارید؟ چند بار در این راه دلسرد شدهاید و چه مشکلاتی تابهحال در این راه داشتهاید؟
سلام من سیزده سالمه و مدتی هست دارم برنامه نویسی رو با بسته اموزشی c# پرند یاد میگیرم بنظر شما همین زبانو ادامه بدم یا برم سراغ زبون های دیگه
سلام آقای اسماعیلی یک سوال داشتم لطفا جواب من رو حتما بدید ممنون میشم:
من ۱۴ سالمه و به برنامه نویسی خیلی علاقه دارم در حال حاضر دارم روی برنامه نویسی وب کار میکنم (فعلا زبان های سمت کاربر مثل HTML و CSS) اینم بگم که من سابقه داشتن سایت (البته با Cms ها) رو دارم و بر مبانی اولیه وب تسلط دارم. انگلیسیمم خوبه و درک مطلب خوبی دارم.
و دارم با فیلم های آموزشی HTML و CSS یاد میگیرم.
میخواستم بپرسم آیا راهی که در پیش گرفتم درسته؟ بعد از این دو زبان به ترتیب چه زبان هایی رو یاد بگیرم؟ ممنون میشم اگه پاسخ بدید.
سلام سایت خیلی خوبی دارین
من هیفده سالمه و چند تا سوال دارم
آیا واسه سنم زوده ؟
من html css javascript رو بلدم
آیآ تحت وب ادامه بدم ؟
من می خوام زبون های قوی و پیشرفته ای مث جاوا سی شارپ و … یاد بگیرم
از کدوم شروع کنم بهتره ؟
و از همه مهم تر درآمد واقعی ی برنامه نویس چقده ؟
آیا ارزش یادگیری و صرف وقت رو داره ؟
ممنون میشم اگه جواب بدید .
دوستانی که برنامه نویسی اندروید کار کردنند لطفا راهنمایی کنید.
من از c شروع کردم و c# رو یاد گرفتم. پروژه هم چند تایی انجام دادم و sql و php رو هم بلدم ولی در مورد اندروید نمی دونم بهترین راه برای یادگیری چیه و بهترین زبان چیه؟
مقاله بسیار مفیدی بود آقای اسماعیلی.
اگه میشه به من کمک کنید. ۱۶ سالمه و مدت زیادی هست که به برنامه نویسی علاقه مند شدم اما نمیدونم کدوم زیان رو در پیش بگیرم.
زبان c++ یا زبان جاوا اسکریپت یا جاوا؟؟
اگه امکانش هست یه مقاله هم درباره تفاوت های زبان جاوا و جاوا اسکریپت منتشر کنید
در مورد شروع دوستان معمولا زبان سطح پایین مثل c یا c++ رو پیشنهاد می کنن که در صورتی که از اونها شروع کنید کارتون در زبان های شی گرا مثل c# آسون تره ولی نیاز نیست که به صورت حرفه ای یاد بگیرید. بعد از زبان سطح پایین و یک زبان سطح بالا که من C# رو ترجیح می دم بسته به نیازتون می تونید سراغ برنامه نویسی تحت وب که می تونه php یا asp باشه برید یا برنامه نویسی اندروید و ios رو ادامه بدید که با توجه به نیاز به یادگیری وب رو یاد بگیرید بهتره. قبل از اون هم با دیتابیس بهتره آشنا بشید که به نظر من sql server بهتره ولی اگر می خواید وب رو با php حرفه ای کار کنید باید mysql هم بلد باشید.
شاید برای اولین بار هست که همچین مقاله ای رو می بینم
بنده هم لیسانس نرم افزار هستم، ولی مهم ترین چیزی که یاد گرفتم اینه که باید دید برنامه نویسی داشت، و ساختار و قواعد را بلد بود، باید بتوان مسائل رو از دید برنامه نویسی(الگوریتم، فلوچارت و ..) برای خودمان تجزیه و تحلیل کنیم!
ساختار و قواعد در اکثریت زبان ها یکسان هست و فقط دستورات و اصطلاحاً سینتکس(Syntax)ها فرق می کنند، مانند زبان های دنیا که همه فعل و فاعل و مفعول دارند فقط کلمات و نحوه جایگذاری آنها ممکن است، فرق کند.
برای بدست آوردن این ها شما به شدت نیاز به صبر و حوصله و تمرکز دارید، کاری که بنده در سن ۲۹ سالگی پی به آن می برم، و اشتباه بنده این بوده است که بلند پروازانه یک پروژه بزرگ را برای خود مد نظر قرار دادم(نوعی از سیستم های DSS با #C) و چون تقریبا ۷۰ درصد پیش رفتم، حیفم آمد و دیگر بسیار پیچیده شده بود و نتوانستم رهایش کنم(بیشتر از لحاظ ذهنی) و چند سال است که (با کندی) روی آن گیر کردهام و نتوانستم از کسی کمک بگیرم؛ و در این سن و سال(با این بیکاری) باعث ناامیدی و مانع پیشرفت من در زمینه های برنامه نویسیِ روز شده است،(و به دنبال آموزشهای شبکهوسرور رفتم) و هنوز ماندهام که ادامه بدهم یا نه؛ و از انتخابی دیگر و شروع مجدد این حوزه میترسم!
این ها رو گفتم که در ابتدای راه(که شاید احساس کنید همه چیز را یاد گرفتید) به سراغ برنامه های بزرگ نروید(آن هم به تنهایی)، که ممکن است زمان و امیدتان را از دست بدهید! (در این زمانه برنامه نویس واردی حاضر نیست همراه با تو روی مسائل پروژه ات کار کند، برای ما که کسی وقت نداشت)
از نظرات و انتقادات دوستان خوشحال میشم!
یاحق
اگه کسی نشد شما بشو
چند تا جوونو مث خودت راهنمایی کن
با هم همکار شین و پروژه بسازین
شاید به راحتی گفتنش نباشه ولی شدنی که هست
با تشکر از مطلب خوبی که قرار دادید
اکثر نظرات دوستان علاقمند به برنامه نویسی رو خوندم و خوشحالم که این مقاله بطور روشن و واضحو دور از پیچیدگی تونسته نظر دوستان را جلب کنه .
خیلی از مطالب مقاله بسادگی و بسیار روان ویژگی ها و شرایط این کار رو توضیح داده بود , من هم سعی کردم مخنصر تجربیاتم رو با دوستان در میون بزارم.
دوستان عزیز
قبل از هر چیزی, برای برنامه نویس بودن باید تفکر برنامه نویسی داشته باشید. مثل همون دوستمون بتونید حتی یک برنامه رو به صورت فارسی بنویسید. یعنی دقیق بدونید مرحله ب مرحله ی کار به چه صورت و به چه نحوی انجام میگیره. یعنی یک ذهنیت الگوریتیمک.و گرنه خوندن چند تا کد از یک کتاب و یا سایت برا برنامه نویس شدن کافی نیست. باید خلاق باشید و بدونید ک چطور می شه یه پیشنهاد خوب رو با چند تا دستور پیاده کرد.
به اصطلاح کد نویس نباشید , برنامه نویس باشید.
توصیه میکنم قبل از انتخاب با مدله و نسلهای برنامه نویسی اشنا باشید.با پیشرفتهای ک وجودداشته خیلی از انتخابها رو تخت تاثیر قرار داده. مثل انتخاب بین VIsual Basic و برنامه نویسی اندروید.
برای تسلط به کل داستان بعضی اوقات نگاه کواتاه به قبل لازمه. مثل تفکر شی گرانه ای که به عنوان پایه اکثر زبانهای برنامه نویسی امروزی لازمه.
برای شناخت این تفکر توصیه میکنم که از یک زبان شی گرای مختصر شروع و به خاصیت ها و ماهیت آن آشنا بشید. مثل ++C .نگاهتون رو خیلی باز میکنه. و میتونم بگم هنوز قدرتمند
بطور کلی شما باید با خااصیت های زبانها ی برنامه نویسی آشنا بشید و با توجه یه نیازهاتون آنها رو انتخاب کنید
مثلا با شناخت خاصیت شی گرایی در یک زبان و نیا ز به طراحی یک سایت شما می تونید از #C استفاده کنید.
و یا نیازهای بیشترتون و استفاده از همین خاصیت از Java استفاده کنید.
برای برنامه نویس شدن سعی کنید تفکرتون برنامه نویسی باشه.
مثل یه برنامه ریز باید از همه چیز نسبتا اگاهی داشته باشید تا بتونید انتخاب بهتری داشته باشید.
موفق باشید
سلام من زبان ویژوال بیسیک و html کار کردم و پیشرفتم هم خوب بود مخصوصا در ویژوال و به دوستانی که تازه میخوان برنامه نویسی رو شروع کنن ویژوال رو پیشنهاد می کنم اما من هیچوقت یه برنامه نویس حرفه ای یا حتی نیمه حرفه ای نشدم حتی با وجود اینکه استعداد فوق العاده زیادی در زمینه کامپیوتر دارم البته از خودم نمیخوام تعریف کنم این چیزیه که همه بهم میگن و بهتر از هر کاری از پس کارهای کامپیوتری برمیام یکی از مشکلات عمده من این بود که حوصله آزمون و خطا و این همه وقت گذاشتن رو نداشتم و زودتر میخواستم به نتیجه برسم که چنین چیزی عملا برای برنامه نویسی غیر ممکنه
سلام
ممنون از مقاله ی عالیتون.
امکان داره چند مورد از پروژه های داوطلبانه ای که میشه انجام داد در اینترنت، رو معرفی کنین؟ یا وبسایتی رو که این پروژه ها رو بشه توش پیدا کنیم، معرفی بفرمایین؟
با تشکر.
درآمدش چطوره؟
برای برنامه نویس ها کار خوب پیدا میشه؟
با سلام
من حامد هستم از شیراز
چند سال پیش برنامه نویسی میکردم به مدت تقریبا ۲ سال پشت سره هم.اما بعد حس کردم که استعدادشو ندارم . البته میتونم بگم که به
جایی رسیدم که اگر نا امید نشده بودم الان شاید واسه خودم کسی میشدم الان لیسانس کامپیوتر دارم و متاسفانه اصلا چیزی از برنامه نویسی
بلد نیستم . اینم بگم که بخاطره سنم (۳۰ ساله هستم) یخورده ترس دارم که برنامه نویسی رو از اول و از پایه شروع کنم (منظورم از الگوریتم و
فلوچارت هست ). آقای اسماعیلی لطفا منو راهنمایی کنید . میخوام بدونم از نظر شما با توجه به شرایطی ( سنم و اینکه بیکار هستم ) که دارم
میتونم شروع کنم به برنامه نویسی یا اینکه دیگه قید این راه رو بزنمو هنوزم بگردم دونباله یه شغل دیگه ؟ البنه اینم درنظر داشته باشید که
بنده چون قبلا کار کردم الان سرعت یادگیریم بیش از کسایی هست که میخوان تازه شروع به برنامه نویسی کنن.ممنون میشم اگر که کمکم کنین.
من آقای اسماعیلی نیستم ولی فوق العاده تجربه دارم در این زمینه،این مهارت یا هر مهارت دیگه ای رو که دوست داری شروع کن هیچگاه واسه شروع دیر نیست،یه راه هزار کیلومتری هم با قدم اول آغاز میگردد…
سلام من به تازگی تصمیم گرفتم که برنامه نویسی کنم البته راجع بهش هیچ اطلاعاتی ندارم که باید از کجا شروع کنم و چه چیزایی پیش نیازشه میخواستم اگه میتونید راهنماییم کنید ممنون