گام اول :
یکی از مشکلاتی که بسیاری از علاقهمندان به برنامهنویسی با آن مواجه هستند، عدم اطلاع از یک نقشهی راه درست است. وجود یک نقشهی راه خوب باعث میشود که شما تا حد زیادی در وقت و انرژیتان صرفهجویی و مراحل یادگیری را بهتر و سریعتر طی کنید. در ادامه توضیح میدهیم که چطور و از کجا باید برنامهنویسی را شروع کنید.
برنامهنویسان حرفهای و نیمهحرفهای معمولا با سوالات تکراری و زیادی از طرف علاقهمندان روبهرو میشوند. برخی از آنها را در ادامه مرور میکنیم:
بهترین زبان برنامهنویسی چیست؟
چقدر طول میکشد تا یه برنامهنویس خوب بشویم؟
میزان درآمد یک برنامهنویس چقدر است؟
تا چندسالگی میتوانم برنامهنویسی کنم؟
برای برنامهنویس شدن حتما باید رشتهی دانشگاهیام کامپیوتر باشد؟
اساسا چرا برنامهنویسی؟!
قبل از هر چیزی با خودتان صادق باشید. چه چیزی باعث شد که تمایل پیدا کنید برنامهنویسی را یاد بگیرید؟ درآمد بالای برنامهنویسان، علاقه به کامپیوتر و مباحث پیشرفتهی آن، وجههی شخصیتی که برنامهنویسان در اجتماع دارند، نیاز به شغلی که بتوانید در خانه بمانید و پول در بیاورید، تغییر جهان یا حتی به فعلیت رساندن ایدههایتان. اینها همه دلایل بسیار خوبی برای شروع یادگیری برنامهنویسی هستند ولی شاید دلایل خوبی برای ادامه نباشند.
اگر حوصلهی درگیر شدن با مسائل پیچیده را ندارید از شما میخواهیم که دستتان را به کد آلوده نکنید و به سراغ مهارتهای دیگری بروید.
برنامهنویسی نیاز به عشق، علاقه و پشتکار دارد. زندگی یک برنامهنویس با خطاها و انجام نشدن و زیر سوال رفتن مواردی که قبلا یاد گرفته، عجین است. در هر پروژهای برنامهنویسان میزان زیادی از وقتشان را برای رفع خطاهای موجود در برنامهی نوشتهشده صرف میکنند و شاید روزها طول بکشد تا بفهمند مشکل کار تنها از یک غلط املایی بوده است یا هر چیز دیگری. پس به عنوان یک برنامهنویس نیاز به این خواهید داشت که واقعا صبور و باپشتکار باشید. باید قبول کنیم که برنامهنویسی کار سادهای نیست. همین ساده نبودن برنامهنویسی، آن را خاص کرده است. نیازی نیست حتما در رشتهی کامپیوتر دارای تحصیلات باشید یا حتما سنتان بالای ۲۰ و کمتر از ۳۵ باشد. یا حتی نیاز نیست انسان بسیار باهوشی باشید یا ریاضیتان خیلی قوی باشد. ولی اگر همهی اینها را داشته باشید، ممکن است در کنار دیگر برنامهنویسان از جایگاه بهتری برخوردار شوید. اگر پشتکار زیادی در یادگیری ندارید و همچنین اصلا حوصلهی درگیر شدن با مسائل سخت و پیچیده را ندارید از شما میخواهیم که دستتان را به کد آلوده نکنید و به سراغ مهارتهای دیگری بروید.
با شرکت در یک دورهی برنامهنویسی یا خواندن یک کتاب جامع، شما یک برنامهنویس خواهید بود؛ برنامهنویس به این معنی که میتوانید به مطالب گفتهشده در آن کتاب یا آن دوره عمل کنید و بتوانید آن پروژهها را از نو بنویسید. برای یادگیری اولیهی برنامهنویسی زمان زیادی نیاز ندارید؛ ولی برای آنکه بتوانید آنچه را در ذهن شما یا مشتریتان است انجام دهید به تجربههای زیادی نیاز دارید. در واقع، شما به تخصصهای زیادی نیاز خواهید داشت که بسیاری از آنها در هیچ کتاب یا آموزشگاهی ارایه نمیشوند.
بعد از اینکه متوجه شدید که راه سادهای در پیش ندارید و درصورتیکه همچنان دوست دارید برنامهنویس شوید، باید تکلیف خود را روشن کنید و برای آیندهتان تصمیم درستی بگیرید. این تصمیم آیندهی شما را تغییر خواهد داد. پس باید با خود صادق باشید و از روی احساس تصمیم نگیرید.
یکی از مشکلاتی که بسیاری از علاقهمندان به برنامهنویسی با آن مواجه هستند، عدم اطلاع از یک نقشهی راه درست است. وجود یک نقشهی راه خوب باعث میشود که شما تا حد زیادی در وقت و انرژیتان صرفهجویی و مراحل یادگیری را بهتر و سریعتر طی کنید. در ادامه توضیح میدهیم که چطور و از کجا باید برنامهنویسی را شروع کنید.
برنامهنویسان حرفهای و نیمهحرفهای معمولا با سوالات تکراری و زیادی از طرف علاقهمندان روبهرو میشوند. برخی از آنها را در ادامه مرور میکنیم:
بهترین زبان برنامهنویسی چیست؟
چقدر طول میکشد تا یه برنامهنویس خوب بشویم؟
میزان درآمد یک برنامهنویس چقدر است؟
تا چندسالگی میتوانم برنامهنویسی کنم؟
برای برنامهنویس شدن حتما باید رشتهی دانشگاهیام کامپیوتر باشد؟
اساسا چرا برنامهنویسی؟!
قبل از هر چیزی با خودتان صادق باشید. چه چیزی باعث شد که تمایل پیدا کنید برنامهنویسی را یاد بگیرید؟ درآمد بالای برنامهنویسان، علاقه به کامپیوتر و مباحث پیشرفتهی آن، وجههی شخصیتی که برنامهنویسان در اجتماع دارند، نیاز به شغلی که بتوانید در خانه بمانید و پول در بیاورید، تغییر جهان یا حتی به فعلیت رساندن ایدههایتان. اینها همه دلایل بسیار خوبی برای شروع یادگیری برنامهنویسی هستند ولی شاید دلایل خوبی برای ادامه نباشند.
اگر حوصلهی درگیر شدن با مسائل پیچیده را ندارید از شما میخواهیم که دستتان را به کد آلوده نکنید و به سراغ مهارتهای دیگری بروید.
برنامهنویسی نیاز به عشق، علاقه و پشتکار دارد. زندگی یک برنامهنویس با خطاها و انجام نشدن و زیر سوال رفتن مواردی که قبلا یاد گرفته، عجین است. در هر پروژهای برنامهنویسان میزان زیادی از وقتشان را برای رفع خطاهای موجود در برنامهی نوشتهشده صرف میکنند و شاید روزها طول بکشد تا بفهمند مشکل کار تنها از یک غلط املایی بوده است یا هر چیز دیگری. پس به عنوان یک برنامهنویس نیاز به این خواهید داشت که واقعا صبور و باپشتکار باشید. باید قبول کنیم که برنامهنویسی کار سادهای نیست. همین ساده نبودن برنامهنویسی، آن را خاص کرده است. نیازی نیست حتما در رشتهی کامپیوتر دارای تحصیلات باشید یا حتما سنتان بالای ۲۰ و کمتر از ۳۵ باشد. یا حتی نیاز نیست انسان بسیار باهوشی باشید یا ریاضیتان خیلی قوی باشد. ولی اگر همهی اینها را داشته باشید، ممکن است در کنار دیگر برنامهنویسان از جایگاه بهتری برخوردار شوید. اگر پشتکار زیادی در یادگیری ندارید و همچنین اصلا حوصلهی درگیر شدن با مسائل سخت و پیچیده را ندارید از شما میخواهیم که دستتان را به کد آلوده نکنید و به سراغ مهارتهای دیگری بروید.
با شرکت در یک دورهی برنامهنویسی یا خواندن یک کتاب جامع، شما یک برنامهنویس خواهید بود؛ برنامهنویس به این معنی که میتوانید به مطالب گفتهشده در آن کتاب یا آن دوره عمل کنید و بتوانید آن پروژهها را از نو بنویسید. برای یادگیری اولیهی برنامهنویسی زمان زیادی نیاز ندارید؛ ولی برای آنکه بتوانید آنچه را در ذهن شما یا مشتریتان است انجام دهید به تجربههای زیادی نیاز دارید. در واقع، شما به تخصصهای زیادی نیاز خواهید داشت که بسیاری از آنها در هیچ کتاب یا آموزشگاهی ارایه نمیشوند.
بعد از اینکه متوجه شدید که راه سادهای در پیش ندارید و درصورتیکه همچنان دوست دارید برنامهنویس شوید، باید تکلیف خود را روشن کنید و برای آیندهتان تصمیم درستی بگیرید. این تصمیم آیندهی شما را تغییر خواهد داد. پس باید با خود صادق باشید و از روی احساس تصمیم نگیرید.
گام دوم :
کدام زبان برنامهنویسی؟
زبانهای برنامهنویسی زیادی در دنیا وجود دارند که قاعدتا قادر نیستید همهی آنها را یاد بگیرید. یکسری از زبانهای برنامهنویسی «چندسکویی» (Cross-Platform) هستند. یعنی با آنها میتوان برای بسترهای متفاوتی برنامهنویسی کنید. مانند زبان برنامهنویسی «جاوا» (Java) که به کمک آن میتوانید برای سیستم عامل اندروید، وب، ویندوز، لینوکس و مک برنامهنویسی کنید. ولی برنامهنویسی برای بسترهای مختلف به سادگیِ حرفزدن در مورد آن نیست و تقریبا برای هر بستر نیاز به مهارتهای خاصی است. اکثر زبانهای برنامهنویسی یکسری اصول عمومی دارند که معمولا در زبانهای مختلف تفاوت آنها بسیار کم است. مثلا شرطها در اکثر زبانهای رایج وجود دارند. بنابراین در ابتدای کار به شما پیشنهاد میکنم که مقدمات کلی و مفاهیم برنامهنویسی را یاد بگیرید و روی یک زبان خاص وسواس نداشته باشید چرا که زبان برنامه نویسی صرفا یک ابزار برای پیاده سازی ایده های شما و یا کارفرما می باشد...
خوشبختانه معمولا منابع یادگیری بهصورت رایگان یا با صرف هزینهی بسیار کم در دسترس هستند. با جستوجو در گوگل به سایتهای زیادی خواهید رسید که به آموزش تخصص مورد نظرتان میپردازند. سایتهایی مثل «کد آکادمی» (Code Academy)، «کورسرا» (Coursera) و «خان آکادمی» (Khan Academy) منابع بسیار خوبی هستند
کدام زبان برنامهنویسی؟
زبانهای برنامهنویسی زیادی در دنیا وجود دارند که قاعدتا قادر نیستید همهی آنها را یاد بگیرید. یکسری از زبانهای برنامهنویسی «چندسکویی» (Cross-Platform) هستند. یعنی با آنها میتوان برای بسترهای متفاوتی برنامهنویسی کنید. مانند زبان برنامهنویسی «جاوا» (Java) که به کمک آن میتوانید برای سیستم عامل اندروید، وب، ویندوز، لینوکس و مک برنامهنویسی کنید. ولی برنامهنویسی برای بسترهای مختلف به سادگیِ حرفزدن در مورد آن نیست و تقریبا برای هر بستر نیاز به مهارتهای خاصی است. اکثر زبانهای برنامهنویسی یکسری اصول عمومی دارند که معمولا در زبانهای مختلف تفاوت آنها بسیار کم است. مثلا شرطها در اکثر زبانهای رایج وجود دارند. بنابراین در ابتدای کار به شما پیشنهاد میکنم که مقدمات کلی و مفاهیم برنامهنویسی را یاد بگیرید و روی یک زبان خاص وسواس نداشته باشید چرا که زبان برنامه نویسی صرفا یک ابزار برای پیاده سازی ایده های شما و یا کارفرما می باشد...
خوشبختانه معمولا منابع یادگیری بهصورت رایگان یا با صرف هزینهی بسیار کم در دسترس هستند. با جستوجو در گوگل به سایتهای زیادی خواهید رسید که به آموزش تخصص مورد نظرتان میپردازند. سایتهایی مثل «کد آکادمی» (Code Academy)، «کورسرا» (Coursera) و «خان آکادمی» (Khan Academy) منابع بسیار خوبی هستند
گام سوم :
توسعه و مشارکت در برنامهها
یکی از کارهای پسندیدهای که برنامهنویسان حرفهای انجام میدهند انتشار کدهای نوشتهشدهشان در محیط اینترنت است. این کار باعث میشود که در ابتدا برنامهنویسان مبتدی بتوانند تجربیاتی از کدهای آنها کسب کنند. برنامهنویسان حرفهای و نیمهحرفهای هم میتوانند برنامههایشان را از این طریق توسعه داده و آنها را به برنامههای بهتری تبدیل کنند. سایت «گیتهاب» (GitHub) یکی از وبسایتهای بسیار معروف در این زمینه است که با جستوجو در آن میتوانید پروژههای انجام شده بهوسیلهی سایر برنامهنویسان را مشاهده و دانلود کنید. شما میتوانید برنامهها را توسعه دهید و دوباره منتشر کنید. حتی میتوانید به برنامهای قابلیت جدیدی اضافه کنید.
اگر تا به اینجای کار هنوز پروژهای برای دوستان یا آشنایانتان انجام ندادهاید و کمی استرس دارید که شاید از پس پروژههای تجاری برنیایید، به شما پیشنهاد میکنم با جستوجوی ساده در گوگل (البته به زبان انگلیسی) در انجام پروژهای داوطلبانه شرکت کنید. پروژههای داوطلبانه معمولا بهوسیلهی چند نفر با تخصصهای مشابه و شاید هم متفاوت انجام میشوند و از آنها درآمدی عاید شما نمیشود. برنامهنویسی برای بیمارستانها، خیریهها و سایر موسسات غیرانتفاعی از نمونه پروژههای داوطلبانه هستند که در انتهای پروژه شما چند دوست خارجی، مقدار زیادی اعتمادبهنفس و یک نمونه کار دارید.
توسعه و مشارکت در برنامهها
یکی از کارهای پسندیدهای که برنامهنویسان حرفهای انجام میدهند انتشار کدهای نوشتهشدهشان در محیط اینترنت است. این کار باعث میشود که در ابتدا برنامهنویسان مبتدی بتوانند تجربیاتی از کدهای آنها کسب کنند. برنامهنویسان حرفهای و نیمهحرفهای هم میتوانند برنامههایشان را از این طریق توسعه داده و آنها را به برنامههای بهتری تبدیل کنند. سایت «گیتهاب» (GitHub) یکی از وبسایتهای بسیار معروف در این زمینه است که با جستوجو در آن میتوانید پروژههای انجام شده بهوسیلهی سایر برنامهنویسان را مشاهده و دانلود کنید. شما میتوانید برنامهها را توسعه دهید و دوباره منتشر کنید. حتی میتوانید به برنامهای قابلیت جدیدی اضافه کنید.
اگر تا به اینجای کار هنوز پروژهای برای دوستان یا آشنایانتان انجام ندادهاید و کمی استرس دارید که شاید از پس پروژههای تجاری برنیایید، به شما پیشنهاد میکنم با جستوجوی ساده در گوگل (البته به زبان انگلیسی) در انجام پروژهای داوطلبانه شرکت کنید. پروژههای داوطلبانه معمولا بهوسیلهی چند نفر با تخصصهای مشابه و شاید هم متفاوت انجام میشوند و از آنها درآمدی عاید شما نمیشود. برنامهنویسی برای بیمارستانها، خیریهها و سایر موسسات غیرانتفاعی از نمونه پروژههای داوطلبانه هستند که در انتهای پروژه شما چند دوست خارجی، مقدار زیادی اعتمادبهنفس و یک نمونه کار دارید.
يكي از مهمترين تكنولوژي هايي كه برای آينده پيش بيني ميشود، اين است كه بتوان مغز انسان را در يك كامپيوتر كپي كرد! يعني رشته بيت هايي را از مغز آدمي روي كامپيوتر ايجاد كرد كه مي تواند بعد از مرگ او را زنده نگه دارد
حالا، آیندهای را تصور کنید که در آن، ذهنتان هرگز نمیمیرد. وقتی جسمتان رو به افول میگذارد، ماشینی ذهن شما را با جزئیات دقیق اسکن میکند تا سیمکشی منحصربهفرد آن را ثبت کند. یک سیستم کامپیوتری هم به کمک این دادهها، ذهن شما را شبیهسازی میکند. درست مانند فونوگراف، این سیستم ساختار فیزیکی نالازم را میزداید و ماهیت و جوهر الگوها را حفظ میکند و به این ترتیب، نسخهی دومی از شما ایجاد میشود که همان خاطرات، احساسات، طرز فکر و روش تصمیمگیری شما را دارد. نسخهای از شما که به سادگی کپی کردن یک فایل، میتواند روی سختافزارهای کامپیوتری قرار بگیرد.
این نسخهی دوم شما میتواند در جهانی شبیهسازی شده زندگی کند و به زحمت تفاوت آن جهان را با جهان واقعی حس کند. میتوانید در قالب این نسخهی دیجیتال در خیابانهای یک شهر شبیهسازی شده، قدم بزنید و وزیدن نسیمی خنک را احساس کنید، در کافهای غذا بخورید، با آدمهای شبیهسازی شدهی دیگر حرف بزنید، بازی کنید، به سینما بروید و از بودنتان لذت ببرید. ضمن اینکه درد و بیماری را هم میشود از این جهان شبیهسازی شده حذف کرد. اگر هم همچنان به جهان واقعی بیرون از شبیهسازی خودتان علاقمند باشید، میتوانید از طریق اسکایپ در جلسههای کاری شرکت کنید یا با اعضای خانوادهتان حرف بزنید.
چند سال پیش «دیمیتری ایتسکوف» میلیاردر روس، با اعلام اینکه میخواهد ذهنش را به یک ربات منتقل کند، و از این طریق به جاودانگی برسد خبر ساز شد. استیون هاوکینگ فقيد هم پیشبینی کرده بود که حیات شبیهسازی شده پس از مرگ از نظر فنی امکانپذیر خواهد شد.
پرسش بسياري از دانشمندان در این سالها این بوده است که با توجه به آنچه درباره مغز میدانیم، آیا واقعا میتوانیم ذهن کسی را روی یک کامپیوتر بارگذاری کنیم؟ شاید بهترین پاسخ این باشد که بله، تقریبا میشود مطمئن بود.
حال تصور کنیم که ذهن انسان به یک کامپیوتر آپلود شده باشد. آیا او بعد از مرگ متوجه این موضوع خواهد شد؟ آیا خواهد فهمید که مرده و در یک ماشین دیجیتالی به باقی حیات خود ادامه میدهد؟ سوال اساسیتر این است که آیا میفهمد زنده شده است و یک انسان بوده یا اینکه فکر میکند از ابتدا مثلا یک ماشین فکس بوده است؟
حالا، آیندهای را تصور کنید که در آن، ذهنتان هرگز نمیمیرد. وقتی جسمتان رو به افول میگذارد، ماشینی ذهن شما را با جزئیات دقیق اسکن میکند تا سیمکشی منحصربهفرد آن را ثبت کند. یک سیستم کامپیوتری هم به کمک این دادهها، ذهن شما را شبیهسازی میکند. درست مانند فونوگراف، این سیستم ساختار فیزیکی نالازم را میزداید و ماهیت و جوهر الگوها را حفظ میکند و به این ترتیب، نسخهی دومی از شما ایجاد میشود که همان خاطرات، احساسات، طرز فکر و روش تصمیمگیری شما را دارد. نسخهای از شما که به سادگی کپی کردن یک فایل، میتواند روی سختافزارهای کامپیوتری قرار بگیرد.
این نسخهی دوم شما میتواند در جهانی شبیهسازی شده زندگی کند و به زحمت تفاوت آن جهان را با جهان واقعی حس کند. میتوانید در قالب این نسخهی دیجیتال در خیابانهای یک شهر شبیهسازی شده، قدم بزنید و وزیدن نسیمی خنک را احساس کنید، در کافهای غذا بخورید، با آدمهای شبیهسازی شدهی دیگر حرف بزنید، بازی کنید، به سینما بروید و از بودنتان لذت ببرید. ضمن اینکه درد و بیماری را هم میشود از این جهان شبیهسازی شده حذف کرد. اگر هم همچنان به جهان واقعی بیرون از شبیهسازی خودتان علاقمند باشید، میتوانید از طریق اسکایپ در جلسههای کاری شرکت کنید یا با اعضای خانوادهتان حرف بزنید.
چند سال پیش «دیمیتری ایتسکوف» میلیاردر روس، با اعلام اینکه میخواهد ذهنش را به یک ربات منتقل کند، و از این طریق به جاودانگی برسد خبر ساز شد. استیون هاوکینگ فقيد هم پیشبینی کرده بود که حیات شبیهسازی شده پس از مرگ از نظر فنی امکانپذیر خواهد شد.
پرسش بسياري از دانشمندان در این سالها این بوده است که با توجه به آنچه درباره مغز میدانیم، آیا واقعا میتوانیم ذهن کسی را روی یک کامپیوتر بارگذاری کنیم؟ شاید بهترین پاسخ این باشد که بله، تقریبا میشود مطمئن بود.
حال تصور کنیم که ذهن انسان به یک کامپیوتر آپلود شده باشد. آیا او بعد از مرگ متوجه این موضوع خواهد شد؟ آیا خواهد فهمید که مرده و در یک ماشین دیجیتالی به باقی حیات خود ادامه میدهد؟ سوال اساسیتر این است که آیا میفهمد زنده شده است و یک انسان بوده یا اینکه فکر میکند از ابتدا مثلا یک ماشین فکس بوده است؟
در چند پست آینده قصد داریم 35 عادت بد در برنامه نویسی رو که برای موفقیت در این زمینه باید ازشون اجتناب کنیم رو بررسی کنیم...
@cafeamoozesh
@cafeamoozesh
ترک عادت های بد همیشه دشواره و حتی سخت تر اینه که ندونیم کدام کار باعث تحلیل کار ما می شه و اگر بدونیم و به اون اهمیت ندیم از همه بدتره.
به عنوان یک برنامه نویس بسیاری از کار های غلط را نه تنها در حوزه ی کدزنی بلکه در کارتیمی نیز دیده ام. خود من هم بسیاری از این کار های اشتباه را انجام داده ام. در اینجا 35 مورد از این عادت های برنامه نویسی غلط رو در 4 دسته ی: 1-سازماندهی کد
2-کار گروهی
3-نوشتن کد
4-تست و نگهداری
بررسی می کنیم.
@cafeamoozesh
به عنوان یک برنامه نویس بسیاری از کار های غلط را نه تنها در حوزه ی کدزنی بلکه در کارتیمی نیز دیده ام. خود من هم بسیاری از این کار های اشتباه را انجام داده ام. در اینجا 35 مورد از این عادت های برنامه نویسی غلط رو در 4 دسته ی: 1-سازماندهی کد
2-کار گروهی
3-نوشتن کد
4-تست و نگهداری
بررسی می کنیم.
@cafeamoozesh
سازماندهی کد
1.گفتن اینکه "بعدا درست می کنم"
عادت به تعویق انداختن تعمیر کد ها از مشکل در اولویت ها نیست. سازماندهی موضوعات پی در پی ممکن است یک پروسه را ایجاد کند، اما شما نیاز به راهی برای پیگیری موضوعات کوچک تری که به وجود می آید، دارید. اضافه کردن کامنت های "TODO" راهی سریع برای اطمینان از اینکه چیزی را از دست نمی دهید، می باشد.
2. پا فشاری روی یک راه حل یک خطی
حساسیت روی نوشتن کد های کارآمد و قطعه کدهای زیبا، یک ویژگی مشترک بین برنامه نویسان است. این کار مانند حل پازل است و مانند پیدا کردن یک تابع ترکیبی و عبارات منظم است که 20 خط کد را به 2 یا 3 خط تبدیل می کند. متاسفانه این کار همیشه منجر به کدهای خوانا نمی شود که این موضوع نتیجه ی مهم تری است. ابتدا کد خود را دسترس پذیر کنید سپس آن را هوشمندانه کنید.
3. بهینه سازی های بیهوده
یکی از موارد دیگری که بیهوده تلاش خود را صرف آن می کنیم، بهینه سازی است. کاهش اندازه ی سایز به اندازه ی چند بایت عالی به نظر می رسد اما آیا gzipاین کار را انجام نمی دهد؟ و آیا request ها مهم تر نیستند؟ آدرس ها را در انتهای پروژه بهینه سازی کنید زیرا اغلب پیش نیازها تغییر خواهد کرد و زمان شما هدر می رود.
4. متقاعد کردن خود با این موضوع که استایل دهی خیلی مهم نیست
چیزی که طی سالیان های زیاد از بررسی کدهای دیگران یاد گرفتم روند استایل دهی به کدهایشان می باشد که اکثر توسعه دهندگان مایل هستند که آن را به تاخیر بیندازند. برای کدنویس های بی تجربه با گذر زمان متوجه خواهند شد که استایل داشتن کد میتواند تاثیر خوبی داشته باشد. اما زمانی که کد کیفیت خود را از دست می دهد یک مشکل کوچک، تمام پروژه را با مشکل روبرو می کند. درباره ی بهترین روش ها هرچند اگر بی اهمیت به نظر برسند سخت گیرانه عمل کنید. بررسی کد و ابزار های linting را تنظیم کنید تا فرصت داشته باشید درباره ی موضوعات مهم تر فکر کنید.
5.لاپوشانی کردن
با گرفتن یا نادیده گرفتن exception ها یا با استفاده از کتابخانه هایی که خطاها را گزارش نمی دهند (مانند jQuery) و راه های بسیار دیگر می توانید لاپوشانی کنید اما زمانی که رفع یکی از این ارور ها از اولویت ها باشد، این کار بسیار زمان بر خواهد بود زیرا شما هیچ سرنخی برای شروع ندارید. یک راه ساده برای انجام این کار درنظر گرفتن ارور های نادیده گرفته شده است که می توانید درباره ی این موضوع بعدا مطالعه کنید.
6.استفاده از نام هایی که هیچ اطلاعاتی نمی دهند
نام گذاری سخت است اما یک راه آسان برای اطمینان حاصل کردن از اینکه نام متغیرها و توابع حداقل از یک کیفیت مناسب برخوردار هستند، وجود دارد. بنابراین از آنجایی که نام گذاری ها اطلاعاتی که مابقی قسمت های کد منتقل نمی کند را می رساند بقیه ی توسعه دهندگان راحت تر می توانند کد را بخوانند. دلیل اینکه نام گذاری بسیار مهم است این است که نام ها یک ایده ی کلی از آنچه کد انجام می دهد را در اختیار می گذارند. عمیق شدن در محاسبات برای اینکه متوجه شوید کد چه کاری را انجام می دهد بسیار زمان گیر است اما نام گذاری خوب کاری را که تابع انجام می دهد را در چند ثانیه معرفی می کند.
7. نادیده گرفتن روش های خوب اثبات شده
بررسی های کد، توسعه ی حاصل از تست، تضمین کیفیت، خودکارسازی توسعه و چندین موارد دیگر، از روش هایی هستند که ارزش آن ها در پروژه های بی شماری اثبات شده است به همین دلیل است که توسعه دهندگان بطور مداوم از این روش ها استفاده می کنند. یک مرجع خوب برای این روش ها کتاب ساخت نرم افزار: چه چیزی واقعا کار می کند و چرا به این کار معتقد هستیم، می باشد. زمان بگذارید و یادبگیرید که چگونه این کار ها را به درستی انجام دهید با این کار ها پروسه ی نرم افزار در همه ی پروژه های شما به راه هایی که شما را شگفت زده خواهد کرد، بهبود خواهد یافت.
@cafeamoozesh
1.گفتن اینکه "بعدا درست می کنم"
عادت به تعویق انداختن تعمیر کد ها از مشکل در اولویت ها نیست. سازماندهی موضوعات پی در پی ممکن است یک پروسه را ایجاد کند، اما شما نیاز به راهی برای پیگیری موضوعات کوچک تری که به وجود می آید، دارید. اضافه کردن کامنت های "TODO" راهی سریع برای اطمینان از اینکه چیزی را از دست نمی دهید، می باشد.
2. پا فشاری روی یک راه حل یک خطی
حساسیت روی نوشتن کد های کارآمد و قطعه کدهای زیبا، یک ویژگی مشترک بین برنامه نویسان است. این کار مانند حل پازل است و مانند پیدا کردن یک تابع ترکیبی و عبارات منظم است که 20 خط کد را به 2 یا 3 خط تبدیل می کند. متاسفانه این کار همیشه منجر به کدهای خوانا نمی شود که این موضوع نتیجه ی مهم تری است. ابتدا کد خود را دسترس پذیر کنید سپس آن را هوشمندانه کنید.
3. بهینه سازی های بیهوده
یکی از موارد دیگری که بیهوده تلاش خود را صرف آن می کنیم، بهینه سازی است. کاهش اندازه ی سایز به اندازه ی چند بایت عالی به نظر می رسد اما آیا gzipاین کار را انجام نمی دهد؟ و آیا request ها مهم تر نیستند؟ آدرس ها را در انتهای پروژه بهینه سازی کنید زیرا اغلب پیش نیازها تغییر خواهد کرد و زمان شما هدر می رود.
4. متقاعد کردن خود با این موضوع که استایل دهی خیلی مهم نیست
چیزی که طی سالیان های زیاد از بررسی کدهای دیگران یاد گرفتم روند استایل دهی به کدهایشان می باشد که اکثر توسعه دهندگان مایل هستند که آن را به تاخیر بیندازند. برای کدنویس های بی تجربه با گذر زمان متوجه خواهند شد که استایل داشتن کد میتواند تاثیر خوبی داشته باشد. اما زمانی که کد کیفیت خود را از دست می دهد یک مشکل کوچک، تمام پروژه را با مشکل روبرو می کند. درباره ی بهترین روش ها هرچند اگر بی اهمیت به نظر برسند سخت گیرانه عمل کنید. بررسی کد و ابزار های linting را تنظیم کنید تا فرصت داشته باشید درباره ی موضوعات مهم تر فکر کنید.
5.لاپوشانی کردن
با گرفتن یا نادیده گرفتن exception ها یا با استفاده از کتابخانه هایی که خطاها را گزارش نمی دهند (مانند jQuery) و راه های بسیار دیگر می توانید لاپوشانی کنید اما زمانی که رفع یکی از این ارور ها از اولویت ها باشد، این کار بسیار زمان بر خواهد بود زیرا شما هیچ سرنخی برای شروع ندارید. یک راه ساده برای انجام این کار درنظر گرفتن ارور های نادیده گرفته شده است که می توانید درباره ی این موضوع بعدا مطالعه کنید.
6.استفاده از نام هایی که هیچ اطلاعاتی نمی دهند
نام گذاری سخت است اما یک راه آسان برای اطمینان حاصل کردن از اینکه نام متغیرها و توابع حداقل از یک کیفیت مناسب برخوردار هستند، وجود دارد. بنابراین از آنجایی که نام گذاری ها اطلاعاتی که مابقی قسمت های کد منتقل نمی کند را می رساند بقیه ی توسعه دهندگان راحت تر می توانند کد را بخوانند. دلیل اینکه نام گذاری بسیار مهم است این است که نام ها یک ایده ی کلی از آنچه کد انجام می دهد را در اختیار می گذارند. عمیق شدن در محاسبات برای اینکه متوجه شوید کد چه کاری را انجام می دهد بسیار زمان گیر است اما نام گذاری خوب کاری را که تابع انجام می دهد را در چند ثانیه معرفی می کند.
7. نادیده گرفتن روش های خوب اثبات شده
بررسی های کد، توسعه ی حاصل از تست، تضمین کیفیت، خودکارسازی توسعه و چندین موارد دیگر، از روش هایی هستند که ارزش آن ها در پروژه های بی شماری اثبات شده است به همین دلیل است که توسعه دهندگان بطور مداوم از این روش ها استفاده می کنند. یک مرجع خوب برای این روش ها کتاب ساخت نرم افزار: چه چیزی واقعا کار می کند و چرا به این کار معتقد هستیم، می باشد. زمان بگذارید و یادبگیرید که چگونه این کار ها را به درستی انجام دهید با این کار ها پروسه ی نرم افزار در همه ی پروژه های شما به راه هایی که شما را شگفت زده خواهد کرد، بهبود خواهد یافت.
@cafeamoozesh
کارگروهی
8. زود رها کردن طرح ها
یک راه مطمئن برای این که سیستم شما نفوذناپذیر باشد این است که فقط یک طرح استفاده نکنیم. شما همیشه می توانید بگویید که هرگاه کدشما مورد نقد قرار گرفت یعنی طرح شما کامل نیست اما داشتن ماژول های نیمه کاره شما را راهنمایی می کند تا آن ها را کامل کنید. این نوع از تکمیل سازی ها، زمانی که قوانین پروژه تغییر می کند و مدیر پروژه ی جدید تصمیم می گیرد که روشی خاص ، از معماری مهم تر است.
9.پافشاری روی طرحی که شانس کمی برای کار دارد
درست همانطور که رها کردن کار ها ممکن است مشکل ایجاد کند پافشاری کردن روی طرح هایی که کار نمی کنند هم باعث مشکل می شود. به همین دلیل است که باید ایده های خود را با تیم خود به اشتراک بگذارید تا از بازخورد ها و توصیه های آن ها استفاده کنید. گاهی یک دیدگاه متفاوت می تواند همه چیز را تغییر دهد.
10.همیشه برای خود کار کردن
شما باید تلاش کنید تا پروسه و ایده های خود را با تیم درمیان بگذارید. گاهی شما فکر می کنید که کاری را به روش درست درحال انجام دادن هستید اما درحقیقت این گونه نیست بنابراین ارتباط پیوسته بسیار ارزشمند است. زمانی که شما با دیگران کار می کنید برای آن ها نیز سودمند است. کارها معمولا با بحث درباره ی ایده ها و آموزش افرادی که کم تجربه تر هستند و ممکن است درکار ها گیر کنند، بهبود می یابد.
11.اجتناب از نوشتن کدهای بد
در زندگی همه ی توسعه دهندگان زمانی پیش می آید که مهلت پایانی پروژه آن ها را وادار به نوشتن کد های بد کرده است که کاملا طبیعی است. شما تلاش خودتان را می کنید که مشتری یا مدیر را درباره ی عواقب کار آگاه کنید. اما آن ها روی زمان پروژه پافشاری میکنند، بنابراین اکنون زمان کدنویسی است یا احتمالا با یک باگ ضروری روبرو می شوید که نمی توانید صبر کنید تا با یک solution تمیز سراغ آن بروید. به همین دلیل است که شما باید به عنوان یک برنامه نویس، همه کاره باشید تا بتوانید همانطور که کد های تمیز می نویسید سریعا کد های ضعیف نیز بنویسید. خوشبختانه شما می توانید کد را بعدا بازبینی کنید و همان اصول تکنیکی را اجرا کنید.
12.سرزنش دیگران
هیچ شکی نیست که غرور یک ویژگی عادی بین توسعه دهندگان و دیگر افراد تکنیکی است. مسئولیت پذیری برای خطا های خود ویژگی است که باعث درخشش شما بین همکارانتان می شود. از اعتراف به این که خطایی مرتکب شده اید نترسید. زمانی که با این قضیه کنار بیایید می توانید آزادانه روی اینکه چرا مرتکب آن خطا شدید و چگونه می توانید از آن اجتناب کنید تمرکز کنید و از آن بیاموزید. اگر شما از قبول اشتباهات خود سرباز بزنید، یادگیری غیر ممکن می شود.
13. به اشتراک نگذاشتن چیز هایی که یادگرفته اید با تیم خود
ارزش شما به عنوان یک توسعه دهنده فقط به کدی که می نویسید نیست بلکه به چیزی که زمان نوشتن یاد می گیرید نیز می باشد. تجربیات خود را به اشتراک بگذارید، نظرات خود را درباره ی آن به اشتراک بگذارید، اجازه دهید تا بقیه بدانند که چرا چیز ها به این گونه هستند و به آن ها کمک کنید تا چیز های جدید درباره ی پروژه و پیچیدگی های آن یاد بگیرند.
14. کند بودن در ارائه فییدبک به مدیران/ مشتریان
یکی از ارزشمند ترین ویژگی های شخصیتی یک صاحب پیشه، متکی بر این است که به دیگران این اطمینان را بدهند که آن ها نیز در کار به اندازه ی ممکن سهیم بوده اند. این دلیلی است که مدیران می توانند صفحات گسترده را پر کنند.این کار به سود خود شما نیز می باشد: زیرا ناامنی ها و خطرات در زمان حیات و آینده ی پروژه ی شما کاهش می یابد.
15.استفاده ی کافی نکردن از گوگل
بهترین راه برای حل سریع یک مساله ی پیچیده، جستجو کردن در گوگل است. اگر نسبت به چیزی شک دارید حتما آن را در گوگل جستجو کنید. بجای این کار می توانید مهندس کناردستی خود را اذیت کنید اما در عوض به ندرت پیش می آید که کسی بتواند پاسخی به دقیقی Stack Overflow به شما بدهد، لازم به گفتن نیست که پرسیدن از دیگران باعث قطع کردن کار آن ها نیز می شود.
16.ارزش دادن بیش از حد به استایل
همیشه سعی کنید با محیط کاری تیم تان خود را هماهنگ کنید. بطور ایده آل، هرکس در تیم شما تحت همان شرایط کار می کند و از یک روش برای کدنویسی استفاده کند. انجام کارها به روش خودتان، برای خودتان ممکن است جذاب باشد اما برای همکارانتان همان روش کدنویسی جذاب نباشد، و اگر روش شما غیرمعمول باشد، برای توسعه دهنده ی بعدی، کار روی چیزی که شما ساخته اید، دشوار خواهد بود.
17.داشتن یک پیوست شخصی در کد
وقتی کسی در کد شما کامنت می گذارد، آن را شخصی نکنید. کد شما باید واضح باشد یعنی باید قادر باشید که توضیح دهید چرا کد را به آن صورت نوشته اید. اگر نیاز به بهبود بود، به معنی تصحیح کد شماست و به خود شما مربوط نمی شود.
@cafeamoozesh
8. زود رها کردن طرح ها
یک راه مطمئن برای این که سیستم شما نفوذناپذیر باشد این است که فقط یک طرح استفاده نکنیم. شما همیشه می توانید بگویید که هرگاه کدشما مورد نقد قرار گرفت یعنی طرح شما کامل نیست اما داشتن ماژول های نیمه کاره شما را راهنمایی می کند تا آن ها را کامل کنید. این نوع از تکمیل سازی ها، زمانی که قوانین پروژه تغییر می کند و مدیر پروژه ی جدید تصمیم می گیرد که روشی خاص ، از معماری مهم تر است.
9.پافشاری روی طرحی که شانس کمی برای کار دارد
درست همانطور که رها کردن کار ها ممکن است مشکل ایجاد کند پافشاری کردن روی طرح هایی که کار نمی کنند هم باعث مشکل می شود. به همین دلیل است که باید ایده های خود را با تیم خود به اشتراک بگذارید تا از بازخورد ها و توصیه های آن ها استفاده کنید. گاهی یک دیدگاه متفاوت می تواند همه چیز را تغییر دهد.
10.همیشه برای خود کار کردن
شما باید تلاش کنید تا پروسه و ایده های خود را با تیم درمیان بگذارید. گاهی شما فکر می کنید که کاری را به روش درست درحال انجام دادن هستید اما درحقیقت این گونه نیست بنابراین ارتباط پیوسته بسیار ارزشمند است. زمانی که شما با دیگران کار می کنید برای آن ها نیز سودمند است. کارها معمولا با بحث درباره ی ایده ها و آموزش افرادی که کم تجربه تر هستند و ممکن است درکار ها گیر کنند، بهبود می یابد.
11.اجتناب از نوشتن کدهای بد
در زندگی همه ی توسعه دهندگان زمانی پیش می آید که مهلت پایانی پروژه آن ها را وادار به نوشتن کد های بد کرده است که کاملا طبیعی است. شما تلاش خودتان را می کنید که مشتری یا مدیر را درباره ی عواقب کار آگاه کنید. اما آن ها روی زمان پروژه پافشاری میکنند، بنابراین اکنون زمان کدنویسی است یا احتمالا با یک باگ ضروری روبرو می شوید که نمی توانید صبر کنید تا با یک solution تمیز سراغ آن بروید. به همین دلیل است که شما باید به عنوان یک برنامه نویس، همه کاره باشید تا بتوانید همانطور که کد های تمیز می نویسید سریعا کد های ضعیف نیز بنویسید. خوشبختانه شما می توانید کد را بعدا بازبینی کنید و همان اصول تکنیکی را اجرا کنید.
12.سرزنش دیگران
هیچ شکی نیست که غرور یک ویژگی عادی بین توسعه دهندگان و دیگر افراد تکنیکی است. مسئولیت پذیری برای خطا های خود ویژگی است که باعث درخشش شما بین همکارانتان می شود. از اعتراف به این که خطایی مرتکب شده اید نترسید. زمانی که با این قضیه کنار بیایید می توانید آزادانه روی اینکه چرا مرتکب آن خطا شدید و چگونه می توانید از آن اجتناب کنید تمرکز کنید و از آن بیاموزید. اگر شما از قبول اشتباهات خود سرباز بزنید، یادگیری غیر ممکن می شود.
13. به اشتراک نگذاشتن چیز هایی که یادگرفته اید با تیم خود
ارزش شما به عنوان یک توسعه دهنده فقط به کدی که می نویسید نیست بلکه به چیزی که زمان نوشتن یاد می گیرید نیز می باشد. تجربیات خود را به اشتراک بگذارید، نظرات خود را درباره ی آن به اشتراک بگذارید، اجازه دهید تا بقیه بدانند که چرا چیز ها به این گونه هستند و به آن ها کمک کنید تا چیز های جدید درباره ی پروژه و پیچیدگی های آن یاد بگیرند.
14. کند بودن در ارائه فییدبک به مدیران/ مشتریان
یکی از ارزشمند ترین ویژگی های شخصیتی یک صاحب پیشه، متکی بر این است که به دیگران این اطمینان را بدهند که آن ها نیز در کار به اندازه ی ممکن سهیم بوده اند. این دلیلی است که مدیران می توانند صفحات گسترده را پر کنند.این کار به سود خود شما نیز می باشد: زیرا ناامنی ها و خطرات در زمان حیات و آینده ی پروژه ی شما کاهش می یابد.
15.استفاده ی کافی نکردن از گوگل
بهترین راه برای حل سریع یک مساله ی پیچیده، جستجو کردن در گوگل است. اگر نسبت به چیزی شک دارید حتما آن را در گوگل جستجو کنید. بجای این کار می توانید مهندس کناردستی خود را اذیت کنید اما در عوض به ندرت پیش می آید که کسی بتواند پاسخی به دقیقی Stack Overflow به شما بدهد، لازم به گفتن نیست که پرسیدن از دیگران باعث قطع کردن کار آن ها نیز می شود.
16.ارزش دادن بیش از حد به استایل
همیشه سعی کنید با محیط کاری تیم تان خود را هماهنگ کنید. بطور ایده آل، هرکس در تیم شما تحت همان شرایط کار می کند و از یک روش برای کدنویسی استفاده کند. انجام کارها به روش خودتان، برای خودتان ممکن است جذاب باشد اما برای همکارانتان همان روش کدنویسی جذاب نباشد، و اگر روش شما غیرمعمول باشد، برای توسعه دهنده ی بعدی، کار روی چیزی که شما ساخته اید، دشوار خواهد بود.
17.داشتن یک پیوست شخصی در کد
وقتی کسی در کد شما کامنت می گذارد، آن را شخصی نکنید. کد شما باید واضح باشد یعنی باید قادر باشید که توضیح دهید چرا کد را به آن صورت نوشته اید. اگر نیاز به بهبود بود، به معنی تصحیح کد شماست و به خود شما مربوط نمی شود.
@cafeamoozesh
نوشتن کد
18.ندانستن نحوه ی بهینه سازی
یک استراتژی بهینه سازی درست ، نیاز به تجربه دارد. برای دستیابی به یک استراتژی خوب نیاز به تحقیق،آنالیز و دانستن این که هر سیستم در یک پروسه شامل می شود، دارد. خودتان را راجع به این موارد آگاه کنید. درباره ی پی الگوریتم های پیچیدگی، ارزیابی کوئری های پایگاه داده، پروتکل ها و چگونگی اندازه گیری عملکرد سیستم به صورت کل بیاموزید.
19.استفاده از ابزارهای غلط برای کار
شما می توانید به داشتن اطلاعات محدودی بسنده کنید اما دلیلی که باعث می شود یادگیری را ادامه دهید این است که هر مشکل جدیدی که پیش می آید، محتوا های مختلفی دارد و به ابزار های مختلفی نیاز دارد. نسبت به زبان ها و کتابخانه های جدید پذیرا باشید و نسبت به چیزی که هم اکنون بلد هستید پافشاری نکنید.
20. مسلط نبودن روی ابزارها و IDE های خودتان
هر کلید ترکیبی، کلید های میانبر یا پارامتر هایی که زمان استفاده از ابزار ها یاد می گیرید، یک اثر مثبت روی سرعت کدزنی شما دارد که متوجه آن می شوید. استفاده از کلید های ترکیبی فقط باعث صرفه جویی چند ثانیه ای از کار شما نمی شود بلکه تعویض محتوا را کاهش می دهد. هرچه زمان بیشتری را روی کار های کوچک صرف کنید، زمان کمتری دردسترس دارید که فکر کنید چرا یک کد را نوشته اید و چه چیزی بعد از آن اتفاق خواهد افتاد. تسلط بر روی کلید های میانبر ذهن شما را آزاد می کند.
21. نادیده گرفتن پیام های خطا
فرض نکنید که بدون خواندن پیغام خطا می دانید که اشکال کدشما کجاست یا اینکه به سرعت متوجه آن خواهید شد. همیشه داشتن اطلاعات بیشتر درباره ی مشکل بهتر است و زمانی که برای جمع آوری اطلاعات صرف می کنید درطولانی مدت، ذخیره خواهد شد.
22. ابزار های توسعه ی خود را به صورت تخیلی فرض کردن
گاهی ویرایشگر یا ابزار خط دستور موردنظر شما، بهترین ابزار برای کاری که دردست دارید نیست. Visual Studio برای نوشتن IDE ها عالی است، Sublime برای زبان های پویا عالی است، Eclipse برای جاوا عالی است و غیره. ممکن است شما به vim یا emacs علاقه داشته باشید اما این به این معنی نیست که این ابزار ها برای هرکاری مناسب هستند.
23. ارزش های هاردکدینگ به جای قابل تنظیم کردن
همیشه به تغییراتی که ممکن است پیش بیاید و اینکه چگونه با آن ها مواجه شوید فکر کنید. بدهی های تکنیکی، اگر قطعات متحرک را از باقی کار جدانکنید به سرعت رشد خواهد کرد. درصورت لزوم از ثابت ها و فایل های پیکربندی استفاده کنید که قابلیت تنظیم کردن داشته باشد.
24.تعویض دائم روش ها
کد هایی که به آن ها نیاز ندارید را ننویسید. ممکن است شخص دیگری به اندازه ی کافی زمان روی مشکلی که شما هم اکنون دارید صرف کرده باشد و یک راه حل بهتر داشته باشد که شما بتوانید از آن استفاده کنید. خودتان را از روبرو شدن با برخی مشکلات حفظ کنید.
25.copy/past کورکورانه ی کد
قبل از اینکه از کد استفاده کنید آن را کامل متوجه شوید. گاهی شما بایک نگاه گذرا روی کد، کاری که انجام می دهد را سریعا متوجه می شوید و گاهی هم زمانی که کد را به طور دقیق مطالعه کنید بیشتر یاد خواهید گرفت.
26. وقت نگذاشتن روی اینکه چیزها واقعا چگونه کار می کنند
همیشه شانس اینکه چگونه کد ها واقعا کار می کنند را دریابید و درباره ی لایه های زیرین آن مطالعه کنید. ممکن است الان با مطالعه نکردن درباره ی این موضوع زمان خود را ذخیره کنید اما آنچه شما در یک پروژه یاد می گیرید در طولانی مدت از آنچه که انجام می دهید مهم تر خواهد بود.
27. اعتماد به نفس بیش از حد روی کد خودتان
اینکه فکر کنید چون شما کدی را نوشته اید باید عالی باشد خطرناک است. هرچه شما روی موارد جدید کار کنید و تجربه به دست بیاورید، بیشتر یاد خواهید گرفت بنابراین هرازگاهی روی کد های قدیمی خودتان نگاهی بکنید و ببینید که چگونه پیشرفت کرده اید.
28. فکر نکردن درباره ی تعادل بین طراحی، solution یا کتابخانه
هر محصول نقاط مثبت خود را دارد که فقط با استفاده و آنالیز کردن آن متوجه آن ها خواهید شد. مشاهده ی مثال های محدود از استفاده های یک کتابخانه شما را روی آن کتابخانه مسلط نخواهد کرد البته به این معنی هم نیست که برای همه ی راه حل هایی که در پروژه ی شما پیش خواهد آمد مناسب است. درباره ی هرچیزی که استفاده می کنید نگاهی انتقادی داشته باشید.
29. کمک نگرفتن در زمانی که نیاز دارید
داشتن یک حلقه فییدبک همیشه برای شما کمتر سخت خواهد بود. درخواست کمک کردن به معنی این نیست که شما مناسب این کار نیستید. دیگران تلاش شما را خواهند دید و ندانستن را به عنوان مرحله ای از یادگیری میبینند و این یک ویژگی بسیار خوب است.
@cafeamoozesh
18.ندانستن نحوه ی بهینه سازی
یک استراتژی بهینه سازی درست ، نیاز به تجربه دارد. برای دستیابی به یک استراتژی خوب نیاز به تحقیق،آنالیز و دانستن این که هر سیستم در یک پروسه شامل می شود، دارد. خودتان را راجع به این موارد آگاه کنید. درباره ی پی الگوریتم های پیچیدگی، ارزیابی کوئری های پایگاه داده، پروتکل ها و چگونگی اندازه گیری عملکرد سیستم به صورت کل بیاموزید.
19.استفاده از ابزارهای غلط برای کار
شما می توانید به داشتن اطلاعات محدودی بسنده کنید اما دلیلی که باعث می شود یادگیری را ادامه دهید این است که هر مشکل جدیدی که پیش می آید، محتوا های مختلفی دارد و به ابزار های مختلفی نیاز دارد. نسبت به زبان ها و کتابخانه های جدید پذیرا باشید و نسبت به چیزی که هم اکنون بلد هستید پافشاری نکنید.
20. مسلط نبودن روی ابزارها و IDE های خودتان
هر کلید ترکیبی، کلید های میانبر یا پارامتر هایی که زمان استفاده از ابزار ها یاد می گیرید، یک اثر مثبت روی سرعت کدزنی شما دارد که متوجه آن می شوید. استفاده از کلید های ترکیبی فقط باعث صرفه جویی چند ثانیه ای از کار شما نمی شود بلکه تعویض محتوا را کاهش می دهد. هرچه زمان بیشتری را روی کار های کوچک صرف کنید، زمان کمتری دردسترس دارید که فکر کنید چرا یک کد را نوشته اید و چه چیزی بعد از آن اتفاق خواهد افتاد. تسلط بر روی کلید های میانبر ذهن شما را آزاد می کند.
21. نادیده گرفتن پیام های خطا
فرض نکنید که بدون خواندن پیغام خطا می دانید که اشکال کدشما کجاست یا اینکه به سرعت متوجه آن خواهید شد. همیشه داشتن اطلاعات بیشتر درباره ی مشکل بهتر است و زمانی که برای جمع آوری اطلاعات صرف می کنید درطولانی مدت، ذخیره خواهد شد.
22. ابزار های توسعه ی خود را به صورت تخیلی فرض کردن
گاهی ویرایشگر یا ابزار خط دستور موردنظر شما، بهترین ابزار برای کاری که دردست دارید نیست. Visual Studio برای نوشتن IDE ها عالی است، Sublime برای زبان های پویا عالی است، Eclipse برای جاوا عالی است و غیره. ممکن است شما به vim یا emacs علاقه داشته باشید اما این به این معنی نیست که این ابزار ها برای هرکاری مناسب هستند.
23. ارزش های هاردکدینگ به جای قابل تنظیم کردن
همیشه به تغییراتی که ممکن است پیش بیاید و اینکه چگونه با آن ها مواجه شوید فکر کنید. بدهی های تکنیکی، اگر قطعات متحرک را از باقی کار جدانکنید به سرعت رشد خواهد کرد. درصورت لزوم از ثابت ها و فایل های پیکربندی استفاده کنید که قابلیت تنظیم کردن داشته باشد.
24.تعویض دائم روش ها
کد هایی که به آن ها نیاز ندارید را ننویسید. ممکن است شخص دیگری به اندازه ی کافی زمان روی مشکلی که شما هم اکنون دارید صرف کرده باشد و یک راه حل بهتر داشته باشد که شما بتوانید از آن استفاده کنید. خودتان را از روبرو شدن با برخی مشکلات حفظ کنید.
25.copy/past کورکورانه ی کد
قبل از اینکه از کد استفاده کنید آن را کامل متوجه شوید. گاهی شما بایک نگاه گذرا روی کد، کاری که انجام می دهد را سریعا متوجه می شوید و گاهی هم زمانی که کد را به طور دقیق مطالعه کنید بیشتر یاد خواهید گرفت.
26. وقت نگذاشتن روی اینکه چیزها واقعا چگونه کار می کنند
همیشه شانس اینکه چگونه کد ها واقعا کار می کنند را دریابید و درباره ی لایه های زیرین آن مطالعه کنید. ممکن است الان با مطالعه نکردن درباره ی این موضوع زمان خود را ذخیره کنید اما آنچه شما در یک پروژه یاد می گیرید در طولانی مدت از آنچه که انجام می دهید مهم تر خواهد بود.
27. اعتماد به نفس بیش از حد روی کد خودتان
اینکه فکر کنید چون شما کدی را نوشته اید باید عالی باشد خطرناک است. هرچه شما روی موارد جدید کار کنید و تجربه به دست بیاورید، بیشتر یاد خواهید گرفت بنابراین هرازگاهی روی کد های قدیمی خودتان نگاهی بکنید و ببینید که چگونه پیشرفت کرده اید.
28. فکر نکردن درباره ی تعادل بین طراحی، solution یا کتابخانه
هر محصول نقاط مثبت خود را دارد که فقط با استفاده و آنالیز کردن آن متوجه آن ها خواهید شد. مشاهده ی مثال های محدود از استفاده های یک کتابخانه شما را روی آن کتابخانه مسلط نخواهد کرد البته به این معنی هم نیست که برای همه ی راه حل هایی که در پروژه ی شما پیش خواهد آمد مناسب است. درباره ی هرچیزی که استفاده می کنید نگاهی انتقادی داشته باشید.
29. کمک نگرفتن در زمانی که نیاز دارید
داشتن یک حلقه فییدبک همیشه برای شما کمتر سخت خواهد بود. درخواست کمک کردن به معنی این نیست که شما مناسب این کار نیستید. دیگران تلاش شما را خواهند دید و ندانستن را به عنوان مرحله ای از یادگیری میبینند و این یک ویژگی بسیار خوب است.
@cafeamoozesh
تست و نگهداری
30. نوشتن تست هایی که می دانید درست هستند
نوشتن تست هایی که می دانید درست هستند لازم است زیرا باعث بازسازی و مدیریت پروژه به صورت امن تر می شود. از سوی دیگر شما باید تست هایی بنویسید که می دانید به جواب درست ختم نمی شود. این تست ها نیاز هستند زیرا باعث می شود پروژه به سمت جلو حرکت کند و مشکلات را حل کنید.
31. صرف نظر کردن از تست عملکرد برای موارد ضروری
بین روند توسعه ی پروژه یک تنظیم تست عملکرد اتوماتیک را آماده کنید. به این ترتیب می توانید اطمینان حاصل کنید مشکلاتی که به عملکرد مربوط می شود را می توانید به سرعت حل کنید.
32. بررسی نکردن این که ساخته ی شما کار می کند یا نه
به ندرت پیش می آید که build شما با موفقیت انجام شود اما واقعا کار نکند اما به هرحال ممکن است پیش بیاید و برطرف کردن آن نیز دشوار است و زمان زیادی را باید برای این کار صرف کنید. بررسی سریع هر build یک عادت مهم است که باید داشته باشید.
33. به تاخیر انداختن تغییرات بزرگ یا رها کردن پس از یک تغییر بزرگ
اینجاست که اعتماد به نفس زیاد ممکن است به شما آسیب برساند و تا زمانی که متوجه شوید چرا این کار را نباید انجام دهید چندبار شکست بخورید بنابراین توصیه ی من را به خاطر داشته باشید که همیشه از اینکه زمانی که پروژه ی شما با مشکل روبرو شد دردسترس خواهید بود، اطمینان حاصل کنید.
34.منکر شدن کدی که خودتان نوشته اید
به پشتیبانی از کدی که خوتان نوشته اید تمایل نشان دهید. خود شما مناسب ترین فردی هستید که می توانید به دیگران در فهم کدتان کمک کنید. شما باید تلاش کنید تا کد شما برای خودتان و دیگران تا سال های سال خوانا بماند.
35. نادیده گرفتن احتیاجات غیر ضروری
زمانی که شما سعی می کنید مطلبی را برسانید درنظر نگرفتن نقاط مهم مثل عملکرد و امنیت می تواند آسان تر باشد. یک لیست برای بررسی این موارد داشته باشید. شما نمی خواهید که سهم کاری خود را به دلیل درنظر نگرفتن این موارد غیر ضروری در لحظات پایانی پروژه از بین ببرید.
@cafeamoozesh
30. نوشتن تست هایی که می دانید درست هستند
نوشتن تست هایی که می دانید درست هستند لازم است زیرا باعث بازسازی و مدیریت پروژه به صورت امن تر می شود. از سوی دیگر شما باید تست هایی بنویسید که می دانید به جواب درست ختم نمی شود. این تست ها نیاز هستند زیرا باعث می شود پروژه به سمت جلو حرکت کند و مشکلات را حل کنید.
31. صرف نظر کردن از تست عملکرد برای موارد ضروری
بین روند توسعه ی پروژه یک تنظیم تست عملکرد اتوماتیک را آماده کنید. به این ترتیب می توانید اطمینان حاصل کنید مشکلاتی که به عملکرد مربوط می شود را می توانید به سرعت حل کنید.
32. بررسی نکردن این که ساخته ی شما کار می کند یا نه
به ندرت پیش می آید که build شما با موفقیت انجام شود اما واقعا کار نکند اما به هرحال ممکن است پیش بیاید و برطرف کردن آن نیز دشوار است و زمان زیادی را باید برای این کار صرف کنید. بررسی سریع هر build یک عادت مهم است که باید داشته باشید.
33. به تاخیر انداختن تغییرات بزرگ یا رها کردن پس از یک تغییر بزرگ
اینجاست که اعتماد به نفس زیاد ممکن است به شما آسیب برساند و تا زمانی که متوجه شوید چرا این کار را نباید انجام دهید چندبار شکست بخورید بنابراین توصیه ی من را به خاطر داشته باشید که همیشه از اینکه زمانی که پروژه ی شما با مشکل روبرو شد دردسترس خواهید بود، اطمینان حاصل کنید.
34.منکر شدن کدی که خودتان نوشته اید
به پشتیبانی از کدی که خوتان نوشته اید تمایل نشان دهید. خود شما مناسب ترین فردی هستید که می توانید به دیگران در فهم کدتان کمک کنید. شما باید تلاش کنید تا کد شما برای خودتان و دیگران تا سال های سال خوانا بماند.
35. نادیده گرفتن احتیاجات غیر ضروری
زمانی که شما سعی می کنید مطلبی را برسانید درنظر نگرفتن نقاط مهم مثل عملکرد و امنیت می تواند آسان تر باشد. یک لیست برای بررسی این موارد داشته باشید. شما نمی خواهید که سهم کاری خود را به دلیل درنظر نگرفتن این موارد غیر ضروری در لحظات پایانی پروژه از بین ببرید.
@cafeamoozesh
بررسی روش های موثر در زمینه آموزش و فراگیری زبان های برنامه نویسی...
@cafeamoozesh
@cafeamoozesh
اگر به دنبال یادگیری برنامه نویسی هستید، حتماً بارها از خود و دیگران پرسیده اید که بهترین روش برای شروع کدام است؟ این سردرگمی در خصوص یادگیری برنامه نویسی همیشه وجود دارد به صورتی که گاه سبب دلسرد شدن در مسیر آموزش میشود. اما نگران نباشید، ما در چند پست آینده قصد داریم بهترین روشهای یادگیری برنامه نویسی را مورد بررسی قرار میدهیم.
@cafeamoozesh
@cafeamoozesh
1- یادگیری برنامه نویسی از طریق کتاب های آموزشی
کتاب آموزش برنامه نویسی یک مرجع خوب و همیشگی است. همیشه یادگیری با کتاب بهترین روش یادگیری بوده است. به این ترتیب اگر اهل کتاب هستید، این روش یکی از بهترین روشهای یادگیری برنامه نویسی محسوب میشود. میدانیم که هر کتاب حاصل چندین سال زحمت یک نویسنده و حتی چندین نویسنده است. بنابراین تکتک بخشهای کتاب میتواند یک المان یادگیری بسیار عالی محسوب شود. شاید با خود بگویید یادگیری برنامه نویسی از طریق کتاب کار بسیار دشوار و خسته کنندهای است. این ادعا صحیح است، در واقع یادگیری برنامه نویسی از طریق کتاب برای افراد تازه کار گزینه ی خوبی نیست و میتواند یک گزینه ی تکمیلی قابل قبول محسوب شود.
(البته لازم به ذکره که از کتاب های مرجع استفاده کنید نه کتاب های ترجمه شده چون ترجمه کتاب های تخصصی نیاز به داشتن دانش کافی مترجم در زمینه مورد نظر داره البته اگر به تسلط و تجربه مترجم اطمینان دارید مشکلی نیست)
@cafeamoozesh
کتاب آموزش برنامه نویسی یک مرجع خوب و همیشگی است. همیشه یادگیری با کتاب بهترین روش یادگیری بوده است. به این ترتیب اگر اهل کتاب هستید، این روش یکی از بهترین روشهای یادگیری برنامه نویسی محسوب میشود. میدانیم که هر کتاب حاصل چندین سال زحمت یک نویسنده و حتی چندین نویسنده است. بنابراین تکتک بخشهای کتاب میتواند یک المان یادگیری بسیار عالی محسوب شود. شاید با خود بگویید یادگیری برنامه نویسی از طریق کتاب کار بسیار دشوار و خسته کنندهای است. این ادعا صحیح است، در واقع یادگیری برنامه نویسی از طریق کتاب برای افراد تازه کار گزینه ی خوبی نیست و میتواند یک گزینه ی تکمیلی قابل قبول محسوب شود.
(البته لازم به ذکره که از کتاب های مرجع استفاده کنید نه کتاب های ترجمه شده چون ترجمه کتاب های تخصصی نیاز به داشتن دانش کافی مترجم در زمینه مورد نظر داره البته اگر به تسلط و تجربه مترجم اطمینان دارید مشکلی نیست)
@cafeamoozesh
2- یادگیری برنامه نویسی از طریق جستجو در اینترنت
به جرأت میتوان گفت شیرینترین روش یادگیری برنامه نویسی استفاده از اینترنت است. بسیاری از برنامه نویسان کنونی از همین روش توانستهاند کسب درآمد داشته باشند. در واقع اینترنت یک منبع غنی برای یادگیری است و هر چه که فکرش را بکنید در آن یافت میشود. اما این روش در کنار خوبیهای زیاد خود یک سری ایرادها نیز دارد. فرض کنید با یک جستجوی کوچک هزاران منبع اطلاعاتی پیش روی شما قرار میگیرد که اصلاً نمیدانید کدام یک میتواند گزینه ی مناسبی محسوب شود. این موضوع بارها و بارها بررسی شده است و اینطور که به نظر میرسد برخی از منابع اطلاعرسانی، معتبر نیستند و کار را بیشتر خراب میکنند. بنابراین درصورتیکه از این روش یادگیری برنامه نویسی استفاده میکنید، بهتر است سایتهای خوب را از بد تفکیک کنید.
یکی از معتبرترین این سایت ها
https://stackoverflow.com
هستش...
@cafeamoozesh
به جرأت میتوان گفت شیرینترین روش یادگیری برنامه نویسی استفاده از اینترنت است. بسیاری از برنامه نویسان کنونی از همین روش توانستهاند کسب درآمد داشته باشند. در واقع اینترنت یک منبع غنی برای یادگیری است و هر چه که فکرش را بکنید در آن یافت میشود. اما این روش در کنار خوبیهای زیاد خود یک سری ایرادها نیز دارد. فرض کنید با یک جستجوی کوچک هزاران منبع اطلاعاتی پیش روی شما قرار میگیرد که اصلاً نمیدانید کدام یک میتواند گزینه ی مناسبی محسوب شود. این موضوع بارها و بارها بررسی شده است و اینطور که به نظر میرسد برخی از منابع اطلاعرسانی، معتبر نیستند و کار را بیشتر خراب میکنند. بنابراین درصورتیکه از این روش یادگیری برنامه نویسی استفاده میکنید، بهتر است سایتهای خوب را از بد تفکیک کنید.
یکی از معتبرترین این سایت ها
https://stackoverflow.com
هستش...
@cafeamoozesh
Stack Overflow
Newest Questions
Stack Overflow | The World’s Largest Online Community for Developers
3 - یادگیری برنامه نویسی از طریق کارآموزی
بسیاری از افراد معتقد هستند که بهترین روش برای یادگیری برنامه نویسی، کار بر روی پروژههای واقعی هر چقدر کوچک است. این روش بسیار خوب و استاندارد است. در واقع وقتی بر روی پروژههای واقعی کار میکنید، در طول انجام پروژه و همینطور برطرف کردن خطاها میتوانید به سادگی برنامه نویسی را یاد بگیرید. از بهترین گزینههایی که در این مسیر وجود دارد، ورود به شرکت ها و استارت آپ های نوپا است.
در واقع وقتی یک تیم دانشجویی بر روی یک سری پروژههای کوچک فعالیت میکنند، تجربههای زیادی کسب میشود. در نظر داشته باشید که تیمهای برنامه نویسی بیشترین تلاش برای رسیدن به اهدافشان را دارند. مشکل این روش به این صورت است که اگر شرکتی که انتخاب کرده اید به کنجکاویهای شما بی محلی کند، قطعاً دلسرد خواهید شد و این موضوع سبب رها کردن یادگیری برنامه نویسی میشود.
بهتر است برای پیدا شدن یک تیم برنامه نویسی خوب و دلسوز نهایت دقت را داشته باشید.
@cafeamoozesh
بسیاری از افراد معتقد هستند که بهترین روش برای یادگیری برنامه نویسی، کار بر روی پروژههای واقعی هر چقدر کوچک است. این روش بسیار خوب و استاندارد است. در واقع وقتی بر روی پروژههای واقعی کار میکنید، در طول انجام پروژه و همینطور برطرف کردن خطاها میتوانید به سادگی برنامه نویسی را یاد بگیرید. از بهترین گزینههایی که در این مسیر وجود دارد، ورود به شرکت ها و استارت آپ های نوپا است.
در واقع وقتی یک تیم دانشجویی بر روی یک سری پروژههای کوچک فعالیت میکنند، تجربههای زیادی کسب میشود. در نظر داشته باشید که تیمهای برنامه نویسی بیشترین تلاش برای رسیدن به اهدافشان را دارند. مشکل این روش به این صورت است که اگر شرکتی که انتخاب کرده اید به کنجکاویهای شما بی محلی کند، قطعاً دلسرد خواهید شد و این موضوع سبب رها کردن یادگیری برنامه نویسی میشود.
بهتر است برای پیدا شدن یک تیم برنامه نویسی خوب و دلسوز نهایت دقت را داشته باشید.
@cafeamoozesh
4- یادگیری برنامه نویسی از طریق کلاس های آموزشی
افرادی که در کلاس های حضوری یادگیری بهتری دارند، قطعاً میتوانند به بهترین شکل ممکن از کلاسهای یادگیری برنامه نویسی استفاده کنند. وقتی در کلاس هستید، میتوانید بر روی پروژههای حضوری بهتر تمرکز نمایید و سؤالاتی که در ذهن شما نقش میبندد را به سرعت برطرف سازید. همانطور که مشخص است این روش از روشهای دیگر هزینهبر تر است و به هر حال نیاز است که بودجه ی بیشتری از سوی شما فراهم شود.
وجود یک استاد راهنمای حضوری سبب میشود که دانش و تجربه ی برنامه نویسی شما افزایش یابد زیرا در واقع فردی وجود دارد که مسیر را به شما نشان میدهد و کمک میکند که استعداد خود را در مسیر صحیح به کار بگیرد.
@cafeamoozesh
افرادی که در کلاس های حضوری یادگیری بهتری دارند، قطعاً میتوانند به بهترین شکل ممکن از کلاسهای یادگیری برنامه نویسی استفاده کنند. وقتی در کلاس هستید، میتوانید بر روی پروژههای حضوری بهتر تمرکز نمایید و سؤالاتی که در ذهن شما نقش میبندد را به سرعت برطرف سازید. همانطور که مشخص است این روش از روشهای دیگر هزینهبر تر است و به هر حال نیاز است که بودجه ی بیشتری از سوی شما فراهم شود.
وجود یک استاد راهنمای حضوری سبب میشود که دانش و تجربه ی برنامه نویسی شما افزایش یابد زیرا در واقع فردی وجود دارد که مسیر را به شما نشان میدهد و کمک میکند که استعداد خود را در مسیر صحیح به کار بگیرد.
@cafeamoozesh
5- یادگیری برنامه نویسی از طریق دیدن فیلم های آموزشی
شما میتوانید از فیلمهایی که توسط برترین شرکتهای آموزشی تکثیر میشود، استفاده کنید. به این ترتیب یک دوره ی کامل آموزشی به شما معرفی میشود و از ابتدا از نحوه ی نصب ابزارها میتوانید وارد وادی یادگیری شوید. در نظر داشته باشید که شما برای کد نویسی میبایست کمی دقیق تر باشید و وقت بیشتری بگذارید.
مزیت یادگیری برنامه نویسی از طریق فیلم به این شکل است که میتوانید بارها و بارها بخش مورد نظر را تماشا کرده و از آن بهرهمند شوید. مشکلی که در این مسیر وجود دارد، زبان تولید فیلم است که اغلب به زبان انگلیسی است و این موضوع شاید سبب شود نتوانید به عنوان یک کاربر ایرانی، گفتههای آموزشی را بهطور دقیق متوجه شوید.
شما میتوانید از فیلمهای پروژه محور استفاده نمایید، این فیلمها به شما کمک میکند به سادگی یک پروژه ی ارزان قیمت را راه اندازی کرده و از اجرای آن لذت ببرید. بهتر است برای یادگیری برنامه نویسی، یک نقطه ی شروع برای خود انتخاب کنید و سعی کنید به بهینهسازی همان نقطه بپردازید، اینطور که به نظر میرسد استفاده از روشهای آزمون و خطا شما را موفقتر خواهد کرد
.
@cafeamoozesh
شما میتوانید از فیلمهایی که توسط برترین شرکتهای آموزشی تکثیر میشود، استفاده کنید. به این ترتیب یک دوره ی کامل آموزشی به شما معرفی میشود و از ابتدا از نحوه ی نصب ابزارها میتوانید وارد وادی یادگیری شوید. در نظر داشته باشید که شما برای کد نویسی میبایست کمی دقیق تر باشید و وقت بیشتری بگذارید.
مزیت یادگیری برنامه نویسی از طریق فیلم به این شکل است که میتوانید بارها و بارها بخش مورد نظر را تماشا کرده و از آن بهرهمند شوید. مشکلی که در این مسیر وجود دارد، زبان تولید فیلم است که اغلب به زبان انگلیسی است و این موضوع شاید سبب شود نتوانید به عنوان یک کاربر ایرانی، گفتههای آموزشی را بهطور دقیق متوجه شوید.
شما میتوانید از فیلمهای پروژه محور استفاده نمایید، این فیلمها به شما کمک میکند به سادگی یک پروژه ی ارزان قیمت را راه اندازی کرده و از اجرای آن لذت ببرید. بهتر است برای یادگیری برنامه نویسی، یک نقطه ی شروع برای خود انتخاب کنید و سعی کنید به بهینهسازی همان نقطه بپردازید، اینطور که به نظر میرسد استفاده از روشهای آزمون و خطا شما را موفقتر خواهد کرد
.
@cafeamoozesh
امروزه بهوسیله طراحی وبسایت، امکان ارتباط جامع کسبوکارها با مخاطبین و مشتریان خود فراهم شده است. یک وبسایت مجهز و مناسب میتواند جای خالی کسبوکار مربوط به خود را در دنیای بیانتهای وب و فضای مجازی پر نماید. از سوی دیگر، وجود وبسایتهای فراوان در زمینههای مختلف، باعث شده است که توجه تعداد زیادی از افراد، بهخصوص جوانان، به این حرفه جلب شود. طراحی وبسایت به دلیل ویژگیهایی مانند امکان کار کردن بهصورت غیرحضوری و فردی، امکان کسب درآمد بالا، وجود فرایند جذاب، توسعه و پیشرفت همیشگی و همچنین وجود بازار کسب درآمد مناسب، به یکی از محبوبترین شغلهای دنیا تبدیل شده است. اما اکنونکه این مزایا را دانستیم، چگونه باید شروع به طراحی یک وبسایت کنیم؟ در چند پست آینده، این سؤال را پاسخ خواهیم داد پس با کافه آموزش همراه باشید...
@cafeamoozesh
@cafeamoozesh