برنامهنویسی به درد شما نمیخورد. همین الان دستنگهدارید و رشتهی دیگری را انتخاب کنید

چند سالی است که رشتهی کامپیوتر رو بورس است و جای برق قدیم را گرفته. هرکسی که رتبهی خوبی کسب کرده به هوای درآمد و کلاس کاری بالا و بعضاً کار راحت این رشته را انتخاب میکند.
حسنرا که ماهی 10 میلیون درآمد دارد و همهی خانواده حرفشرا میزنند فراموش کنید. اگر شرایطی که در این نوشته آورده ام را دارید, شما بهدرد این کار نمیخورید و هیچ وقت نمیتوانید به موفّقیّت حسن دستپیدا کنید. چرا؟ خب بیاید شروع کنیم.
فهرست مطالب
پیشدرآمد در سومین سال انتشار این نوشته
این نوشته پربحثترین چیزی است که من درمورد کامپیوتر نوشتهام. چه اینجا، چه از طریق ایمیل، چه در توییتر و ویرگول و… آدمهای زیادی درموردش با من صحبت کردهاند.
آدمهای زیادی هم با دیدن این نوشته به این فکر افتادهاند که شاید من آدم مناسبی برای مشاورهی شغلی و تحصیلی باشم و درمورد شرایط خودشان و ورود به این رشته از من سؤال کردهاند.
ببینید شما در آغاز دورهی جوانی هستید. برخلاف چیزی که برای شما تبلیغ میکنند، نه قرار است جوانی دوران شادی و خوشگذرانی شما باشد، نه روزگار تند میگذرد و نه آیندهی طولانیای پیش رو دارید (شاید فکرکنید با کلمات قبلی در تضاد است، ولی اگر کمی درمورد زندگی بیشتر فکرکنید متوجّه منظورم میشوید).
حقیقتش این است که همهی آدمها نمیتوانند هروقت که فهمیدند مسیرشان اشتباه است آن را تغییر بدهند. شما برای این کار باید پول و حمایت خارجی کافی و توان ذهنی فراوان داشته باشید. نگذارید دیگران با دروغ سرزمین رؤیاها گولتان بزنند.
خیلیها از من خرده میگیرند که تو با این کارت دیگران را ناامید میکنی و باعث میشوی بازار کار کامپیوتری که همین الان هم از فرط نبود نیروی کار متخصص دارد نابود میشود، خالیتر از قبل بشود.
خب واقعاً هدف من هم همین است. من ترجیح میدهم آدمهایی را که نسبت به خودشان و راهی که میخواهند بروند شناخت کافی ندارند، از این راه ناامید کنم.
من این نوشته را پس از دیدن آدمهایی در دانشگاه، فامیل و… نوشتم که به امید پول خوب درآوردن و زندگی راحت داشتن وارد این کار شدند. ولی دیدند که نمیتوانند آن را ادامه بدهند و حالا بدون کار و درآمد برای خودشان ول میچرخند.
فراموش نکنید بهترین رفتار در مقابل مسیر اشتباه، طی نکردن آن است.
این نوشته را بخوانید. این ۱۰ مورد چیزهایی هستند که من در اکثر برنامهنویسهای موفق دیدهام. ببینید چقدر شبیه به یک برنامهنویس موفق هستید یا چقدر میتوانید شبیه به آن رفتار کنید. لازم نیست تمام این موارد شامل حالتان شود. ولی به شما میتواند یک ایدهی کلّی بدهد که آیا به درد این کار میخورید یا نه.
1-بلد نیستی کد بزنی؟
خب ببینم تا امروز کد زدی؟ حتّی یک برنامهی کوچک. اصلاً برنامهنویسی را فعلاً بیخیال میشویم. تا امروز یک صفحهی وب ساده با کدهای css و html ساختهای؟ اگر نه, متأسفم. احتمالاً این کار به درد شما نمیخورد.
این حرف را علاوه بر تجربهی شخصیام با دلایلی منطقی میزنم. برنامهنویسی کار فوقالعاده مشکلی است. گول جوانکهای مو فرفری و تیشرت پوشیدهی برنامههای تلویزیونی را نخورید که با عینک گرد پشت مکبوکشان نشسته اند و دارند از ماگ «گیکنشان»شان قهوه مینوشند.
نرمافزار(و البته سختافزار, ولی چون حوزهی کاری خودم نرمافزار است در مورد آن صحبت میکنم) فوقالعاده پیچیده است.
شما برای اینکه نرمافزارتان یک کار نسبتاً کوچک انجام دهد, مخصوصاً در 3-4 سال اول که تجربه و دانش بسیار کمی دارید, باید روزها و ساعتها زحمت بکشید.
اگر میخواهید تصویری از یک برنامهنویس در ذهنتان داشته باشید, فردی که پس از 18 ساعت کار مداوم, رأس ساعت 3 بامداد, دارد با مشت توی سر خودش میکوبد و به باگی که 12 ساعت تمام وقتش را گرفته و هنوز رفع نشده بد و بیراه میگوید, تصویر معقولتری است.
وقتی تجربهای از این سختی ندارید, نمیدانید که از این نوع سختی کشیدن خوشتان میآید یا نه. و از آنجایی که اکثر انسانها از چنین چیزی خوششان نمیآید, به احتمال زیاد پس از ورود به رشتهی مهندسی کامپیوتر میفهمید که چه اشتباهی کرده اید.
بهعلاوه برای برنامهنویس بودن باید بینهایت کنجکاو باشید. اگر تا امروز, یعنی سن 18 یا 19 سالگی, آنقدر کنجکاو نبودهاید که چندخط کد بزنید, پس به احتمال خیلی زیاد از این به بعد هم در این حوزه بهاندازهی کافی کنجکاو نخواهید بود.
منظور من از این صحبتها این نیست که شما قبل از ورود به دانشگاه برای این رشته باید «برنامهنویس» باشید. ولی من فکر میکنم باید یک ایدهی کلّی نسبت به کار داشته باشید.
به علاوه خودآموزی (self learning) یکی از مهمترین مهارتهایی است که شما به عنوان یک برنامهنویس باید داشته باشید.اینترنت هم پر است از آموزشهای سطح ساده برای برنامهنویسی به زبانهای فارسی و انگلیسی. اینکه بدون هیچ برخوردی با کد بخواهید وارد این رشته بشوید ریسک اینکه ذهنیت اشتباهی ازش داشته باشید و خیلی زود از آن زده بشوید را زیاد میکند.
اگر میخواهید بدانید به درد این کار میخورید، همین الان یک آموزش خیلی ساده از یک زبان سطح بالا مثل پایتون یا جاوااسکریپت را ببینید و سعیکنید یک برنامهی ساده مثل محاسبهی فاکتوریل را بنویسید. کل کارهایی که باید بکنید بیشتر از ۳-۴ ساعت وقتتان را نمیگیرد. ولی میتواند یک پیشزمینهی ذهنی حداقلی برایتان ایجاد کند.
2-از پیچیدگی گریزانی؟
اگر مقابل مسائل و چیزهای پیچیده دست و پایتان را گم میکنید و توانایی تفکّرتان را از دست میدهید, این جا جای شما نیست.
همانطوری که در بخش قبل گفتم نرمافزار فوقالعاده پیچیده است. بهعلاوه بخش بزرگی از دوران زندگی شما به کار کردن روی ساختههای دیگران سپری میشود. ساختههایی که با وجود داکیومنت و طراحی خوب, همچنان بسیار پیچیده اند.
بهعلاوه, بسیاری از مسائلی که با آنها در این رشته روبهرو هستیم, مسائل پیچیدهای هستند. شما باید عاشق کار کردن با برنامهها, سیستمها و مسائل پیچیده باشید. وگرنه خیلی زود کم میآورید.
3-خلّاق و نافرمان نیستی؟
همیشه از قوانین موجود پیروی کردهاید؟ «بله قربان» و «چشم» کلماتی بودهاند که همیشه استفاده کردهاید؟ تا به حال سابقه نداشته کاری را به سبک خودتان انجام دهید و مسئولیتش را بپذیرید؟ پس دارید راه را اشتباه میروید.
خلّاقیّت چیزی است که برنامهنویس را از ماشینی که با آن کار میکند متمایز میکند. خیلی از راه حل های خوب امروزی حاصل سرپیچی از قوانین تثبیتشدهی قبلی هستند. اگر برنامهنویسان نافرمان نبودند ,هرگز چیزی به نام Agile بهوجود نمیآمد.
4-عاشق مطالعه و یادگیری نیستی؟
ببینید, یک تفاوت جدّی بین این رشته و بقیّهی رشتهها وجود دارد. اینجا هر ساعتی که میگذرد خیلی چیزها عوض میشوند. هرساعت صدها مفهوم, برنامه, زبان, فریمورک و… جدید ساخته میشود و صدها چیز قدیمی از بین میرود.
اگر میخواهید به عنوان یک برنامهنویس به زندگی ادامه بدهید, باید هرروز یادبگیرید. باید بتوانید خیلی سریع با چیزهای جدید کنار بیایید. باید تقریباً هرروز چندساعتی را به خواندن مقالات, دیدن ویدیوها و شنیدن پادکستهای آموزشی مشغول باشید. آن هم نه برای اینکه از دیگران جلو بیفتید, صرفاً برای اینکه از دور خارج نشوید.
برای اینکه با این حجم از دادهی جدید کنار بیایید نباید اهل مطالعه و آموختن باشید, بلکه باید عاشق آن باشید. در غیر این صورت بعد از یک ماه تبدیل به یک بازندهی افسردهی خسته میشوید که حالش از زندگی و کارش به هم میخورد.
5-اهل کمک و بخشش نیستی؟
دنیای کامپیوتر را کارهای عام و رایگان زنده نگه داشته است. شما به عنوان یک برنامهنویس باید هر هفته چند ساعت را به حل مشکلات دیگران بپردازید.
این حل مشکلات میتواند ساخت یک برنامهی متن باز باشد یا پاسخ دادن به یک پرسش در stackoverflow.
تمام برنامهنویسها از کمکهای دیگران استفاده میکنند و به دیگران کمک میکنند. خیلی وقتها پولی هم برای این کار نمیگیرند. اگر با هر بخش از این کار مشکل دارید حتّی نزدیک به برنامهنویسی هم نشوید.
6-از انگلیسی خوشت نمیآید و نمیتوانی آن را یاد بگیری؟
ما به زبان انگلیسی کد میزنیم. به زبان انگلیسی داکیومنت مینویسیم و به زبان انگلیسی با همدیگر در سرتاسر دنیا ارتباط برقرار میکنیم.
اگر الان انگلیسیات خوب نیست مشکلی ندارد. امّا اگر مطمئن نیستی که یک سال دیگر میتوانی در موضوعات مربوط به این رشته به انگلیسی بنویسی و بخوانی, بهتر است دور این کار را خط بکشی.
7-از کار سخت و طولانی فراری هستی؟
در بخش اوّل به این مورد اشاره کردم, ولی ارزش اینکه دوباره مطرح شود را دارد. اگر از عالم رؤیا خارج شویم میبینیم که کمتر برنامهای وجود دارد که با 8 ساعت کار در 5 روز هفته ساخته شده باشد.
خیلی از برنامههایی که شما امروز میبینید, حاصل 10 تا 18 ساعت کار صدها انسان حرفهای است. آن هم هر 7 روز هفته.
این مسئله هرچقدر که تازهکارتر باشید بیشتر نمود دارد. کاری که یک برنامهنویس حرفهای, که 10 سال است با فلان زبان کار میکند و پنجاه پروژه با فلان فریمورک زده است, در ده روز انجام میدهد, ممکن است برای شما یک ماه و نیم طول بکشد. یعنی 45 روز کار, آن هم روزی 12 ساعت.
وقتی وارد این رشته میشوید باید فشار فوقالعاده زیادی را به خودتان وارد کنید تا به دیگران برسید. اگر فکر میکنید که از عهدهی این کار برنمیآیید بهتر است فکر این رشته را از ذهنتان بیرون کنید.
چرا ما این سختیهارا تحمّل میکنیم؟ بهخاطر مورد بعدی.
8-عاشق آفریدن چیزهای جدید نیستی؟
این وجه اشتراک تمامی برنامهنویسهای دنیا است. ما عاشق آفریدن چیزهای جدید هستیم. برای یک برنامهنویس تحمّل تمامی این سختیها به لحظهای که برنامه اجرا میشود میارزد.
شما برای اینکه وارد این رشته شوید باید عاشق ساخت چیزهای جدیدی باشید که مشکلات دیگران را حل میکند. نه اینکه صرفاً ساختن را دوست داشته باشید, باید واقعاً عاشقش باشید. در غیر این صورت نمیتوانید این همه سختی را تحمّل کنید.
9-نمیتوانی کاری که کردهای را توضیح دهی؟
یک برنامهنویس صرفاً توضیح میدهد: الگوریتم را به صورت کد به کامپیوتر, کد را به صورت داکیومنت به دیگر برنامهنویسها.
هیچ کدی نیست که شما تنها انسانی در دنیا باشید که با آن کار میکند. اگر چنین کدی وجود دارد, آن کد چند بایت دادهی بیمصرف است.
شما باید قابلیّت این را داشته باشید که وقتی کاری را انجام میدهید, آن کار را حداقل به انسانی که از نظر دانش حرفهای همسطح شما است توضیح دهید. اگر نمیتوانید, سریعتر کامپیوتر را از لیست انتخاب رشتهتان خط بزنید.
10-آدم پولکیای هستی و فکر میکنی اینجا درآمد زیادی منتظرت است؟
متأسفم. از این خبرها نیست. برای اینکه بتوانی از کدت پول قابل توجّهی دربیاوری, باید تلاش خیلی زیادی بکنی و زمان زیادی صرف کنی . بهعلاوه اینجا آمریکا و اروپا نیست که به برنامهنویسها پول خوبی بدهند.
هنوز خیلیها برنامهنویسی را با بازی کردن با کامپیوتر همرده میدانند. قبول دارم که جو بهتر شده و درآمدها بالاتر رفته, ولی اگر مشوّق اصلی شما برای ورود به این رشته پول است میتوانم قول بدهم که به این خواسته نخواهید رسید.
در پایان باید بگویم که همیشه استثنا وجود دارد. شاید شما بتوانید کسی را پیدا کنید که برخی از این موارد شامل حالش میشده امّا الان برنامهنویس موفقی است. بله, شاید باشد. ولی احتمال اینکه شما این استثنا باشید بینهایت کم است.
بهخاطر داشته باشید که ما فقط و فقط همین یک زندگی را داریم. هیچوقت کورکورانه دست به قمار با عمرتان نزنید. بعضی از تصمیمات به سختی جبران میشوند.
در پایان اگر این 10 مورد شامل حالتان نمیشود واقعاً خوشحال میشوم که وارد این رشته شوید و بتوانیم در آیندهی نزدیک با هم همکار باشیم. امّا اگر موارد بالا شامل حالتان است دست نگه دارید.
اگر خانواده, فامیل, مشاور یا هرکس دیگری به نحوی دارد شما را مجبور به کامپیوتر خواندن میکند با منطق و مؤدبانه مقابلش بایستید.
این پدر و مادرتان نیستند که به خاطر بودن در رشتهای که مناسب شخصیتتان نیست عمرشان تلف میشود و رنج میکشند. این زندگی شما است و حالا شما یک آدم بالغ هستید. پس وقت این است که تصمیم درست را بگیرید.
امیدوارم این نوشته بتواند جلوی انتخاب اشتباه حتّی یک نفر را بگیرد.
The form you have selected does not exist.
یا حرفهای شو یا برنامهنویسی را رها کن.
چطور میشود در بازار کار خالی از نیروی سنیور ایران، بدون کمک دیگران و وقت تلفکردن خودت را تبدیل به یک نیروی باتجربه بکنی؟
پاسخ ساده است. باید حرفهای بشوی. چیزی که من در این کتاب به تو یاد خواهم داد.
همه که نباید مدیر پروژه باشن، یه سریا(تعداد زیادی) هم پشت میز میشینن کارهای روتین انجام میدن. مهم اینه بازار کار داره
بسیار عالی!
بنظرم «از ریاضی دل خوشی ندارید؟» هم میتونست یکی از گزینه های فرعی باشه!
ریاضی کمترین دخلی به برنامه نویسی دارد شما وقتی بخواهی سایت طراحی کنی یا یک برنامه اندرویدی اپلی یا ویندوزی ایجاد کنی دانش ریاضی رو کجاش میخای بکار ببری؟بله اگر بخواهی برنامه ای بنویسی که ماشین حساب باشد یا نرم افزار محاسبات ریاضی بکار میاید والا در حد چهار عمل اصلی بیشتر نیازی نیست