پروژه ساختن یکی از روشهای یاد گرفتن مهارتهای کدنویسی است. خیلی از مردم بر این باورند که تنها برنامهنویسان ماهر و باتجربه میتوانند پروژه انجام دهند. اما باید بدانید که برای هر سطح و زبانی، حداقل یک پروژه در دنیا وجود دارد. اگر در گذشته هیچ پروژهای را بر عهده نگرفته باشید، انجام دادن آنها میتواند کمی ترسناک به نظر برسد. امروز در این مقاله با همدیگر تاثیر پروژهها را بررسی خواهیم کرد و با ۸ مرحلهی آسان برای برنامه ریزی پروژه برنامه نویسی آشنا میشویم.
پروژهها چه سودی برای شما خواهند داشت؟
روشهای زیادی در دنیا برای یاد گرفتن کدنویسی وجود دارد، اما با این حال چرا باید از پروژهها برای این کار استفاده کنیم؟ پروژهها مزایای بسیاری را برای روند یادگیری و همچنین تجارت شما به همراه خواهند داشت. شما با انجام دادن پروژهها میتوانید:
- کدنویسی عملی را تمرین کنید: دنبال کردن مباحث و رفع اشکالات میتواند حس خوبی داشته باشد، اما این هدف گاهی اوقات خستهکننده خواهد شد. پروژهها به ما کمک میکنند تا از دنیای تئوری خارج شده و کدنویسی را به شکل عملی یاد بگیریم. مطمئناً ساختن صفر تا صد یک محصول برای همه سرگرمکننده خواهد بود.
- چرخهی زندگی یک توسعهدهنده را تجربه کنید: اکثر دورههای آموزش کدنویسی، توانایی شما را در کد نوشتن بررسی میکند. کدنویسی تنها یک مرحله در روند توسعهی یک برنامهنویس حرفهای است. با انجام دادن پروژهها میتوانید به تجربههای زیادی دست پیدا کنید.
- رزومهی خود را بسازید: استفاده کردن از پروژهها یک روش عالی برای نشان دادن مهارتهای کدنویسی شما به شرکتهاست. تمام کارفرمایان برای استخدام کردن متقاضیان جدید به دنبال مواردی مثل مدیریت زمان، سختکوشی، مهارت رفع اشکال، تجربه و غیره هستند. با انجام دادن پروژهها میتوانید به تمام این موارد دست پیدا کنید. شما با نشان دادن پروژهها به آنها میتوانید تمایز خود را نسبت به سایر رقبا ثابت کنید.
نکته: پروژههای هدفمند شرکت
اگر به یک شرکت یا حوزهی خاص علاقهمند هستید، پروژههای مرتبط با همان شرکت یا حوزه را انجام دهید. به عنوان مثال با انجام دادن یک پروژه که به ردیابی داده مربوط است، شانس شما برای استخدام شدن به عنوان یک آنالیزور داده بیشتر از یک طراح UI است.
چرا باید برای پروژه برنامه ریزی کنیم؟
خیلی از افراد تازهوارد، بدون برنامهریزی مناسب یک پروژه را بر عهده میگیرند. اگر با برنامه پیش نروید، در نهایت خسته شده و تسلیم میشوید. افراد زیادی از حجم پروژه وحشت میکنند و به همین خاطر شروع کردن را دشوار میدانند. توسعهدهندگان باتجربه با داشتن یک برنامهی جامع از این مشکلات جلوگیری میکنند. شما با برنامهریزی میتوانید:
- پروژهها را به بخشهای آسانتر تقسیم کنید
- حد و حدود کامل یک پروژه را مشاهده کنید
- به یاد داشته باشید که کدام مولفهها با یکدیگر تعامل خواهند داشت
- از همپوشانی مولفهها جلوگیری کنید
- اشکالات را پیشبینی کنید
- در محدودههای خاصی مقایسبندی کنید
پروژهها میتوانند یک آزمون دشوار برای تمام توسعهدهندگان باشند؛ مخصوصاً برای کسانی که در زمینه طراحی سیستم مشغول به کار هستند. اگر برنامهی خوبی داشته باشید و به آن پایبند بمانید، در بلندمدت به خودتان کمک بزرگی خواهید کرد. این مهارت بعدها نتیجه خواهد داد و تواناییهای کدنویسی شما را ارتقا خواهد بخشید.
ما در بخش بعدی ۸ مرحلهی مهم را برای برنامهریزی پروژههای کدنویسی بررسی میکنیم.
۱. در مورد پروژهی خود تصمیم بگیرید
همیشه اولین قدم، انتخاب کردن نوع پروژه است. در دنیای وب پیشنهادهای مختلفی متناسب با سطح توانایی افراد وجود دارد. با این حال خودتان هم میتوانید پروژهی دلخواه خود را انتخاب کنید.
شما میخواهید مهارتهای متعددی را یاد بگیرید، پس باید پروژهای را انتخاب کنید که این مهارتها را در اختیار شما قرار خواهد داد. مثلاً اگر میخواهید در کارهای خود سازماندهی بیشتری داشته باشید، میتوانید یک اپلیکیشن برنامهریزی خلق کنید که خلاصهای از فعالیتهای هفتگیتان را هر دوشنبه نشان دهد. موضوعاتی که با یکدیگر همپوشانی داشته باشند، پروژه را برای شما هیجانانگیز خواهند کرد. آنها به شما کمک میکنند تا بتوانید چند مهارت را به طور همزمان یاد بگیرید.
اگر برای شروع نمیتوانید به موضوع خاصی فکر کنید، مشکلاتی که به مراتب با آنها روبرو میشوید را مد نظر قرار دهید. سپس چیزی را طراحی کنید که به شما در حل آن مشکل کمک میکند. مثلاً فرض کنید که در سرویسهای پخش آنلاین زیادی اشتراک خریدهاید و میخواهید بهترین قیمت را برای دیدن فیلمها انتخاب کنید. برای رسیدن به خواستهی خود میتوانید یک اسکرپر وب بسازید تا سایتهای پخش فیلم را به دنبال بهترین قیمتها اسکن کند.
برای پروژههایی که ممکن است در رزومهی شما قرار گیرد، چیزهایی را انتخاب کنید که بیشترین ارتباط را با شغل محبوب شما داشته باشد. اینگونه پروژهها توانایی حرفهای شما را بسیار ارتقا خواهند داد. در این مرحله به مسائلی مثل نحوهی انجام پروژه یا ابزارهای انتخابی برای کار فکر نکنید.
باید پروژههای سرگرمکنندهای را انتخاب کنید. شما زمان زیادی را صرف انجام دادن این پروژه خواهید کرد، پس باید مطمئن شوید که انتخاب شما بهترین گزینه است. پروژه باید شما را هیجانزده و خوشحال کند. اگر ایدههای خاصی در ذهن دارید، از نادیده گرفتن پروژههای معمولی نترسید و به دنبال خلق چیزهای جدید بروید.
۲. پروژههای مشابه را به صورت آنلاین بررسی کنید
وقتی برای انجام دادن پروژهی خود به یک ایده رسیدید، پروژههای مشابه را به صورت آنلاین جستجو کنید. خیلی از توسعهدهندگان برای دریافت بازخورد یا الهام بخشیدن به دیگران، کارهای خود را در فضای اینترنت به اشتراک میگذارند. در جوامع منبع باز، پروژههای بسیاری وجود دارد که میتوانید از آنها دیدن کنید.
برای خودتان یک لیست بسازید و لینکهای مربوط به پروژههای مشابه را در آن قرار دهید. وقتی پروژههای مشابه را بررسی میکنید، ببینید که دیگران با چه اشکالاتی روبرو بودند و از چه روشهایی برای غلبه بر آنها استفاده کردهاند. شما با استفاده از این اطلاعات میتوانید مشکلات احتمالی پروژهی خود را پیشبینی کنید. همچنین میتوانید از راهکارهای آنها برای حل اشکالات خود بهره ببرید.
بعد از پشت سر گذاشتن هر مرحله میتوانید پروژه را با سایر همسالان خود به اشتراک بگذارید و به پیشنهادات آنها برای بهبود پروژه گوش دهید. جوامع آنلاین مشتاقانه به افرادی مثل شما کمک خواهند کرد. به نظرات دیگران گوش دهید و مواردی که باعث پیشرفت بهتر کارها میشود را انتخاب کنید.
آیا کسی را پیدا کردید که پروژههای مشابه با شما را انجام داده باشد؟ با او تماس بگیرید و بخواهید تا راهنمای شما باشد. مربیگری در جوامع آنلاین یک امر معمول است. این افراد میتوانند به شما در رسیدن به راهحلها کمک کنند. آنها بازخوردهای گستردهای را به شما ارائه میدهند و با شما در مورد نکات مربوط به ابزارها یا تکنیکها صحبت میکنند. با کمک آنها میتوانید کارهای خود را به موقع تکمیل کنید.
۳. زبان و ابزار خود را انتخاب کنید
در گام بعدی باید تصمیم بگیرید که از چه زبان و ابزارهایی برای ساخت پروژهی خود استفاده خواهید کرد.
شما باید زبان دلخواه و محبوب خود را انتخاب کنید. اگر در انتخاب زبان تردید دارید، باید موردی را انتخاب کنید که بیشتر به نفع پروژه باشد. بعضی از زبانها برای انجام دادن کارهای خاصی بهتر هستند. میتوانید در لیست زیر، انواع پروژههای رایج را با زبانهای مناسب آنها مشاهده کنید:
- برای ساخت اپلیکیشنهای وب استفاده از JavaScript، PHP، Ruby، HTML/CSS و TypeScript بهتر است.
- برای ساخت اپلیکیشنهای موبایل استفاده از Swift، Java، JavaScript و Object-C بهتر است
- برای ساخت اپلیکیشنهای سازمانی استفاده از Java، C#، C++ و ErLang پیشنهاد میشود.
- برای آنالیز و یادگیری ماشین استفاده از Python، R، Clojure و Julia پیشنهاد میشود.
- برای تجسم دادهها بهتر است از Python، R، Java و C# استفاده کنید.
- برای کلان دادهها بهتر است از Java، Python، R، Scala و Clojure استفاده کنید.
- به منظور ذخیرهسازی دادهها هم استفاده از SQL، C#، Java و Python را به شما پیشنهاد میکنم.
شما باید برای کد نوشتن یک ویرایشگر متن خوب را انتخاب کنید. به دنبال ویرایشگری باشید که قابلیتهایی مانند هایلایت کردن سینتکس، سیستمهای مدیریت فایل، یافتن و جایگزین کردن توابع و غیره را در اختیار شما قرار میدهد. شما قطعاً ویرایشگر خودتان را ترجیح میدهید اما امتحان کردن چیزهای جدید ضرری ندارد.
در لیست پایین چند نمونه از محبوبترین ویرایشگرهای متن را برای شما آماده کردهام:
- Sublime Text: این ویرایشگر با ظاهر خوب خود دارای تمام ابزارهای مورد نیاز ماست. استفاده از آن برای افراد مبتدی آسان بوده اما قابلیت انجام کارهای بسیار بزرگ را نیز داراست. افراد باتجربه نیز میتوانند از پتانسیل بالای این ویرایشگر بهرهمند شوند.
- Notepad++: این یک ویرایشگر متن منبع باز برای ویندوز است. استفاده از این ویرایشگر برای مبتدیان آسان بوده و افراد باتجربه نیز میتوانند از آن استفاده کنند.
- Vim: این ویرایشگر محبوب و بسیار بینظیر است. شما به منظور ایجاد یک تنظیمات کنترل عالی، میتوانید هر یک از میانبرها را در سیستم مبتنی به کیبورد آن ویرایش کنید.
شاید شما استفاده کردن از IDE را ترجیح دهید. این موضوع هیچ ایرادی ندارد چون باید گزینهای را انتخاب کنید که متناسب با نیازهای شما باشد.
یک سری از پروژهها به فریمورکهای نرمافزاری احتیاج دارند. این فریمورکها روی زبانهای برنامهنویسی پیاده میشوند تا روند توسعه بخشیدن به وظایف خاصی را آسانتر کند. در اینجا فهرستی از فریمورکهای محبوب و مورد استفاده در زمینههای مختلف برنامهنویسی آورده شده است:
- برای توسعهی وب از فریمورکهایی مانند Angular، React، Node.js، Django و Laravel استفاده میشود.
- برای توسعه موبایل از فریمورک هایی مثل Flutter، React Native و Xamarin استفاده میشود.
- برای علم دادهها از فریمورکهایی مانند Apache Spark و Pytorch استفاده خواهیم کرد.
استفاده از فریمورکها یک امر طبیعی در بین تیمهای توسعه است. پروژهها یک روش عالی برای ثابت کردن مهارت شما در فریمورکهای مورد نظر شرکتهاست. به دنبال فریمورکهایی بگردید که در توضیحات استخدامی مربوط به شرکت گفته شده است.
۴. تمام امکانات و موجودیتها (Entities) را فهرست کنید
در مرحلهی بعدی باید یک لیست از تمام امکانات برنامهی خود تهیه کنید. قابلیتهای ضروری و مفیدی که باعث بهبود پروژه میشود را در لیست قرار دهید. به عنوان مثال میخواهید یک صفحه وب با امکان ساخت اکانت بسازید. به همین خاطر باید قابلیتهایی مثل لاگین کردن، تنظیم و تغییر پسورد را به وجود بیاورید. در اینجا میتوانید اضافه کردن تصویر به پروفایل را یک قابلیت غیرضروری در نظر بگیرید.
وقتی از تمام ویژگیها و قابلیتها فهرست تهیه کردید، آنها را با اولویتبندی به دو بخش ضروری و غیرضروری تقسیم کنید. با قرار دادن تمام موارد ضروری در لیست، به یک ساختار اصلی دست پیدا خواهیم کرد. حالا میتوانید موارد غیرضروری را متناسب با سلیقه و اولویت خود به این ساختار اضافه کنید.
موجودیتهایی که در برنامهی شما مشارکت دارند را به لیست خود اضافه کنید. برای انجام این کار ابتدا به ویژگیها نگاه کرده و از خودتان بپرسید که چه موجودیتهایی برای تحقق این امر لازم هستند. اگر این روشها را برای هر تابع خود تکرار کنید، تمام موجودیتهای حاضر در برنامه را پیدا خواهید کرد.
به عنوان مثال در ساخت یک صفحه وب دو موجودیت وجود دارد. این موجودیتها همان کاربر و سرور وب است.
۵. از روی ساختار پروژه یک نقشه بسازید
الان باید یک فلوچارت از پروژهی نهایی خود درست کنیم. برای اینکه راحتتر این کار را انجام دهید، بهتر است از یادداشتهای چسبی یا دیجیتالی استفاده کنید چون با این کار یادداشتها را بهتر جا به جا خواهید کرد. هر قابلیت را در یک بخش قرار دهید و به تخته بچسبانید.
سپس تمام قابلیتها و ویژگیها را بررسی کنید و موارد مشابه را به یکدیگر وصل کنید. تمام مسیرهای انشعابی موجود در برنامه را مشخص کنید. موجودیتهای دخیل در هر ویژگی را به بخش قابلیتها اضافه کنید. این فلوچارت حکم نقشه را برای ساختار برنامهی شما ایفا خواهد کرد.
وقتی فلوچارت خود را تهیه کردید، تمام ورودیها مختلفی که ممکن است کاربر انجام دهد را در کادرهای رنگی مختلف بنویسید. تمام ورودیها را به وسیلهی برنامه ردیابی کنید. سپس این اطلاعات را مستندسازی کنید. اگر ورودی پشتیبانی نشدهای پیدا کردید، ویژگیهای مورد نیاز آن را خلق کنید.
در اینجا یک نمونه از فلوچارت برنامه آورده شده است:
در اینجا ما ویژگیهایی را برای مشاهده سایر پروفایلها، دادن درخواست دوستی و یا بلاک کردن اضافه کردهایم. وقتی مشغول به وجود آوردن ساختار برنامه هستید، از اضافه کردن ویژگیهای جدید نترسید.
۶. موجودیتها را برای راهاندازی علامتگذاری کنید
به لیست قابلیتها و موجودیتها نگاه کنید. به موجودیتهایی دقت کنید که برای راهاندازی آنها باید از ابزارهای دیگری استفاده کنید. این موجودیتها و ابزارهای مربوطه را یادداشت کنید. شما بعداً نیز میتوانید موارد ذکر شده در این یادداشت را تغییر دهید. بنابراین فعلاً فقط اولین ابزارهایی که به ذهنتان میرسد را در لیست قرار دهید.
به عنوان مثال سرور سایت جزو موجودیتهای حاضر در یک پروژه وبسایت به حساب میآید. شما قبل از اینکه از این سرور استفاده کنید، ابتدا باید آن را بیرون از برنامه راهاندازی کنید. سپس برای سادهتر کردن کارها تصمیم میگیرید از یک سرور مجازی استفاده کنید. در اینترنت جستجو میکنید و میفهمید که Apache میتواند این قابلیت را در اختیار شما قرار دهد. شما Apache را در موجودیت سرور سایت نوشته و گزینهی «دسترسی به سرور مجازی» را به عنوان یک ویژگی ضروری در نظر میگیرید.
۷. شبهکد را به دیاگرام خود اضافه کنید
حالا باید به نحوهی پیادهسازی هر ویژگی در فلوچارت UML دقت کنیم. تمام قابلیتها و ویژگیها را به دقت بررسی کرده و ساختار برنامهنویسی لازم برای آن را بنویسید. سپس به نحوهی اتصال ویژگیها به یکدیگر نگاه کنید. ورودیهای مختلف استفاده شده و ویژگیهای متصل به یکدیگر را به خوبی مد نظر قرار دهید.
مثلاً شاید ما از آبجکتها برای نشان دادن کاربرها، توابع برای تنظیم کردن کاربران جدید و یک جدول Hash برای مرتبسازی کاربران استفاده کنیم. در این مرحله لازم نیست نگران انتخابهای بهینه باشید. فقط به غرایز برنامهنویسی خود اعتماد کنید. شبهکد به شما کمک میکند تا بدون در نظر گرفتن محدودیتهای سینتکس، به ساخت راهحلهای کاربردی برای برنامه فکر کنید. اگر بعد از گذشت مدتی از برخی تصمیمات خود ناراضی بودید، میتوانید هنگام کدنویسیِ ویژگیهای مربوطه آن تصمیمات را تغییر دهید.
بیش از حد درگیر تحقیقات نشوید. اگر نمیدانید که چگونه باید شبهکد را به یک ویژگی اضافه کنید، یک محدودیت زمانی را برای پیدا کردن ساختار برنامهنویسی لازم تعیین کنید. تحقیقات سریع میتواند به شما کمک کند تا نحوهی عملکرد یک ساختار خاص را درک کنید. البته هنگام جستجوی یک سینتکس جدید، ممکن است از مسیر اصلی خود منحرف شوید.
ما فلوچارت خود را با استفاده از شبهکد تقویت کردیم و شما میتوانید آن فلوچارت را در تصویر پایین مشاهده کنید:
۸. برنامهریزی کنید
بالاخره به مرحلهی آخر رسیدیم، در این مرحله باید برای تکمیل کردن هر ویژگی یک مهلت زمانی تعیین کنید. ابتدا ویژگیها و قابلیتهای بسیار ضروری را پیادهسازی کنید. سپس قابلیتهای مرتبط با این ویژگیهای ضروری را در پروژه لحاظ کنید. در نهایت شما به یک جدول زمانی از تمام ویژگیهای ضروری دست پیدا خواهید کرد. میتوانید ویژگیهای غیرضروری را بعد از آخرین قابلیت ضروری به برنامه اضافه کنید.
میزان دشوار بودن هر ویژگی را ارزیابی کنید و مهلتهای زمانی را مطابق با همان مشخص کنید. مهلتهای زمانی خود را عاقلانه تعیین کنید. انتخاب کردن یک تاریخ برای انجام دادن هر بخش، امری ضروری است و به شما کمک میکند تا در مسیر درست حرکت کنید. با این کار میتوانید کارهای خود را مطابق با یک دورهی مشخص تقسیم کنید.
این موارد را وارد تقویم خودتان کنید. مسئولیتهای خودتان را به یاد داشته باشید. هر هفته یک زمان کاری مشخص برای انجام دادن پروژه تعیین کنید. اگر کارها را مطابق یک روال همیشگی انجام دهید، پیشرفت آسانتری را مشاهده خواهید کرد.
همیشه با داشتن یک برنامه میتوانید از کارهای آینده خود مطلع باشید. شما باید پایبند به برنامه باشید و از گرفتن تصمیمات خودسرانه دوری کنید. پروژه را طبق برنامه پیش ببرید.
اگر نگران پایبند بودن به برنامه خود هستید، میتوانید اهداف تکمیلی خود را به دوستان و همکارانتان بگویید. خیلی از توسعهدهندگان پروژههای خود را به صورت آنلاین پخش میکنند تا کارهای خود را به موقع انجام دهند. آنها احساس میکنند اگر کسی از مهلت زمانی آنها مطلع باشد، کار کردن راحتتر خواهد شد.
جمعبندی
امروز در کنار هم از اهمیت پروژههای کدنویسی مطلع شدیم و ۸ مرحله برای برنامهریزی یک پروژه را شناختیم. امیدوارم این نکات به شما کمک کند تا در انجام پروژههای کدنویسی بعدی موفقتر عمل کنید. اگر در این راه گیر کردید، هرگز تسلیم نشوید چون این اتفاق حتی برای بهترین توسعهدهندگان نیز اتفاق خواهد افتاد.