همه چیز خیلی هیجان انگیز به نظر میرسه و احتمالا بی صبرانه منتظری تا اولین هنرنماییت در عرصه و شغل برنامه نویسی رو در حالی که اشک توی چشمات جمع شده و با بغض از دلایل موفقیتت میگی، به جهانیان نشون بدی. ولی این وسط یه "اما"ی بزرگ بین تو و لحظات پرشکوهت در حال نشون دادن هنرنمایی برنامه نویسی ات وجود داره!
اون اما، مربوط میشه به اینکه: اما اصلا به شغل برنامه نویسی علاقه داری؟ اما توانایی حل مسئله رو در خودت پرورش دادی؟ اما طاقت ساعتها درگیری با یک مشکل توی برنامه ات رو داری در حالی که میدونی ممکنه در نهایت مشخص بشه مشکل فقط از یه اشتباه منطقی کوچیک بوده؟ اما میتونی با عصبانیت به میز جلوت مشت بزنی و فریاد بزنی: لعنتی تمام روزم بخاطر یه اشتباه تایپی رفت و هیچکس... تقریبا هیچکس نتونه دستش رو روی شونه ات بذاره و در حالی که سر تکون میده با تاسف بگه میفهممت رفیق... برای منم این اتفاق افتاده!
این مقاله داستان پیرزن یا پیرمرد و دریاست! داستان سانتیاگوی پیر که 85 روز هیچ ماهی نگرفت اما بعد از یک پیکار طولانی با یک مارلین بزرگ شکارش کرد! اما حدس بزن تهش چی شد! سانتیاگو با اسکلت ماهی مارلین به ساحل برگشت چون کوسهها مارلین رو خورده بودن! اما این بار دریای قصه ما دنیای برنامه نویسیه! به من اعتماد کن! خیلی وقتها سانتیاگوهای پیر دست خالی از این دریا بر میگردن و هیچ ماهی مارلین درشتی در کار نیست! خیلی وقتها برنامه نویسهای حرفه ای درست وقتی که مارلین رو شکار کردن میفهمن که فقط یه اسکلت به ساحل بردن. چون برنامه نویسی حرفه مناسب اونها نیست.
لازمه به همه اینا کاملا با دقت فکر کنی، چون این خطر بالقوه همیشه هست که تازه واردها بخاطر شرایط بد کار یا مشکل مالی یا شنیده هاشون از برنامه نویسهای پولدار به فکر وارد شدن به دنیای برنامه نویسی بیفتن. احتمالا در نهایت چیزی براشون نمیمونه جز چند سال رفته از عمر در حالی که از شیوه گذروندنش راضی نبودن! پس قبل از دست به کار شدن برای یادگیری برنامه نویسی این مقاله رو مطالعه کن! خوندن این مقاله رو حتی اگر همین الان یه برنامه نویس هستی بهت توصیه میکنم.
علائمی که نشان میدهند شما نباید برنامه نویس باشید
همیشه این رو یادت باشه: بیشتر وقتها تو هوش و یا حتی دانش لازم برای برنامه نویسی رو داری. بیشتر آدمها میتونن تبدیل به برنامه نویس بشن. حتی کودکان حالا میتونن به راحتی برنامه نویسی رو یاد بگیرن و برنامه بنویسن. زبانهای برنامه نویسی خیلی زیادی برای کاربردها و سلیقههای مختلف ساخته شدن. پس چی باعث میشه نتونی برنامه نویسی رو به عنوان شغل آینده ات حساب کنی؟ شخصیت! توی این قسمت بهت میگم که چه چیز هایی باعث میشن تو در نقش یک برنامه نویس احتمالا احساس خوشبختی نکنی! اگر این علائم رو درخودت دیدی بهت پیشنهاد میکنم بیشتر دنبال علایقت بگردی:
در یادگیری و حل مسائل مستقل نیستید
بعضی از برنامه نویسها توانایی حل مشکلاتشون رو به صورت خودمختار ندارن. اونها معمولا از جستجوی اینترنتی میترسن. وقتی مشکلی توی کدهاشون به وجود میاد همیشه ترجیح میدن قبل از هر کاری اون رو از برنامه نویسهای دیگه بپرسن. تعداد این دسته از برنامه نویسها اصلا کم نیست. کافیه سری به گروههای تلگرامی برنامه نویسی بزنی تا با لیست سوالات تکراری و عجیبی مواجه بشی که به راحتی با جستجو میتونن خیلی سریعتر به جواب برسن!
بعضی دیگه از برنامه نویسها برای تک تک چیزهای جدیدی که قراره یاد بگیرن به دنبال کلاسهای برنامه نویسی هستن. اونها هیچ وقت چیز بیشتری از چیزی که توی کلاسها بهشون گفته میشه یاد نمیگیرن. احتمالا اگر توی کلاسهای آموزشی برنامه نویسی شرکت کرده باشی با این افراد برخورد داشتی. افرادی که تک تک سوالاتشون رو از استاد میپرسیدن، توی حل کردن تمرینها مشکل داشتن و جوابها رو از دیگران میگرفتن.
اما مشکل اینجاست که همیشه استادی وجود نداره که سوالاتو ازش بپرسی. همیشه کسی نیست که همه چیز رو مو به مو بهت آموزش بده. تو یه سانتیاگوی پیر وسط دریایی و باید خودت از پس کوسههای کله چکشی بر بیای! و این شروع مشکلات توست! اگر سانتیاگوی مستقلی نباشی احتمالا بعد از مدتی کسل و نا امید میشی و تصورات سیاهی در مورد توانایی هات پیدا میکنی. روی قایق یکه و تنها از گرسنگی و گرما زدگی میمیری و خوراک کوسهها میشی! اگر این ویژگی رو داری بهت پیشنهاد میکنم به دنبال حرفه ای بگردی که در اون مستقل و متکی به خودتی.
اما شاید مستقل هستی و فکر میکنی میتونی مثل یک قهرمان برنامه نویسی رو یاد بگیری و بعد روی پای خودت بایستی. میتونی از خوندن راهنمای جامع برنامه نویس شدن شروع کنی و بعد، با دوره متخصص آموزش برنامه نویسی حرفه ای بشی!
عمل کردن را به فکر کردن ترجیح میدهید
خیلی از برنامه نویسها ترجیح میدن هرچه سریعتر بدون داشتن هیچ ایده ای دست به کد بشن و هرچیزی که به ذهنشون میرسه بنویسن. متاسفانه با پروژه ای پر اشتباه، غیر بهینه و کد هایی کثیف و غیر استاندارد مواجه میشن که بیشتر شبیه یک دیس اسپاگتیه! اونها فکر میکنن چندین هزار خط کد که فقط کار کنه، خیلی بهتر از ده خط کد استاندارد و تمیزه. تقریبا هیچ فکری پشت این کدها نیست و بنابراین حتی اگر نتیجه نهایی اون یک نرم افزار باشه که کار میکنه، کد اونها درست نیست. درست نبودن کد باعث بالا رفتن هزینههای نگهداری و بهبود و مشکل کردن اونها میشه. اگر تو از این دسته هستی باید بهت بگم بازار کار برنامه نویسی طالب چنین برنامه نویس هایی نیست!
از مسائل منطقی متنفرید
شغل برنامه نویسی یعنی حل مسئله، حل مسئله و حل مسئله! مسائل و چالشهای برنامه نویسی مسائل منطقی هستن. توی بعضی از موقعیتها با یک نگاه کلی فکر میکنی نوشتن یه برنامه خاص یا حل یک مشکل قرار نیست بیشتر از ده دقیقه طول بکشه. اما باید بهت بگم خیلی از این مواقع، در پایان روز غم زده به غروب آفتاب خیره میشی. فکر میکنی چطور ممکنه حل یک مسئله به ظاهر ده دقیقه ای یک روز کامل درگیرت کنه؟ اما این چیزیه که توی دنیای برنامه نویسی کاملا ممکنه! تو باید عاشق حل مسئله باشی تا بتونی با ساعتها درگیری با اون کنار بیای و حتی ازش لذت ببری.
پیشرفت شغلی عادی و ثابت را میپسندید
در شغل برنامه نویسی باید همیشه در حال یاد گرفتن باشی. تقریبا هیچ استراحتی از یادگیری وجود نداره. ماه به ماه تکنولوژیهای جدیدی پا به عرصه میذارن. اگر آدمی باشی که دوست نداشته باشی مدام در حال یاد گرفتن باشی بعد از مدتی به کلی از نیازهای بازار کار عقب میافتی. به علاوه بعد از یاد گرفتن هر زبان برنامه نویسی تعداد زیادی کتابخونه، فریمورک و ابزار برای اون زبان وجود داره که باید یاد بگیری با استفاده از اونها بهتر کد بزنی و برنامههای استانداردتری بنویسی.
حقوق یا دستمزد یک برنامه نویس رو علاوه بر سابقه و نمونه کار، دانش و به روز بودن اون برنامه نویس تعیین میکنه. درست همونطور که سانتیاگوی پیر به تناسب بزرگی اسکلت ماهی مارلین عزت و احترام گذشته اش رو دوباره به دست آورد و قهرمان شد! سانتیاگو برای ماهی گیری از روشها و ترفندهای استانداردی استفاده میکرد که ماهی گیرهای دیگه بی اهمیت تصورشون میکردن! البته متاسفانه استثناً ترفند هاش نتونست جلوی کوسههای کله چکشی رو بگیره. اما به هر حال حداقل با اون ترفند ها، کوسهها به نوایی رسیدن و خودش سریال بی پایان شکست رو به سرانجام رسوند!
در واقع توی کار برنامه نویسی تو با یاد گرفتن، پیشرفت شغلی خودت رو تضمین میکنی. بنابراین اگر طالب این هستی که فقط به تناسب سالهای سابقه کارت فیش حقوقیت درخشانتر بشه برنامه نویسی شغلی که دنبالش میگردی نیست!
دوست دارید ساعات کاری منظمی داشته باشید
اگر به دنبال اون هستی که صبح به سر کار بری و بعد از 8 ساعت کار برگردی به خونه و با خانواده تلوزیون ببینی خبر بدی برات دارم! توی اکثر شرکتهای برنامه نویسی روزهای آخر تحویل پروژه فشار کاری زیاد میشه. خیلی وقتها اعضای تیم مجبور میشن برای تحویل پروژه در مهلت مقرر ساعات بیشتری رو کار کنن.
شاید با خودت بگی که من دوست دارم یه فریلنسر بشم. اما این وضعیت حتی برای فریلنسرها هم وجود داره. خیلی وقتها فریلنسرها هم مجبور میشن برای تحویل پروژه در مهلت تعیین شده توی روزهای آخر شبانه روز کد بزنن! چرا؟ چون برای یک فریلنسر یا حتی شرکت برنامه نویسی، تحویل در مهلت تعیین شده یعنی همه چیز!
سانتیاگوی پیر وقتی هنوز قرص ماه توی آسمون بود بیدار میشد و وسایل ماهی گیری اش رو به همراه مانولین شاگرد کوچک وفادارش جمع میکرد. سانتیاگو سه روز رو وسط دریا و روی یه قایق کهنه، بدون چیزهای استانداردی که ما بهشون میگیم غذا گذروند تا به هدفش برسه. به قول مانولین "مرد باید از اینجور کارها بکند!" من اون جمله رو اصلاح میکنم: "برنامه نویس باید از اینجور کارها بکند!"
دوست دارید سریعا پولدار شوید!
بذار داستان یک نوع از افراد نا امید از برنامه نویسی رو برات تعریف کنم! این شخص تجربیات پولدار شدنهای یک شبه مثل پولدار شدن برنامه نویس بازی Flappy bird رو میبینه. کم کم با خودش فکر میکنه برنامه نویسها دسته ای از دزدان دریایی کارائیبِ یابنده گنجهای مفتون هستن! نامبرده با هیجانی وصف نشدنی، شتابان به سمت دنیای برنامه نویسی میاد! حدستون درسته! شخص فوق الذکر دقیقا به دنبال پولِ باد آورده به این رشته رو آورده!
اما واقعیت اینه که اتفاق هایی مثل داستان Flappy bird به ندرت اتفاق میافتن! صد در صد اتفاق افتادن دوباره اونها ممکنه. اما اتفاق افتادنش بیشتر از دانش برنامه نویسی به دانش روان شناسی احتیاج داره! در ضمن اکثر اشخاص مشابه شخص فوق الذکر که امیدوارم تو جزوشون نباشی، میخوان یه نسخه مشابه فلپی برد بزنن و پولدار شن! جواب من به اون دوستان اینه: Flappy bird که قبلا ساخته شده دوست عزیز!
نسبت به نظرات دیگران انعطاف پذیر نیستید
توی کار برنامه نویسی باید ذهنت نسبت به نظرات دیگران کاملا باز باشه. باید روی اونها فکر کنی و بدون تعصب روی روش خودت، در صورت درستی بپذیریشون. مثلا وقتی یه برنامه نویس با سابقه بشی، ممکنه گاهی یه برنامه نویس تازه وارد، نظری بده که بتونه زمان اجرای برنامه رو از ده ثانیه به نیم ثانیه کاهش بده. و یا نظر اون زمان کد نویسی قطعه کد رو از 5 ساعت به نیم ساعت تبدیل کنه. اگر ذهنت نسبت به نظر اون فرد بسته باشه 4 ساعت و نیم اضافهتر کار کردی و برنامه ات هم 9 ثانیه و نیم کندتر اجرا میشه!
تحمل nerdها را ندارید
افراد با شخصیت نرد افرادی هستن که علاوه بر داشتن هوش و توانایی و علاقه شدید به چیزی که در اون نرد هستن، به شدت درون گرا هستن! باید بگم که دنیای برنامه نویسی پر از نرد غیر قابل درکه! افرادی که حتی به غذا خوردن و تفریحات عادی یک انسان(!) علاقه خاصی نشون نمیدن! ممکنه به چیزی که برات خیلی خنده دار و جالب به نظر میاد واکنشی جز یه لبخند سرد و زورکی تحویل ندن. و در عوض به موضوعی که اصلا نمیفهمید روزها بخندن! نمیشه گفت که همیشه برنامه نویسها نرد هستن. مسلما تا حالا برنامه نویسهای با شخصیتهای استاندارد و خوش مشرب زیادی دیدی! نرد بودن توی برنامه نویسی یه قانون نیست!
می خوام نظر صادقانه خودم رو بگم! متاسفانه در دنیای برنامه نویسی نردها همیشه تقدیس میشن. تقریبا فراموش شده که نرد بودن فقط یک تیپ شخصیتی خاصه و نه وظیفه برنامه نویس! برنامه نویسها لازم نیست همیشه نسبت به دنیای دور و برشون سرد به نظر بیان. نیازی نیست که دوست نداشته باشن خرید کنن. نیازی نیست ترجیح بدن مثل مارک زاکر برد همیشه تی شرت خاکستری بپوشن! بنابراین اگر نردها رو دوست نداری این اصلا عیب تو نیست، ولی میتونه باعث بشه بعد از چند وقت از کلکسیون همکارهای عجیب و غریب دلزده بشی!
شما کدنویس خلاقی نیستید!
وقتی گفتم برنامه نویسی یعنی حل مسئله حتما فهمیدی که به چی احتیاج داری! به قلابی برای فریادهای یافتم یافتم ارشمیدسی! اون قلاب چیه؟ خلاقیت! خلاقیت یعنی کشف راه حلهای جدید. خلاقیت یعنی نوشتن کدها با روشهای جدید و این توی برنامه نویسی یعنی همه چیز! بدون قلاب خلاقیت در کدنویسی نه تنها فریاد یافتم یافتمی توی کدنویسی ازت بلند نمیشه، بلکه مثل سانتیاگوی پیرِ داستان پیرمرد و دریا، بیشتر وقتها دست خالی از دریای برنامه نویسی بر میگردی!
نمی توانید برای مدت طولانی بنشینید
دنیای برنامه نویسی پر از نشستنهای طولانی مدت و طاقت فرسا پشت کامپیوتره. ممکنه بگی من ایستاده برنامه مینویسم اما به هر حال مجبوری به مانیتور زل بزنی! بعضی وقتها یک چالش اونقدر درگیرت میکنه که ناخودآگاه ساعتها از پشت کامپیوتر بلند نمیشی. فقط اگر خودت برنامه نویس باشی و تجربه کرده باشیش این جمله ام رو درک میکنی: تصور کن از صبح پای کد نشستی، متوجه زمان نشدی و الان اتاق کاملا تاریکه. عرق سرد روی بدنت نشسته. از درون داغی و از بیرون سردته. به علاوه گردن و چشم هات به شدت دردناک شدن! این موقعیت رو فقط وقتی میتونی تحمل کنی که مثل سانتیاگوی پیرِ ماهیگیر، پیرِ برنامه نویسی باشی. یعنی بدونی یه ماهی مارلین بزرگ شکار کردی که بردنش به ساحل کار هر کسی نیست!
زود عصبانی میشوید
هیچکس دوست نداره کنار برنامه نویسی باشه که بخاطر حل ناشدنی به نظر اومدن چالشهای برنامه نویسش با مشت به میز میکوبه و غر میزنه. گاهی استرس کاری توی شغل برنامه نویسی زیاد میشه. گاهی کدها واقعا چالش برانگیز و اعصاب خرد کن میشن! به کد نگاه میکنی اما به نظر هیچ مشکلی نداره. ولی به دلایل جادویی درست اجرا نمیشه! ساعتها کد رو بالا و پایین میکنی، خطوطی رو بهش اضافه و ازش کم میکنی اما نتیجه نمیده! سرچ میکنی و راه حلهای دیگران رو تست میکنی اما این فکر شاخدار به ذهنت میاد که نکنه کامپیوتر تو با بقیه فرق داره! چرا باید اونا جواب گرفته باشن؟
به شخصه وقتی بعد از ساعتها یک باگ چغر بد بدن رو رفع میکنم ممکنه دقایق زیادی با دهان باز به مانیتور زل بزنم! ممکنه بلند شم و دور خونه با شادی بچرخم! بعد دوباره بایستم و فکر کنم: صبر کن ببینم! این کد چرا الان داره کار میکنه؟! شاید باورت نشه که گاهی ممکنه اصلا نفهمی مشکل اون کد چی بود و بعد چرا حل شد! ساعتها وقت و انرژی برای چیزی که هیچ چیزی از فلسفه اش نفهمیدی رفته! بذار بهت بگم که چقدر ممکنه عصبانی بشی! به اندازه یه آتشفشان فعال!
دست سانتیاگوی پیر با کشش ناگهانی طناب قلاب ماهیگیری توسط مارلین پاره شد! در حالی که سه روز تمام اون نخ رو به دست گرفته بود و یک دستش بخاطر کشیدگی عضلات طولانی مدت چنگه شده بود! تصور کن؟! سه روز به حالت نشسته و در حالی که مجبوری یه طناب رو با کشش مناسب نگه داری و تازه تهش ماهی مارلین با همون نخ دستت رو پاره کنه! و اگر بخوای از عصبانیتت دستور بگیری قراره توی دنیای برنامه نویسی از گرسنگی بمیری!
نتیجه گیری
توی این مقاله از نشانه هایی گفتم که اگر در خودت پیدا کردی بهتره دوباره به برنامه نویس شدنت فکر کنی. این داستان سانتیاگوی پیره! داستان لحظات امید و ناامیدی، عصبانیت و صبر، خلاقیت، انعطاف پذیری و... ممکنه دستِ پر از دریای برنامه نویسی برگردی و در غیر این صورت یا میمیری و یا با یه اسکلت بزرگ بر میگردی! اگر نشانههای بالا رو نداری و میخوای یه سانتیاگوی پیروز در شغل برنامه نویسی باشی مقالات بعدی رو دنبال کن! اگر هنوز نمیدونی باید چه چیز هایی رو برای برنامه نویسی یاد بگیری میتونی مقاله من رو در مورد مواد لازم برای برنامه نویس شدن بخونی!
چه امتیازی به این مقاله می دید؟
1 2 3 4 5
نویسنده