لری وال، سازنده زبان پرل، یه جمله معروف داره. اون میگه:
توسعه دهندگان بزرگ دارای سه ویژگی اخلاقی هستند: تنبلن، صبرشون کمه و مغرورن.
شاید این حرف براتون عجیب باشه. ولی دلایلی که آورده جالبن.
تنبلن چون حال نوشتن کدای طولانی رو ندارن و با کمترین کد، تسک هاشون رو انجام میدن. از طرفی برای کداشون داکیومنت درست می کنن تا نیاز نباشه به سوالای زیادی پاسخ بدن.
صبر کمشون باعث میشه تو حین نوشتن یه برنامه، پیش دستی بکنن و امکاناتی رو به اون اضافه کنن که مطمئن هستن جزو درخواست های بعدی کارفرما خواهد بود.
و اعتماد به نفس بالایی دارند برای اینکه اونارو مجبور کنه کدای حرفه ای بنویسن تا بقیه نتونن ازش ایراد بگیرن.
برنامه نویسای موفق لزوما جزو بهترین و بزرگترین برنامه نویسا نیستند.
برنامه نویسی که تسک های روزانه اش رو درست و به موقع انجام میده خیلی مفیدتر از اون کسیه که با وجود نوشتن کدهای پیچیده، نمیتونه اونارو به موقع تحویل بده. به دلیل این که برای بیشتر کارفرماها حجم کار انجام شده مهمه تا اینکه لول کار بالا باشه ولی خیلیشون نصفه و نیمه رها شده باشن.
موفقیتی که شما به دنبال اون هستید نشات گرفته از دیدی هست که شما نسبت به خودتون و دنیاتون دارین و اینکه عادات برخوردتون با چالش های زندگی به چه نحوی هست. به گفته محققان دانشگاه دوک دلیل 40% از موفقیت های ما برمیگرده به عادت هایی که تو زندگی داریم.
در ادامه تعدادی از عادت های قدرتمند برای تبدیل شدن به یک برنامه نویس موفق رو بررسی می کنیم.
نوشتن کد با قابلیت استفاده مجدد، قابل خواندن و تمیز
یکی از اولین چیزهایی که برنامه نویس باید یاد بگیرد، نوشتن کدهای قابل خواندن است. خوانایی کد اشکال زدایی را آسان تر می کند. برعکس، کدی که بد نوشته شده است درک و نگهداری آن دشوار است و اشکال زدایی آن زمان بیشتری می برد. همچنین امکان استفاده مجدد از کد وجود دارد.
برنامه نویس های موفق، علاوه بر مطالعه مفاهیم مختلف، کد های بسیاری را مورد بررسی قرار می دهند. آن ها می دانند علاوه بر درک مواردی همچون اصول SOLID و مفاهیم Clean Code باید با تمرین و تکرار، بتوانند در پیاده سازی های خود، این موارد را رعایت کرده و تمیز کد بنویسند.
با دقت گوش کردن به جای صحبت کردن
ساده ترین راه یادگیری این است که ابتدا گوش دهید و سپس صحبت کنید. برنامه نویس موفق می داند اگر در یک جلسه با توسعه دهندگان دیگر هست، بهتر است قبل از هر کاری با دقت به صحبت های دیگران توجه کند و در مورد آن ها فکر و تحلیل کرده و سپس نظر خود را بیان نماید و در مورد ایده های خود صحبت کند.
کسی که مدام در حال نظر دادن است و راه حل های مختلف ارائه می دهد بدون این که به صحبت های دیگران گوش کند، کمتر یاد می گیرد و ممکن است بیشتر اشتباه کند. برنامه نویس موفق سعی می کند از طریق گوش کردن به دیگر همکاران، دانش خود را بالا ببرد و بعد از تفکر، صحبت کند.
یک اشتباه رو دوبار تکرار نکنید
آمیت کالانتری روانشناس و نویسنده هندی حرف قشنگی میزنه. اون میگه :
اگر یک عذرخواهی با یک بهانه یا دلیل همراه شود، به این معنیه که اون شخص قراره دوباره مرتکب همین اشتباه بشه.
بدیهیه که میخواهیم نرم افزارمون به درستی کار کنه. درواقع، بیشتر ما امروز برنامه نویس هستیم چون یه بار این کارو درست انجام دادیم و قصد تجربه مجدد اون حس خوشحالی و رضایتمندی رو داریم. اما ما تنها کسایی نیستیم که میخوایم نرم افزار کار کنه. مشتری و کارفرمای ما هم همینو میخوان. درواقع، اونا به ما پول میدند که نرم افزاریو بسازیم که طبق خواسته اونا کار کنه.
تا اینجاش که خوبه. اما هیچ نرم افزاری بی عیب نیستد. هر کدوم یه اشکالاتی دارن.
کلید اصلی ماجرا این نیست که یک کد بی عیب و نقص بنویسید. این اتفاق یه تصور خیالیه که هیچ وقتم محقق نمیشه. قبلا در این مورد صحبت شد که شما باید مسئولیت اشتباهاتتون رو بپذیرید.حالا نکته اینجاست که هیچ وقت یک اشتباه رو دوبار تکرار نکنید.
همونطور که توی کارتون رشد می کنید، میزان خطاهای شما هم باید کاهش پیدا کنه و به صفر نزدیک بشه. این عدد هیچ وقت به صفر نمیرسه، اما این وظیفه شماست که تا اون جا که ممکنه کمترش کنید.
منظم بودن
استعداد همه چیز نیست. استعداد یا توانایی در واقع تنها بخشی از فرایند عملکرد است. بخش دیگر نظم و انضباط است. یک مهندس نرم افزار یا برنامه نویس موفق و حرفه ای بدون انضباط مانند یک ناوبر با سابقه ولی بدون نقشه است.
کیفیت نباید فدای سرعت شود. اگر کیفیت را فدای سرعت کنید، در آینده ی نزدیک مجبور هستید آن را جبران کنید. سعی کنید از تجربه ی سایر برنامه نویس ها استفاده کنید و از اقدام هایی که برای کمک به توسعه دهندگان کم تجربه پیشنهاد داده اند، پیروی کنید. البته میزان اهمیت زمان را نیز باید برای کار توسعه در نظر بگیرید.
تمرکز بر موضوع مناسب در زمان مناسب
برنامه نویس های موفق تمایل دارند که روی یک هدف مشترک در یک پروژه خاص تمرکز کنند. یعنی وقتی مشغول انجام کاری هستند، تمرکز خود را روی همان کار می گذارند تا به اتمام برسد و مدام از آن کار به کار دیگر نمی پرند چون می دانند در آن زمان فقط باید همان کار را درست انجام دهند. بسیاری از برنامه نویس ها هستند که روی چند موضوع مختلف به صورت همزمان کار می کنند. با این که می دانند راه مناسب چیز دیگری است.
در حقیقت بدون این که روی هدف اصلی تمرکز کنند و برای آن راه حل بدهند، بر روی چیزهایی کار می کنند که ربطی به هدف ندارد. اگر بتوانید بر آن چه می خواهید تمرکز کنید، کارهایی را که ممکن است لازم باشد به راحتی انجام خواهید داد.
مستند سازی
شاید این جذابترین عادت در لیست عادات خوب برنامهنویسی ما نباشد، اما بیشک داشتن خصوصیت مستندسازی بسیار عالی است. مستندسازی کارها اهمیت بسیار زیادی دارد. آیا تاکنون با یک ریپازیتوری سروکار داشتهاید که هیچ مستندانی در مورد شیوه تنظیم صحیح موارد مختلف یا طرز کار اپلیکیشن ارائه نکرده باشد؟
پس از خواندن کامل کد به مدت چند ساعت، این احتمال وجود دارد که همچنان هیچ سرنخی در مورد طرز کار آن نداشته باشید. در این موارد است که مستندات به کار میآید. به عنوان یک مقدار کمینه همواره باید یک فایل readme.md مناسب برای پروژههای خود داشته باشید که در مورد کاری که اپلیکیشن انجام میدهد و شیوه تنظیم و راهاندازی آن توضیح داده باشد.
بخش هیجانانگیز مستندسازی این است که میتوانید آن را همراه با کدنویسی انجام دهید. برای نمونه زمان خود را صرف انتخاب نامهای گویا برای متغیرها بکنید، چون این کار ارزش زیادی دارد. انتخاب نامهای خوب برای متغیرها، متدها و کلاسها کاری زمانگیر است، اما موجب صرفهجویی زمانی زیادی در بلندمدت میشود.
هرگز از یادگیری دست نکشید
چنان که «ایزاک آسیموف» (Isaac Asimov) اشاره کرده است: «روزی که یادگیری را متوقف کنید، روزی است که حرکت رو به زوال را آغاز میکنید.»
این موضوع در دنیای فناوری که همه چیز با سرعتی فزاینده در حال تغییر است، به طور خاصی صحیح است. امکان همراه شدن با همه مواردی که در حال تغییر هستند، وجود ندارد و حتی اگر امکان این کار وجود نیز داشت، کاری عاقلانه محسوب نمیشد. اما نباید این موضوع موجب شود که یادگیری را به کلی کنار بگذارید، بلکه باید تلاش کنید هر چند مدت یک بار یک زبان برنامهنویسی جدید یا یک فریمورک تازه را یاد بگیرید.
معنی این حرف آن نیست که باید در زمینه همه زبانهای برنامهنویسی یا همه فریمورکها به فردی خبره تبدیل شوید، بلکه میتوانید برخی از آنها را امتحان کنید و ببینید آیا آنها را دوست دارید یا نه. زمانی که به تحقیق در مورد برخی از مسائل خاص که در زبانها یا فریمورکهای دیگر برنامهنویسی حل شدهاند، میپردازیم، بینش خوبی کسب کرده و به عنوان یک برنامهنویس رشد میکنیم.
درک نیازهای کسب و کار
همه برنامه نویس های موفق متوجه می شوند که کدها باعث ایجاد مشاغل می شوند. آن ها پیشنهادها و ایده هایی را جهت حمایت از شرکت برای کسب سود به ارمغان می آورند.
فعال بودن
موفق ترین برنامه نویس ها، هرگز روی چیزهایی که از کنترل آن ها خارج است تمرکز نمی کنند. آن ها از روش پیشگیرانه پیروی می کنند. به موقع سر کار می آیند و انرژی خود را به طور کامل روی چیزهایی که می توانند کنترل کنند، سرمایه گذاری می کنند. حتی وقتی وظایفی را تعیین نکرده اند ، وقت خود را صرف یادگیری فناوری ها و مفاهیم جدید می کنند. آن ها در پی مطالعه و پیشرفت مداوم هستند. تمرکز بر موارد مهم و فعال بودن به شکل گیری مهارت های عالی جدید کمک می کند.
هیچ چیز رو به شانس واگذار نکنید
اگر چیزی اشتباه به نظر برسه، قطعا تو آینده شمارو با مشکل مواجه می کنه و هیچ شانسی هم نمیتونه مانع از اتفاق افتادنش بشه.
چجوری میتونین مطمئن شین که کدتون بدون اشتباه کار میکنه؟ جوابش اینه که تستش کنید.
حتی اگر مهلتتون تموم شده و فشار زیادی روتون هست که گوشه های کار رو بزنید و تمومش کنید، به هیچ وجه این کارو نکنید. از هر مدل تستی که بلدین استفاده کنین. تست هایی مثل Unit Testing, Integration Testing میتونه خیلی کمکتون کنه.
اعتبار شما بستگی به این داره که، کدتون چقدر درست کار می کنه و فقط تست کردنه که میتونه احتمال درستی کد روبه 100% نزدیک کنه. مسئولیت کدتون با خودتونه، پس بهتره خط به خطش رو تست کنید.
حالا اگه کدی که نوشتین "غیر قابل تست" باشه چی؟
راه حلش اینه که کدتون رو برای تست کردن ساده کنید و بهترین روش برای این کار اینه که تست هارو قبل از نوشتن کد آماده کنین.
برنامه ریزی کردن
اگر شما یک توسعه دهنده هستید و مایل به دستیابی سریعتر به اهداف هستید، برنامه ریزی را شروع کنید. وقتی قبل از برنامه نویسی برنامه ریزی می کنید، با توجه به نیازهای داده شده، اهداف شما سریع تر از حد معمول محقق می شود. توسعه دهندگان ماهر، اول از همه، هسته اصلی مشکل را تجزیه و تحلیل می کنند. آن ها معتقدند که این اشتباه ها را در روند کار کاهش می دهد.
اشتراک گذاری کد
به اشتراک گذاشتن کد یک فرصت عالی برای برنامه نویس هایی است که می خواهند به مرور زمان یاد بگیرند و پیشرفت کنند. چنین رفتاری می تواند مزایای زیادی برای شما به همراه داشته باشد:
- کد شما توسط توسعه دهندگان دیگر دیده می شود و می توانید از آن ها بازخورد داشته باشید.
- شما با فشار اجتماعی کار می کنید، به این معنی که احساس مسئولیت بیشتری خواهید کرد تا پروژه های خود را به موقع به پایان برسانید.
همیشه کداتونو منعطف بنویسین
فرض اصلی پروژه های نرم افزاری، اینه که به راحتی قابل تغییرن. اگه کدی که شما مینیویسین این قابلیتو نداره ینی یه جای کارو اشتباه رفتین.
پروژه های زیادی دچار این مشکل میشن. تو این پروژه ها، برنامه نویسای زیادی میان و میرن و هرکدوم به این کد غیر منعطف چیزی رو اضافه می کنند و در نهایت یه هیولایی رو بوجود میارند که نه میشه دوباره نوشتش نه میشه براحتی نگهش داشت.
کلید اصلی حل این چالش اینه که قسمت هایی از کد که باعث این عدم انعطاف شدن رو پیدا کنید. وقتی اون قسمت هارو پیدا کردین به جای اینکه به این آشفتگی چیز دیگه ای اضافه کنین، تلاش و زمانتون رو صرف دوباره نوشتن اون قسمت ها کنین. درسته ممکنه با این تغییرات جدید از ددلاینتون عقب بیفتین، ولی مطمئن باشین تلاش شما ارزششو داره و پشتیبانی اون قسمت خیلی راحت تر میشه.
یه اصلی هست به اسم Merciless Refactoring، یا اصلاح بی رحمانه. به این معنی که زمانی نوشتن یه کد رو به پایان برسونین که مطمئنین ازین بهتر و تمیز تر نمیشد بنویسینش. سعی کنید همیشه این اصل رو رعایت کنید.
سخن پایانی
زمانی که میخواهید خود را به عنوان یک برنامهنویس خوب از توده افرادبذنامه نویس جدا کنید، عادات خوب زیادی وجود دارند که میتوانید در خود ایجاد کنید. در این مقاله به بررسی سیزده عادت خوب برنامهنویسی پرداختیم که اغلب توسعهدهندگان باید در مسیر کسب آنها تلاش کنند. تلاش کنید این عادات برنامهنویسی را به نوبت در خود ایجاد کنید. به خاطر داشته باشید که برای ایجاد این عادات خوب در خودتان به زمان و پشتکار نیاز دارید و این عادتها در طی یک شب در فرد ایجاد نمیشوند.
اگر عادت دیگری می شناسید، آن را با ما در میان بگذارید.