چند کلام حرف حساب با برنامه‌نویسان تازه‌وارد

نویسنده : سید ایوب کوکبی ۱ اردیبهشت ۱۳۹۸
چند کلام حرف حساب با برنامه‌نویسان تازه‌وارد

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

برای برنامه‌نویسی دلیل داشته باشید

صرف اینکه بقیه گفته‌اند برنامه‌نویسی خوب است برنامه‌نویسی نکنید. ببینید خودتان چه دلیلی برای این کار دارید. به کدنویسی ذاتاً علاقه دارید؟ دنبال شغل و کسب درآمد هستید؟ برای سرعت بخشیدن به کارهای شخصی سراغ کدنویسی آمده‌اید؟ به هر حال صاف و روراست دلیلی که به سمت برنامه‌نویسی آمده‌اید را مشخص کنید.

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

ابتدا زیربناسازی کنید

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

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

فعالیت در کامیونیتی‌ها

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

هدف همیشه سوال پرسیدن نیست. گاهی خواندن پاسخ‌هایی که به سوالات دیگران داده شده خودش درس‌های زیادی دارد. به عنوان مثال dev.to و CodeNewbie دو نمونه از صدها موردی است که می‌توانید در این باره پیدا کنید. CodeNewbie هر هفته چت توییتری برگزار می‌کند، گروهی در اسلک دارد و پادکست هم منتشر می‌کند. Dev.to تعداد زیادی پست‌های مفید دارد و امکان پست کردن سوال با تگ discuss# نیز در آن وجود دارد.

مسائل بزرگ را به مسائل کوچک‌تر بشکنید

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

شبه‌دستورالعمل‌نویسی

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

یادگیری مدوام

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

بخوانید  کسب درآمد موبایلی: بررسی راه‌های مختلف تبلیغات در موبایل

با منابع رایگان شروع کنید

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

روی یک چیز تمرکز کنید

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

از الگوهای خوبِ برنامه‌نویسی پیروی کنید

یکی از پراهمیت‌ترین مهارت‌ها در برنامه‌نویسی شناخت الگوهای برنامه‌نویسی است. وقتی حرفه‌ای‌ها توصیه می‌کنند اصل DRY یعنی Don’t Repeat Yourself را در کدنویسی رعایت کنید هدفشان کاهش کدهای تکراری و یکسان است؛ تا اگر روزی خواستید کدهای خود را ریفکتور کنید فقط لازم باشد یک بخش مشخص را تغییر دهید.

نمونۀ این قانون در برنامه‌نویسی اندروید وجود دارد. تمامی رشته‌ها در فایل strings.xml قرار می‌گیرد. بعدها هر وقت خواستید عنوان یکی از برچسب‌های برنامه که در چندین صفحه تکرار شده را عوض کنید کافی است به این فایل مراجعه کرده و نام آن فیلد را تغییر دهید. به همین صورت الگوهای طراحی که بخش عمدۀ آن‌ها مبتنی بر همین اصل DRY هستند معرفی شده‌اند تا با یادگیری درستشان بتوانید کدهای باکیفیت بنویسید.

خودتان را به عادات خوب عادت دهید

برنامه‌نویسی می‌تواند در آینده، تمیز کد بنویسید که همین ابتدا خود را به تمیز کد نوشتن عادت دهد. عادت‌های بد کم کم روی هم انباشته شده و به سختی می‌توان بعدها رهایشان کرد. به عنوان مثال برنامه‌نویسان وب با اجرای اعتبارسنجی‌های HTML/CSS می‌توانند بخش عمدۀ مشکلاتی که باید رفع کنند را بیابند.

روش یادگیری خودتان را بشناسید

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

تلاش برای حل مسئله تا حدی خوب است

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

با شکست‌ها کنار بیایید

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

پیام‌های خطا را لعنت نکنید

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

بخوانید  آموزش گیت - قسمت سوم

برخی زبان‌های برنامه‌نویسی از بقیه راحت‌ترند

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

لازم نیست همه چیز را بدانید

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

عمق بیشتر بهتر از وسعت زیاد است

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

در ابتدا روی اصول و مبانی تمرکز کنید

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

مهارت حل مسئله را تقویت کنید

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

این عادت که برای هر چیز کوچکی بدون اندکی تلاش در اینترنت جستجو کنید اصلاً خوب نیست و به مرور باعث تنبلی ذهن شما خواهد شد. در هنگام جستجو نیز فقط همان قسمتی که با مشکل مواجه شده‌اید را جستجو کنید نه اینکه برای کل مسئله دنبال راهکار باشید. مثلاً می‌خواهید رشته‌ای را برعکس کنید. یکی از مراحلی که در ذهن شما تداعی شده، تبدیل رشته به آرایه‌ای از حروف است. حالا اگر بلد نبودید چطور رشته را به آرایه تبدیل کنید همین را در اینترنت جستجو کنید (Turn a String into an array in Java) نه کل مسئله (Reverse String in Java).

بخوانید  آموزش گیت - قسمت یازدهم

یاد بگیرید چطور جستجو و پژوهش کنید

یکی از مهم‌ترین مهارت‌ها در اینترنت، چگونگی جستجوی اطلاعات است. گوگل حجم زیادی از اطلاعات را ایندکس کرده و این شما هستید که با تکنیک‌های جستجو باید اطلاعات مورد نظر را از این انبار بزرگ استخراج کنید. در هنگام جستجو استفاده از کلمات اضافه را به حداقل برسانید و تعداد کلمات جستجو را با دقت انتخاب کنید. مثلاً برای مرتب سازی یک آرایه در جاوا کافی است سرچ کنید «Sort array java». چندان به گرامر انگلیسی توجه نکنید. گوگل با کلمات کار دارد نه گرامر انگلیسی. افزون بر این‌ها هر موتور جستجو از جمله گوگل عملگرهایی برای جستجو دارد که نتایج را مطابق خواستۀ شما محدود می‌کند.

پروژه‌هایی بسازید که دوست دارید

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

خودتان را فقط با خودتان مقایسه کنید

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

در چالش‌های برنامه‌نویسی شرکت کنید

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

پیروزی‌های خود را جشن بگیرید

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

برنامه‌نویسی واقعاً هیجان‌انگیز است

برنامه‌نویسی با همۀ سختی‌ها، بسیار هیجان‌انگیز و سرگرم‌کننده است. اینکه با دست خودتان محصولی می‌سازید که هزاران یا میلیون‌ها نفر از آن استفاده می‌کنند واقعاً لذت‌بخش است. خانم ساندی مِتز، برنامه‌نویس و نویسندۀ کتاب طراحی شی‌گراء به صورت عملی در روبی نقل قول جالبی دربارۀ برنامه‌نویسی دارد:

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

سید ایوب کوکبی

نویسنده و مترجم...

مطالب مرتبط

آموزش گیت – قسمت یازدهم

۲۷ اردیبهشت ۱۳۹۸

آموزش گیت – قسمت دهم

۲۷ اردیبهشت ۱۳۹۸

1 دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *




    امید

    یکشنبه ۰۱ اردیبهشت ۱۳۹۸

    مثل همیشه عالی بود