نسخه صوتی این مقاله را در قسمت چهارم پادکست کافه برنامه نویس گوش کنید:
کست باکس | اپل پادکست | گوگل پادکست
لری وال، سازنده زبان پرل، یه جمله معروف داره. اون میگه:
توسعه دهندگان بزرگ دارای سه ویژگی اخلاقی هستند: تنبلن، صبرشون کمه و مغرورن.
شاید این حرف براتون عجیب باشه. ولی دلایلی که آورده جالبن.
تنبلن چون حال نوشتن کدای طولانی رو ندارن و با کمترین کد، تسک هاشون رو انجام میدن. از طرفی برای کداشون داکیومنت درست می کنن تا نیاز نباشه به سوالای زیادی پاسخ بدن.
صبر کمشون باعث میشه تو حین نوشتن یه برنامه، پیش دستی بکنن و امکاناتی رو به اون اضافه کنن که مطمئن هستن جزو درخواست های بعدی کارفرما خواهد بود.
و اعتماد به نفس بالایی دارند برای اینکه اونارو مجبور کنه کدای حرفه ای بنویسن تا بقیه نتونن ازش ایراد بگیرن.
برنامه نویسای موفق لزوما جزو بهترین و بزرگترین برنامه نویسا نیستند.
برنامه نویسی که تسک های روزانه اش رو درست و به موقع انجام میده خیلی مفیدتر از اون کسیه که با وجود نوشتن کدهای پیچیده، نمیتونه اونارو به موقع تحویل بده. به دلیل این که برای بیشتر کارفرماها حجم کار انجام شده مهمه تا اینکه لول کار بالا باشه ولی خیلیشون نصفه و نیمه رها شده باشن.
موفقیتی که شما به دنبال اون هستید نشات گرفته از دیدی هست که شما نسبت به خودتون و دنیاتون دارین و اینکه عادات برخوردتون با چالش های زندگی به چه نحوی هست. به گفته محققان دانشگاه دوک دلیل 40% از موفقیت های ما برمیگرده به عادت هایی که تو زندگی داریم.
در ادامه تعدادی از عادت های قدرتمند برای تبدیل شدن به یک برنامه نویس موفق رو بررسی می کنیم.
استیو مارابولی محقق آمریکایی میگه:
انجام کار درست و انجام کار سخت هر دوشون یه چیزن. و هردوی اون ها مستلزم حرفه ای گری هستن.
حرفه ای بودن یه شمشیر دو لبس. از یه طرف باعث میشه که فرد به خودش افتخار کنه و از طرف دیگه مسئولیت پذیری و پاسخگویی رو با خودش به همراه میاره و هر دوی اینا نتیجه همدیگه هستن. شما نمیتونید افتخار ناشی از حرفه ای بودن رو با بی مسئولیتی به دست بیارید.
تصور کنید شما یه سری تعییرات به اپتون دادین و اونو پابلیش کردین. یک مشکل جدی بابت کد شما پیش میاد و اپ برای یه روز از کار میفته و این اتفاق باعث میشه کارفرما متحمل هزینه زیادی بشه. تو این حالت شما فوقش میتونین تغییراتی که اضافه کردین رو به حالت قبل برگردونین اما خسارتی که زده شده قابل بازگشت نیست.
وقتی همچین اتفاقی بیفته، یه برنامه نویس آماتور شونه هاش رو بالا میندازه و میگه "اتفاق پیش میاد" و شروع میکنه به نوشتن ماژول بعدی. اما یک شخص حرفه ای مسئولیت کارش رو برعهده میگیره و از اتفاقی که افتاده ابراز شرمندگی میکنه و این اطمینان رو میده که دیگه همچین اشتباهی تکرار نمیشه.
همیشه به یاد داشته باشید که حرفه ای گری یعنی مسئولیت پذیر بودن. امکان نداره که همیشه حق با شما باشه و کارهاتون همونجوری پیش بره که انتظارشو دارین. اما نیاز هست که همیشه اشتباهاتی که انجام دادید رو بپذیرید و به دنبال جبران و تصحیحش باشید.
آمیت کالانتری روانشناس و نویسنده هندی حرف قشنگی میزنه. اون میگه :
اگر یک عذرخواهی با یک بهانه یا دلیل همراه شود، به این معنیه که اون شخص قراره دوباره مرتکب همین اشتباه بشه.
بدیهیه که میخواهیم نرم افزارمون به درستی کار کنه. درواقع، بیشتر ما امروز برنامه نویس هستیم چون یه بار این کارو درست انجام دادیم و قصد تجربه مجدد اون حس خوشحالی و رضایتمندی رو داریم. اما ما تنها کسایی نیستیم که میخوایم نرم افزار کار کنه. مشتری و کارفرمای ما هم همینو میخوان. درواقع، اونا به ما پول میدند که نرم افزاریو بسازیم که طبق خواسته اونا کار کنه.
تا اینجاش که خوبه. اما هیچ نرم افزاری بی عیب نیستد. هر کدوم یه اشکالاتی دارن.
کلید اصلی ماجرا این نیست که یک کد بی عیب و نقص بنویسید. این اتفاق یه تصور خیالیه که هیچ وقتم محقق نمیشه. قبلا در این مورد صحبت شد که شما باید مسئولیت اشتباهاتتون رو بپذیرید.حالا نکته اینجاست که هیچ وقت یک اشتباه رو دوبار تکرار نکنید.
همونطور که توی کارتون رشد می کنید، میزان خطاهای شما هم باید کاهش پیدا کنه و به صفر نزدیک بشه. این عدد هیچ وقت به صفر نمیرسه، اما این وظیفه شماست که تا اون جا که ممکنه کمترش کنید.
اگر چیزی اشتباه به نظر برسه، قطعا تو آینده شمارو با مشکل مواجه می کنه و هیچ شانسی هم نمیتونه مانع از اتفاق افتادنش بشه.
چجوری میتونین مطمئن شین که کدتون بدون اشتباه کار میکنه؟ جوابش اینه که تستش کنید.
حتی اگر مهلتتون تموم شده و فشار زیادی روتون هست که گوشه های کار رو بزنید و تمومش کنید، به هیچ وجه این کارو نکنید. از هر مدل تستی که بلدین استفاده کنین. تست هایی مثل Unit Testing, Integration Testing میتونه خیلی کمکتون کنه.
اعتبار شما بستگی به این داره که، کدتون چقدر درست کار می کنه و فقط تست کردنه که میتونه احتمال درستی کد روبه 100% نزدیک کنه. مسئولیت کدتون با خودتونه، پس بهتره خط به خطش رو تست کنید.
حالا اگه کدی که نوشتین "غیر قابل تست" باشه چی؟
راه حلش اینه که کدتون رو برای تست کردن ساده کنید و بهترین روش برای این کار اینه که تست هارو قبل از نوشتن کد آماده کنین.
فرض اصلی پروژه های نرم افزاری، اینه که به راحتی قابل تغییرن. اگه کدی که شما مینیویسین این قابلیتو نداره ینی یه جای کارو اشتباه رفتین.
پروژه های زیادی دچار این مشکل میشن. تو این پروژه ها، برنامه نویسای زیادی میان و میرن و هرکدوم به این کد غیر منعطف چیزی رو اضافه می کنند و در نهایت یه هیولایی رو بوجود میارند که نه میشه دوباره نوشتش نه میشه براحتی نگهش داشت.
کلید اصلی حل این چالش اینه که قسمت هایی از کد که باعث این عدم انعطاف شدن رو پیدا کنید. وقتی اون قسمت هارو پیدا کردین به جای اینکه به این آشفتگی چیز دیگه ای اضافه کنین، تلاش و زمانتون رو صرف دوباره نوشتن اون قسمت ها کنین. درسته ممکنه با این تغییرات جدید از ددلاینتون عقب بیفتین، ولی مطمئن باشین تلاش شما ارزششو داره و پشتیبانی اون قسمت خیلی راحت تر میشه.
یه اصلی هست به اسم Merciless Refactoring، یا اصلاح بی رحمانه. به این معنی که زمانی نوشتن یه کد رو به پایان برسونین که مطمئنین ازین بهتر و تمیز تر نمیشد بنویسینش. سعی کنید همیشه این اصل رو رعایت کنید.
اشتیاق به یادگیری رو در خودتون پرورش بدید. اگر این کار رو بکنید، هیچ وقت رشدتون متوقف نمیشه.
میخوام دوره CCIE رو بگذرونم، اما کارفرما حمایتم نمیکنه.
میخوام React native یاد بگیرم. ولی نمیتونم یه زمان خالی توی برنامه شلوغم پیدا کنم.
همه این ها بهانه هایی هستن برای طفره رفتن از یادگیری. رشد کاری شما شما مسئولیت خودتونه. این وظیفه کارفرمای شما نیست که از رشد و پیشرفت شما مطمئن بشه یا اینکه شما رو آموزش بده یا حتی براتون کتاب بخره.
ساعات کاری هفتتون رو یه جوری تنظیم کنین، که علاوه بر تایم متعلق به کارفرماتون، یه ساعت هایی هم برای خودتون باقی بمونه که تو اون ساعت ها به آموزش و رشد خودتون بپردازین. میتونین از قاعده 20-40 استفاده کنید. ینی هفته کاری خودتون رو حداقل 60 ساعته در نظر بگیرین که 40 ساعت متعلق به کارفرما و 20 ساعت هم برای خودتونه. اگر از وقتتون آگاهانه استفاده کنید 20 ساعت، کار اضافه در هفته، اصلا سخت نیست. سعی کنین یادگیری و رشد جزئی از عادت و فرهنگ زندگی روزمرتون بشه.
همیشه بیاد داشته باشید که دنیای نرم افزار همواره در حال تغییره و همه چیز در اون خیلی راحت میتونه تبدیل به یه دایناسور منقرض شده بشه. پس اگر میخواهید همیشه جلوتر از زمان خودتون باشید و با ارزش باقی بمونین، روی خودتون سرمایه گذاری کنید و همیشه در حال یادگیری باشید.
همونطور که Seema Openers گفته:
خود آموزی یه راه رشد ساده و در دسترس برای همس، اما فقط کسایی این کارو می کنن که نمیخوان زندگی کوچک و بی هدفی داشته باشند.
آیا شما هم عادتی داشتین که باعث انجام بهتر کارهاتون شده باشه؟
منبع: http://bit.ly/2X1uxio