(نسخه ۰.۰.۲۴)   www.locomo.tips :مهارت‌های کار، زندگی، برنامه‌نویسی با لوکوموتیو   

www.locomo.tips

پرسش و پاسخ
در زمینه‌ی برنامه‌نویسی و مسیر کاری و زندگی و …

با لوکوموتیو

نسخه ۰.۰.۲۴ - ۲۴ ژانویه ۲۰۲۲

https://twitter.com/Loc0m0 

۱. این سند چیه؟

من روز سه‌شنبه ۱۸ ژانویه ۲۰۲۱ ساعت حدود ۱۲ ظهر به‌وقت کالیفرنیا (می‌شه آخر شبِ ۲۸ دی‌ماه سال ۱۴۰۰) همچین توییتی زدم با اکانت ثانویه‌م و مورد استقبال دوستان واقع شد.


 حدود ۳ الی ۵ پیام در ساعت (متوسط) تا همین لحظه (۱۰ ساعت بعد) داره برام می‌یاد و خیلی قلباً دوست دارم که به همه جواب بدم.

منتهی چون بعد از جواب دادن به ۳۰ تای اوّل دیدم هی دارم خودم رو تکرار می‌کنم و به‌قول برنامه‌نویس‌ها DRY یا Don't Repeat Yourself خیلی چیز مناسبی نیست، گفتم شاید اگه همچین سندی رو و قسمت‌های اولیه رو اینجا بنویسم، بتونه خیلی کارها رو راحت بکنه.


فهرست

۱. این سند چیه؟        1

فهرست        2

۲. درباره‌        9

۲.۱. درباره‌ی من        9

۲.۱.۱. تخصص فنی        9

۲.۱.۲. تخصص غیرفنی        9

۲.۱.۳. چرا ناشناس؟        9

۲.۲. تماس با من        10

۲.۲.۱. نیاز اول) معرفی جامع توی پیام اوّل        10

۲.۲.۲. نیاز دوم) سؤالات دقیق        10

۲.۲.۳. ترجیح زیاد) توییت و منشن        10

۲.۲.۴. چرا جواب نمی‌دی؟        10

۲.۳. درباره این سند        11

۲.۳.۱. سلب مسئولیت        11

۲.۳.۲. حقوق معنوی این سند        11

۲.۳.۳. به‌اشتراک‌گذاری این سند        11

۲.۳.۴. آینده‌ی این سند        12

۳. …        12

۴. توصیه‌های متداول من        13

۴.۱. مهارت‌های فنی که یاد گرفتن‌شون خوبه (برنامه‌نویسی)        13

۴.۲. مهارت‌های فردی غیرفنی که یادگرفتن‌شون خوبه        14

۴.۳. مهارت‌های بین‌فردی که یادگرفتن‌شون خوبه        14

۴.۴. مهارت‌های زندگی از نگاه دیگران        15

۴.۴.۱. از نگاه یونیسف خاورمیانه و شمال آفریقا (MENA)        15

۴.۴.۲. از نگاه بنیاد آمریکاییان هند (American India Foundation)        16

۴.۵. چه‌جوری «خفن» بشم؟        17

۵. سؤالات رایج        19

۵.۱. احوالپرسی        19

۵.۱.۱. می‌تونم وقت‌تون رو بگیرم، سؤال بپرسم؟        19

۵.۱.۲. خوبی؟ چت کنیم؟        19

۵.۱.۳. من مطمئن نیستم سؤالم درست باشه… نمی‌دونم بپرسم یا نه…        19

۵.۲. منتورشیپ        20

۵.۲.۱. می‌شه منتور من بشین؟        20

۵.۲.۲. می‌شه coach من بشین؟        20

۵.۲.۳. می‌شه باهاتون ۱:۱ (جلسه صوتی/تصویری تک به تک) داشته باشم؟        21

۵.۳. شروع برنامه‌نویسی        22

۵.۳.۱. پول توش هست؟        22

۵.۳.۲. من می‌خوام تغییر رشته بدم. آیا برنامه‌نویسی برای من مناسب هست؟        22

۵.۳.۳. من به این نتیجه رسیدم که برنامه‌نویسی مناسب من نیست! مرسی؛ اه!        22

۵.۳.۴. از چه زبان برنامه‌نویسی‌ای شروع کنم؟        23

۵.۳.۵. از کجا شروع کنم؟        23

۵.۳.۶. چرا دانشگاه بریم؟ خودمون مثلاً از یوتیوب یاد می‌گیریم!  (سؤال از هادی)        24

۵.۳.۷. من زیر ۱۸ سال هستم و خودم برنامه‌نویسی یادگرفته‌ام/دارم می‌گیرم. توصیه خاصی؟        24

۵.۳.۸. بوت‌کمپ/دوره برم یا خودم یاد بگیرم؟        25

۵.۴. ادامه‌ی یادگیری برنامه‌نویسی        26

۵.۴.۱ آیا یادگیری الگوریتم و کلاً تئوری به درد برنامه‌نویسی در صنعت می‌خوره؟ (سؤال از هادی)        26

۵.۴.۲. بهتر نیست به‌جای الگوریتم بریم چیزهایی مثل clean code یا design pattern یاد بگیریم؟  (سؤال از هادی)        26

۵.۴.۳. ماشین لرنینگ از کجا یاد بگیرم؟        26

۵.۴.۴.. تکنولوژی چی یاد بگیرم؟        26

۵.۴.۵. تکنولوژی‌هایی که در آینده ترند می‌شه چیان؟        27

۵.۴.۶. کد تمیز چه‌جوری بزنم؟        27

۵.۴.۷. چه کتاب‌هایی بخونم؟        27

۵.۵. مسائل متفرقه برنامه‌نویسی        28

۵.۵.۱ من ۲۸ سالمه و تازه شروع کرده‌م. احساس می‌کنم دیره…        28

۵.۵.۲. من عاشق زبان‌های low level هستم. توصیه‌ای؟        28

۵.۵.۳. من خیلی علاقه‌دارم بدونم شرکت‌های بزرگ خارجی، چه‌جوری پروژه‌هاشون رو در این ابعاد درست می‌کنن! از کجا می‌شه بیشتر یاد بگیرم؟        28

۵.۵.۴. من خودم رو خیلی برنامه‌نویسی ماهری نمی‌دونم چی کار کنم؟        30

۵.۵.۴.۱. چرا به‌نظرم مستعدتر هستن برنامه‌نویس‌ها برای ایمپاستر گرفتن؟        30

۵.۵.۴.۲. چه‌جوری از این خراب‌شده‌ی ذهنی بیام بیرون، حالا؟!        33

۵.۵.۴.۳. یه نکته که یادمون نره: فیک ایمپاستر        37

۵.۵.۴.۴. آخری خلاصه خودمون رو دوست داشته باشیم یا نه؟ نکنه خودشیفته بشیم؟        38

۵.۵.۵. من از فلان چیز (گراف و الگوریتم و انتگرال) خوشم نمی‌یاد و اینا ربطی به برنامه‌‌نویسی (PHP و MySQL) نداره. چی‌کار کنم؟        39

۵.۵.۶. من دختر هستم / از ریاضی بدم میاد / درونگرا/عینکی نیستم. پس برنامه‌نویسی مالِ من نیست.        39

۵.۵.۶.۱. ریاضی و برنامه‌نویسی        39

۵.۵.۶.۲. برنامه‌نویسی و سایر mythها        40

۵.۵.۶.۳. آیا برنامه‌نویس‌ها واقعاً متفاوت هستن؟        41

۵.۵.۷. من دوست دارم «هوش مصنوعی» بخونم ولی بین نرم‌افزار و هوش مصنوعی مونده‌م برای کار. چه کنم؟        42

۵.۵.۸. من به‌نظرم فلان زبان خیلی سخت‌تر از بهمان زبان هست. آره؟        43

۵.۵.۹. فرانت‌اند خیلی مهندسی نیست! حوصله‌م سر رفته. چه کنم؟        44

۵.۶. رزومه/لینکداین، و سابقه کاری        46

۵.۶.۱. چه‌چیزی توی سابقه کاری من ممکنه حساسیت‌زا (red flag) باشه؟        46

۵.۶.۲. چه‌چیزی توی رزومه/لینکداین من ممکنه حساسیت‌زا (red flag) باشه؟        46

۵.۶.۳. چه چیزایی توی رزومه/لینکداین می‌تونه مثبت و کمک‌کننده باشه؟        48

۵.۶.۴. چه‌چیزی گیت‌هاب‌م رو جذاب کنم؟        48

۵.۷. زندگی شغلی        49

۵.۷.۱. چه‌جوری work/life balance داشته باشم؟        49

۵.۷.۱.۱. توصیه‌های من برای جنبه‌ی Work قضیه        50

۵.۷.۱.۱. توصیه‌های من برای جنبه‌ی life قضیه:        52

۵.۸. پیشرفت و ارتقای شغلی        53

۵.۸.۱. چه‌جوری تو جاب ترفیع پیدا کنم؟        53

۵.۸.۲. لول‌های مختلف برنامه‌نویسی، از نظر کاری، چیان؟        54

۵.۸.۲.۱. رده‌ی Junior Developer و ‌Intern (کارآموز)        54

۵.۸.۲.۲. رده‌ی  Software Engineer معمولی؛ یا SE1 و SE2؛ یا mid-level        55

۵.۸.۲.۳. رده‌ی Senior Software Engineer یا سینیور        56

۵.۸.۳. چه‌جوری از سنیور به بعد ارتقا پیدا کنیم؟        57

۵.۸.۴. چه‌جوری مدیر (منیجر) بشم؟        58

۵.۸.۵. چه‌جوری منیجر خوبی بشم (و بالاتر)؟        59

۵.۸.۶. چه‌جوری یه Tech Lead یا Staff Software Engineer بشم؟ و بعدش کارم رو خوب انجام بدم؟        60

۵.۸.۷. منیجر بشم یا IC بمونم؟        62

۵.۸.۸. کلاً چی‌کارا بکنم سرِ کار و کلاً در راستای شارپ نگه‌داشتنِ خودم؟        65

۵.۸.۹ چه کارهایی بکنم در راستای بهینه/پروداکتیوتر بودن و شارپ نگه‌داشتنِ فنی خودم؟        66

۶. ایران هستم.        67

۶.۱. ایران هستم. دانشجو هستم.        67

۶.۱.۱. چی کار کنم حین تحصیل؟ چی کار کنم که راحت جاب بگیرم؟        67

۶.۱.۲. من بک‌گراندم مهندسی کامپیوتر نبوده و خود‌آموز یاد گرفته‌م، الان هی ریجکت می‌شم چرا؟ (ایران)        68

۶.۱.۳. ارشد دارم می‌خونم/تموم‌شده و می‌خوام اپلای کنم آمریکا        69

۶.۲. ایران هستم. شاغل در برنامه‌نویسی هستم.        70

۶.۳. ایران هستم. غیره        70

۶.۳.۱. می‌تونی کمک کنی این ایده رو با هم بزنیم؟        70

۶.۳.۲. می‌تونی کمک کنی من این کدم رو درست کنم؟        70

۶.۳.۳. من درسم تموم شده و شاغل در چیزی جز برنامه‌نویسی هستم و می‌خوام فلان تکنولوژی (ماشین لرنینگ، هوش مصنوعی، غیره) رو یاد بگیرم. مسیرش چیه؟        70

۶.۳.۴. برنامه‌نویسی تا حدی بلدم. می‌خوام کسب و کار خودم رو بزنم تو ایران. از کجا شروع کنم؟        70

۶.۴.۱. من دارم فلان شرکت کار می‌کنم و تکنولوژی‌هاش قدیمیه چی‌کار کنم؟        71

۶.۵. ایران هستم و می‌خوام مهاجرت کنم        72

۶.۵.۱. تو ایران دارم کار می‌کنم. چه‌جوری می‌تونم بیام یه شرکت آمریکایی کار کنم؟        72

۶.۵.۲. مهاجرت تحصیلی راحت‌تر هست یا کاری؟        72

۶.۵.۳. می‌خوام تازه برنامه‌نویسی/تکنولوژی یاد بگیرم که باش مهاجرت کنم. راهی پیشنهاد داری؟        73

۶.۵.۴. برنامه‌نویسی بلدم، می‌خوام مهاجرت کنم، چیا مهمه تو رزومه؟        73

۶.۵.۵ زبان (انگلیسی) از کجا یاد بگیرم؟        73

۶.۵.۶. آیا می‌شه بدون مدرک لیسانس هم اپلای کرد؟        74

۶.۵.۷. منابع خاصی هست که بتونم دنبال کنم برای مهاجرت؟        74

۷. خارج از ایران هستم.        76

۷.۱. خارج از ایران هستم. دانشجو هستم.        76

۷.۱.۱. چه توصیه‌ای برای طول تحصیل دارین؟        76

فرض من اینه که هدف‌تون این هست تهش برین توی صنعت (۷.۱.۵ برای مقایسه صنعت و دانشگاه رو ببینین.)        76

۷.۱.۲. من صفرکیلومتر (تازه فارغ‌التحصیل) هستم. چه‌جوری جاب بگیرم؟        76

۷.۱.۳. چه استراتژی‌ای برای اپلای کردن برای کار درنظر بگیرم؟        77

۷.۱.۴. من هی رزومه دارم می‌فرستم و ریجکت می‌شم؟ چرا؟ :((        78

۷.۱.۴.۱. سابقه کار توی ایران در اپلای کاری در خارج        79

۷.۱.۴.۱.۱. تاثیر منفیِ سابقه کار توی ایران در اپلای کاری در خارج        80

۷.۱.۵. بین صنعت و آکادمی مونده‌ام!        80

۷.۱.۶. من بین دو تا شرکت مونده‌ام؛ چه عواملی رو باید مدنظر داشته باشم برای انتخاب ؟        83

۷.۲. برنامه‌نویس هستم. خارج از ایران. دنبال کار.        84

۷.۲.۱. کلاً داستان اینترویو چه‌شکلی هست؟ من هیچ‌ نظر خاصی ندارم.        84

۷.۲.۲. چه‌جوری خودم رو برای شروع اینترویوها آماده کنم؟        84

۷.۲.۳. برای مرحله‌ی صحبت کردن با ریکروتر چه چیزهای خوبه بپرسم؟        84

۷.۲.۴. برای مرحله‌ی آزمون‌های تلفنی (برنامه‌نویسی) چه‌جوری خودم رو آماده کنم و چیا بپرسم؟        84

۷.۲.۵. برای مرحله‌ی مصاحبه‌های حضوری (گروهی/نهایی) چه کارهایی بکنم؟        84

۷.۲.۶. چه توصیه‌هایی برای بعد از گرفتن آفر و negotiation و چونه‌زدن دارین؟        84

۷.۳. اروپا هستم و می‌خوام برم آمریکا/کانادا        85

۷.۴. سایر مهارت‌های خارج از ایران        85

۷.۴.۱. چه‌جوری speakingم رو قوی کنم؟        85

۸. پیشنهادات حرفه‌ای‌تر زندگی کردن        86

۸.۱. اُرگانایزد/مرتب بودن        86

۸.۱.۱. چه‌جوری خوب داکیومنت کنم که بعداً یادم بیاد چی کرده‌م؟        86

۸.۱.۲. چه‌جوری شونصد تا تب باز نداشته باشم؟        86

۸.۲. هدف داشتن و رسیدن به هدف‌ها        88

۸.۲.۱. چه‌‌جوری برای خودم هدف تعیین کنم؟        88

۸.۲.۱.۱. هدف باید دقیق یا Specific باشه        89

۸.۲.۱.۲. هدف باید قابل ارزیابی یا Measurable باشه        90

۸.۲.۱.۳. هدف باید رسیدنی یا Attainable/Achievable باشه        91

۸.۲.۱.۴. هدف باید مرتبط یا Relevant باشه        92

۸.۲.۱.۵. هدف باید مدت‌دار یا Time-Bound باشه        93

۸.۲.۱.۶. چراییِ هدف        94

۸.۲.۲. چه‌جوری به اهدافم برسم؟        97

۸.۲.۲.۱. شکستنِ بزرگ‌ها برای غلبه برشون        97

۸.۲.۲.۲. دنبال‌کردن و مدیریت اهداف به‌شکل پروژه        97

۸.۲.۲.۳. پایبندی و مسئول دونستنِ خودتون        98

۸.۲.۲.۴. ارزیابی        99

۸.۲.۲.۵. تشویق و reinforcement (و گه‌گاه تنبیه مهربونانه) و کودک درون!        100

۸.۲.۲.۵.۱. نکاتِ مهم در شناخت کودک درون:        100

۸.۲.۲.۶. عادت‌سازی        102


۲. درباره‌

۲.۱. درباره‌ی من

من یه دهه شصتی هستم که حدود ۱۰ سال هست که در سان‌فرانسیسکو زندگی می‌کنم. قبلش ایران بودم. سابقه‌ی کار در شرکت‌های بزرگ (گوگل) و متوسط و کوچیک رو هم دارم و الآن هم چند ساله روی یه پروژه شخصی کار می‌کنم.

۲.۱.۱. تخصص فنی

من رشته‌ی تحصیلی‌م مهندسی نرم‌افزار بوده و بعد هم هوش مصنوعی. تخصص کاری‌م روی الگوریتم از یک سمت، و فرانت‌اند از سمت دیگه بیشتر بوده؛ ولی با بک‌اند و DevOps و AWS و امثالهم هم سر و کله زده‌ام تا حد خوبی.

از نظر زبان و فریم‌ورک هم با ++C و PHP خیلی سالها کد زده‌م. (حدوداً ۱۰ سال پیش). اما در سه سال اخیر خیلی بیشتر با TypeScript و Vue.js و Quasar و Node.js و MySQL سر و کله می‌زنم.

اولین نرم‌افزار متن‌باز (Open Source)م رو هم حدود ۱۸ سال پیش با JavaScript نوشتم که ۱۱۰۰۰ کد اسپاگتی بود که هرازگاهی می‌خونم و بهش می‌خندم. :)

۲.۱.۲. تخصص غیرفنی

من به روانشناسی خیلی علاقه دارم. و کلاً حرف‌زدن راجع به زندگی و این‌که آدما چه‌جوری می‌تونن با مشکلات‌شون بهتر دست‌وپنجه نرم کنن. در این زمینه خیلی مطالعه می‌کنم و شاید یه موقعی رسماً مدرک هم گرفتم. :) به ادبیات (داستان کوتاه) و عکاسی هم خیلی علاقه دارم.

توی این زمینه‌ها هم خوشحال می‌شم کمکی بکنم. و معمولاً زیاد فضولی می‌کنم و نظر می‌دم توی توییت‌های مردم!

۲.۱.۳. چرا ناشناس؟

ترجیح شخصی من این هست که این اکانت توییتر و این برنامه از زندگی شخصی و هویت شخصی من ترجیحاً به‌دور باشه که هر موقع خواستم بتونم این رو متوقف کنم و روی زندگی واقعی‌م تمرکز کنم. امیدوارم در همین حد هم بتونم مفید باشم.

۲.۲. تماس با من

پیشاپیش ممنونم که بهم این فرصت رو دارین می‌دین که با کمک کردن به‌شما، خودم هم حس خوبی داشته باشم!

بهترین راه تماس با من در حال حاضر همین اکانت توییتر loc0m0 هست.

به دایرکت جواب می‌دم (سعی می‌کنم زیر ۲۴ ساعت.)

۲.۲.۱. نیاز اول) معرفی جامع توی پیام اوّل

  1. پروفایل لینکداین‌تون می‌تونه خیلی مفید باشه برای من که یه شناخت کلی ازتون داشته باشم.
  2. همچنین صفحه‌شخصی (homepage) اگه دارین و لینک github.

۲.۲.۲. نیاز دوم) سؤالات دقیق

اگه سؤال‌هاتون با شماره و دقیق باشه، خیلی بهتر می‌شه پیگیری کرد. :)

قبل از ارسال خودتون بخونین و اگه توی پیام‌تون علامت سؤال نیست، احتمالاً سؤالی نپرسیده‌این!

۲.۲.۳. ترجیح زیاد) توییت و منشن

اگه مشکلی ندارین، این‌که سؤالتون رو توییت کنین و من رو منشن کنین، خیلی بهتره. این شکلی بقیه دوستان صاحب‌نظر هم می‌تونن نظر بدن و به دانش جمعی می‌رسیم!

۲.۲.۴. چرا جواب نمی‌دی؟

من هم‌چنان سرعت دریافت نامه‌هام بیشتر از سرعت پاسخ‌دهی‌م هست. و این وسط یهو یه سؤال خوب میاد که مجبور می‌شم براش دو ساعت بنویسم اینجا و بعد لینک/شماره بدم.

از این‌که صبوری می‌کنین ممنونم. از ته (FIFO) دارم میام و اول قدیمی‌ها رو. مطمئن باشین که جواب می‌دم!

در حال حاضر (شنبه ۴ عصر SF - یکشنبه ۴ بامداد تهران) من ۲۴ ساعت عقب هستم توی دایرکت‌ها.


۲.۳. درباره این سند

۲.۳.۱. سلب مسئولیت

سلب مسئولیت / Disclaimer

تمامی مطالبی که اینجا و همین‌طور توی تماس‌های توییتری/تلگرامی/… رد و بدل می‌شه، نظر شخصی من هست به‌عنوان یه کاربر نسبتاً ناشناس.

این نظرات از نظر حقوقی و رویکردی ربطی به شرکتی که من توش کار می‌کنم نداره و قابل پیگیری نیست.

کلیه این نظرات هم در حد پیشنهاد غیرحرفه‌ای هست و هیچ قرارداد یا حق و حقوقی بین ما منتقل نمی‌کنه.

ضمناً در صورت مطرح کردن سؤال‌تون، شما این اجازه رو به من می‌دین که بدون ذکر نام یا ارجاع به شخص شما، از سؤال شما چه توی این سند، چه در آینده استفاده بکنم. اگه با این مورد مشکل دارین، حتماً توی پیام‌تون رسماً اعلام کنین.

 

۲.۳.۲. حقوق معنوی این سند

در حال حاضر من این سند رو با «کپی‌رایت برای خودم» دارم تنظیم می‌کنم تا حداقل به مرحله‌ی اوّل تکمیل برسه. صرفاً برای این‌که تمرکزم روی خودِ نوشتن باشه تا نگران این‌که چی‌ش کجا می‌ره.

بعدش به‌احتمال خیلی خیلی خیلی زیاد لایسنس‌ش رو CC BY-NC-SA خواهم کرد. ینی مصرف غیرتجاری با ذکر مرجع آزاد هست و درصورت تغییر و دخل و تصرف هم باید با لایسنس مشابهی یا سازگاری توزیع بشه.

کلاً هم، غیررسمی بخوام بگم، من هدف اصلی‌م از تنظیم این سند این هست که کمک کنم به دوستای دیگه (حس مفید بودن به خودم می‌ده) و تجربیاتم رو در اختیار بذارم (چیزی که خودم کمتر گرفتم، اما باز مدیون و مرهون کسایی هستم که به من هم کمک کرده‌ان تو مسیر شخصی و کاری خودم). همین و بس!

۲.۳.۳. به‌اشتراک‌گذاری این سند

لطفاً این سند رو همین فرمتی که هست و با آدرس اینترنتیِ locomo.tips به اشتراک بذارین. چون خیلی خیلی در حال تغییر هست و کپی یا عکس گرفتن ازش قطعاً باعث می‌شه که ویرایش/به‌روزرسانی‌های دائم رو از دست بده.

قطعاً وقتی که به یه نقطه‌ی ثابت برسه، ازش خروجی در فرمت‌های دیگه (مثل PDF) هم می‌شه گرفت. اما تا اون موقع صبور باشین. سپاس!

۲.۳.۴. آینده‌ی این سند

در حال حاضر و در ۴ روز ابتدایی من حدود ۸۰ صفحه نوشته‌ام.

پیش‌بینی من این هست که در یک ماه آینده این شاید تا حدود ۲۰۰ صفحه هم برسه. بعدش لازم هست یه‌سری بخش‌هاش ادغام بشه و یه refactoring کلی روش انجام بشه. بعدش فکر می‌کنم که به چه فرمتی بهتر هست که توزیع بشه. احتمالاً یه PDF خروجی و یه شماره‌دهی ویرایش (ورژن شماره یک)، حداقل خروجی‌ش خواهد بود.

۲.۳.۴.۱. کانال‌های دیگه

من فعلاً تمرکزم روی افزودن مطالب هست و نوشتنِ تجربیات ۱۰ الی ۲۰ سال گذشته‌م. واسه همین خیلی به بعدش فکر نمی‌کنم.

قطعاً می‌شه به فرمت‌های دیگه مثل کانال تلگرام یا وبسایت یا ویدئو یا وبینار یا درس‌نامه (یا به پیشنهاد امیر افروزه، کانال یوتیوب) هم می‌شه در بیاد. اما برای من کیفیتِ مطالب، در دسترس بودن، و همین‌طور امکان مدیریت با زمانِ کم از سمتِ من فعلاً اولویت هست.

دوست دارم پیشنهادات‌تون رو هم بشنوم (دایرکت توییتر).

۳. …

یه‌سری بخش‌ها رو merge کرده‌ام فعلاً این پریده! شماره‌ی بقیه رو هم نمی‌خوام عوض کنم الان. واسه همین ۳ فعلاً خالی هست. :))


۴. توصیه‌های متداول من

اینا ممکنه یه سری جمله‌ی کلیشه‌ای باشه؛ اما برای من خیلی‌هاشون واقعی‌ه و در زندگی خودم [بارها] اتفاق افتاده. و دوست داشتم یکی اینا رو بهم زودتر یادآوری می‌کرد!

قطعاً شنیدن و تجربه کردن متفاوته. اما خب می‌گن شما یه تبلیغ رو ۷ بار ببینی، احتمال داره که بعدش بخری. اینا انشالله دفعه اوّل از اون ۷ بار باشن! :)

۴.۱. مهارت‌های فنی که یاد گرفتن‌شون خوبه (برنامه‌نویسی)

  1. حتماً سعی کنین پروژه‌های شخصی‌تون رو توی گیت‌هاب بذارین که کاشی‌کاری حموم‌ش خوشگل بشه! خجالت هم نکشین. خودِ ۳-سال-دیگه‌ی شما ممکنه بخنده، اما افتخار هم می‌کنه که شما از اینجا شروع کردین!
  2. حتماً سعی کنین یه هوم‌پیج شخصی (دات کام؛ و نه رایگان) داشته باشین که توش بتونین هم نشون بدین که بلدین یه پروژه ساده (ساخت هوم‌پیج) رو انجام بدین، هم خوش‌سلیقه هستین، هم می‌تونین راحت خودتون رو عرضه کنین.
  3. حتماً لینکداین تر و تمیز داشته باشین. اسم و فامیل‌تون رو هم با حروف اوّل بزرگ بنویسین. حتماً رزومه‌ی مرتب هم داشته باشین. (خوشحال می‌شم نظر بدم.)
  4. به مسابقه‌های برنامه‌نویسی و … (مثل ICPC یا امثالهم که شرکت‌های ایرانی می‌ذارن حتی) و حتی خارجی‌هاش مثل topcoder، و همین‌طور سایت‌های دیگه مثل codeforces.com/problemset یا /leetcode.com/problemset/all توجه داشته باشین.
  5. یه‌سری سورس مناسب و newsletter یا اکانت خوب توییتر که دانش و اخبار روز و مفید رو می‌دن هم دنبال کنین که خیلی عقب نمونین.
  6. اگه می‌تونین روی پروژه‌های اُپن‌سورس سرمایه‌گذاری کنین. حتی پروژه‌های خودتون رو هم، هر چه‌قدر ساده و پیش‌پاافتاده، اُپن‌سورس توی گیت‌هاب بذارین و تدریجی توش کامیت کنین.
  7. حتماً یه بلاگ تخصصی داشته باشین و توش مقاله بنویسین. حتی ساده. حتی از یادگیری‌هاتون! خیلی مفیده، حتی برای رزومه و portfolioی شخصی هم.
  8. تعصب الکی نداشته باشین به زبان یا framework یا تکنولوژی خاصی. هر زبانی برای یه چیزی خوبه.
  9. جوگیر نشین. هیچ راه‌حلی یه‌شبه مشکلات رو حل نمی‌کنه. هیچ تکنولوژی‌ای یه‌شبه دنیا رو متحول نمی‌کنه.
  10. همیشه آستین‌هاتون رو بالا نگه دارین!

۴.۲. مهارت‌های فردی غیرفنی که یادگرفتن‌شون خوبه

  1. یاد بگیرین گوگل کنین. گوگل کردن از پرسیدن خیلی بهتره در اغلب مواقع. چون هم نظر درسته، هم سریعه، هم مطمئن.
  2. یاد بگیرین بنویسین! خیلی خیلی خیلی مهمه. اونقدری باید مسلط بشین که همچین سندی که من الان درست کرده‌م رو بتونین خیلی راحت شما هم درست کنین.
  3. یاد بگیرین از ابزارک‌ها (مثل گوگل‌داک یا ابزارهای mind mapping) آنلاین یا حتی فتوشاپ آنلاین استفاده کنین.
  4. ارزش‌های شخصی خودتون (personal values) رو بدونین. «همه‌ی چیزهای خوب» جواب نیست! سعی کنین دقیقاً بدونین چه ارزشی توی شما واقعاً شما رو تعریف می‌کنه. مثلاً تعریف‌تون از «موفقیت» آیا «رسیدن به هدف با تلاش هست» یا «رسیدن به هدف با کمترین تلاش!».
  5. یاد بگیرین خودتون رو بشناسین. ضعف‌های خودتون رو بدونین. و بدونین چی حال‌تون رو خوب می‌کنه. اصولاً دهه‌ی ۲۰ دهه‌ای هست که توانایی‌های خودتون رو بشناسین و دهه ۳۰ دهه‌ای که محدودیت‌ها و limitهای خودتون رو. سعی کنین واقعاً بدونین چه‌کارهایی مال شما نیست. (و الکی ناامید نشین، اما واقع‌بین باشین.)
  6. یاد بگیرین که یاد بگیرین! (مقاله نیویورک تایمز؛ گوگل هم بکنین) و مدل یادگیری خودتون (وقت از روز، طول بازه‌های زمانی، خوندن یا تصویری، یا …) رو کشف کنین. یاد بگیرین که «خیلی کتاب خوندن» و «خلاصه‌ی کتاب گوش دادن» الزاماً شما رو خیلی آدمِ بهتری نمی‌کنه. و در عمل اینا همه مهمه.
  7. یاد بگیرین چه‌جوری unlearn کنین و تعصب نداشته باشین. و همیشه آماده باشین که اعتقادات‌تون زیرسؤال بره و شنوا باشین. حتی، و مخصوصاً در جاهایی که همه دارن یه چیز می‌گن و یه توییت مثلاً ۵ هزار تا هم لایک خورده!
  8. یاد بگیرین ریسک‌های مناسب بکنین. همه‌مون YOLO هستیم!
  9. یاد بگیرین شکست بخورین. چه در کار، چه در رابطه. و بعد از ۵ مرحله سوگواری غم رو به تجربه بدل کنین.
  10. یاد بگیرین موفقیت‌هاتون رو جشن بگیرین و خودتون رو خیلی دوست داشته باشین! یادتون باشه دیگران از شما یاد می‌گیرن که چه‌جوری باید با شما رفتار کرد.

۴.۳. مهارت‌های بین‌فردی که یادگرفتن‌شون خوبه

  1. یاد بگیرین چه‌جوری با صبوری گوش بدین، نه این‌که به‌قصد تموم‌شدن حرف طرف و حرف زدنِ خودتون فقط شنوا باشین!
  2. تمرین کنین چه‌جوری بتونین با یه نظر مخالفت کنین و محترمانه طرف مقابل رو بدون corner کردن و گوشه‌ی رینگ قرار دادن، با خودتون همراه کنین. دقت کنین که آدم‌ها رو باید حالشون رو با خودشون خوب نگه دارین و egoشون رو له نکنین!
  3. تمرین کنین چه‌جوری ایده‌ی خودتون رو ارائه بدین و اصطلاحاً sell کنین.
  4. تمرین کنین چه‌جوری بلند فکر کنین و کلاً دیالوگ/مکالمه داشته باشین. مخصوصاً توی مصاحبه‌ها این خیلی مهمه.
  5. تمرین کنین چه‌جوری محترمانه اعتراض کنین. و قبل از اعتراض هم به این فکر کنین که دقیقاً دنبال چی هستین و بهترین خروجی (outcome) این داستان قراره چی باشه. اگه دارین صرفاً نق‌هاتون رو خالی می‌کنین که خالی بشه، یه ایمیل به خودتون بزنین (یا توییتر!) و اونجا بالا بیارین. اینجوری احتمالاً کمتر صدمه می‌زنین
  6. یاد بگیرین دوست داشته باشین بدون‌این‌که با رفتنِ طرف له بشین و زندگی‌تون تموم بشه. یاد بگیرین یه رابطه رو مدیریت کنین و فرق بین «سیاست» و «تدبیر» رو توی رابطه‌ی دونفره بدونین. و بدونین بهترین رابطه‌ها اون‌هایی هستن که توش با هم بزرگ می‌شین.
  7. یاد بگیرین «نه» بگین.
  8. یاد بگیرین که فرق بین آدم‌هایی که «حرف» می‌زنن و آدم‌هایی که «عمل» می‌کنن رو بتونین تشخیص بدین. با اولی‌ها بخندین؛ به دومی‌ها تکیه کنین و با طناب‌شون برین تو چاه!
  9. یاد بگیرین آدم‌ها رو خوشحال کنین، بدون‌این که خودتون ناراحت بشین. :)
  10. یاد بگیرین آدم‌هایی که واقعاً ارزش دوست‌داشتن دارن رو دوست داشته باشین.

۴.۴. مهارت‌های زندگی از نگاه دیگران

۴.۴.۱. از نگاه یونیسف خاورمیانه و شمال آفریقا (MENA)

بخش MENA (خاورمیانه و ...)ی UNICEF یه راهنمای عالی داره راجع به ۱۲ مهارت مهم زندگی که باید آموخته بشه. خودشونم می‌گن که کشورا دارن می‌پیچونن. و جای خالی اینا به‌شدددددت حس می‌شه تو «نظام آموزشی ایران». 

۴.۴.۲. از نگاه بنیاد آمریکاییان هند (American India Foundation)

این هندبوک ۱۲۰ صفحه‌ای توش خیلی چیزا داره مثل نحوه‌ی آموزش و ارزیابی و …

https://aif.org/wp-content/uploads/2018/10/Lifeskills-2018a_MAST.pdf 


۴.۵. چه‌جوری «خفن» بشم؟

نمی‌دونم والله. برو از آدم‌هایی که «خفن» هستن بپرس. :))

من تنها فرمولی که برای «بهتر شدن» دارم، توی «چیزی که (۱) دوست دارم و (۲) برام ارزش داره»، اینه که «تمرین» کنم. و خیلی خیلی خیلی هم تمرین کنم

کسایی هم که همین‌کار رو می‌کنن رو هم خیلی دوست دارم و برام بسیار ارزشمند هستن. خیلی بیشتر از کسایی که صرفاً cool هستن. خیلی. :)

واسه همین خیلی اهل زیاد «پادکست» و «کتاب خوندن» اون‌قدری که شاید از نگاه بیرون و قضاوت جامعه و اطرافیان باید باشم، نیستم. و ترجیح می‌دم برای هر ۱ صفحه که می‌خونم (کتاب، مقاله، منوال، داکیومنتیشن …) به‌اندازه‌ی ۹ صفحه تمرین کنم.

برای من، صرف فقط «خوندن» یا «شنیدن» بسیار مفعولانه هست و مغز من این مدلی یاد نمی‌گیره و درونی‌سازی/internalize نمی‌کنه که اون مفهوم بره تو پوست و استخوونم. درست مثل تبدیل فوریه که وقتی سال‌ها بعد از اولین و دومین و سومین بار یادگیریِ خسته‌کننده و چندش‌آور و حفظی توی دانشگاه، سال‌ها بعدش یه‌جا لازم داشتم ازش استفاده کنم، اون موقع و «در عمل» تونستم کلی بفهمم‌ش و کلی باهاش حال کنم!

یکی از تمرین‌هام هم معمولاً برای این‌که مطمئن شم خوب یاد گرفته‌ام این هست که به‌هرطریقی سعی کنم اون مفهوم رو خیلی ساده‌تر توضیح یا یاد بدم (گام دوم از تکنیک آقای فاینمن عزیزتر از جان!) به یکی. (اصطلاحاً ELI5 کنم.) قطعاً خیلی اشتباه هم می‌کنم، اما از اشتباهات درس می‌گیرم، فاینمن جان! و روی move-on کردن از غصه‌ی شکست‌هام، بعد از یک ساعت یا یک روز از سپری کردن ۵ مرحله‌ی لازم، هم تمرین کرده و می‌کنم.

کاملاً هم می‌پذیرم و حق می‌دم که خودِ تمرین چیز باشکوه و مهیج‌ای نیست و به ذات خودش، گاهی ابداً لذت‌بخش نیست؛ اما به کودکِ درونم (۸.۲.۲.۵.۱) یاد می‌دم که یه‌کم صبوری بکنه و دنبال «خشنودیِ آنی»/instant gratification نباشه (به‌قول آقای sinek عزیز و این ویدیوی سه‌دقیقه‌ایِ فوق‌العاده‌ش)، چون این تنها راهی هست که جفت‌مون می‌تونیم خوشحال باشیم تهش. انشالله که یه‌روز «قرص» یادگیری رو هم دانش‌مندان اختراع/اکتشاف بکنن که همه قورت بدیم… آمین! ولی تا اون‌روز باید تمرین کرد علی‌الحساب! :)

​​


۵. سؤالات رایج

۵.۱. احوالپرسی

۵.۱.۱. می‌تونم وقت‌تون رو بگیرم، سؤال بپرسم؟

قطعاً. فعلاً دارم سعی می‌کنم به همه‌ی پیام‌ها جواب بدم.

اگه یه موقع ارجاع دادم به این سند، لطفاً حمل بر بی‌احترامی نذارین. صرفاً دوست دارم در وقت صرفه‌جویی بشه تا بتونیم سریع‌تر پیش بریم.

۵.۱.۲. خوبی؟ چت کنیم؟

ممنونم ازتون! من خوشحال می‌شم دوستای جدیدی پیدا کنم. منتهی یه‌کم سر این قضیه سرم شلوغ شده.

معمولاً من اکانت شما رو باز می‌کنم و اگه به‌نظرم چیزایی توش باشه که برای من جذاب باشه یا دوست داشته باشم بیشتر ببینم و نظر بدم، حتماً فالو می‌کنم. و خب اگه به یه رابطه‌ی دوطرفه برسه، بیشتر می‌تونیم صحبت کنیم. من با این‌که ذاتاً یک درونگرا/اینتروورت هستم، همیشه دوست دارم دوستای خوب پیدا کنم!

۵.۱.۳. من مطمئن نیستم سؤالم درست باشه… نمی‌دونم بپرسم یا نه…

اشکال نداره؛ بپرس! من گاز نمی‌گیرم و عصبانی هم نمی‌شم. حداکثر ممکنه دیر جواب بدم.

البته اگه قبلش اگه این سند رو دقیق بخونی، شاید جواب سؤالت اینجا باشه و راحت‌تر بتونی به جواب برسی.


۵.۲. منتورشیپ

۵.۲.۱. می‌شه منتور من بشین؟

من خوشحال می‌شم بتونم منتور باشم. منتهی به‌دلیل حجم پیام‌های دریافتی با این توییت، و همین‌طور مشغله‌های شخصی، امکان این‌که به‌طور منظم بخوام یه زمانی رو اختصاص بدم در حال حاضر برام مقدور نیست.

با این‌حال خوشحال می‌شم که بتونم در وقفه‌های غیرمنظم، یه اصطلاحاً چک-این داشته باشم و من رو از پیشرفت‌تون مطلع کنین و نظر بدم.

پ.ن. آقای ولی‌پور یه طرحی داشته‌ن در همین راستا که بسته شده مهلت‌ش:
https://twitter.com/mvalipour/status/1477663909289111558 

می‌تونین ولی همون‌جا رو هم یه نگاهی بندازین علی‌الحساب.

من با ایشون در تماس هستم و گویا دارن با ۴ نفر به مدت ۴ الی ۶ هفته یه منتورشیپ گروهی رو شروع می‌کنن. بسته به نتیجه و تجربیات ایشون، می‌شه کارهای مشابه هم کرد.

۵.۲.۲. می‌شه coach من بشین؟

من [هنوز] هیچ لایسنس کاری در این زمینه ندارم و دارم تجربه کسب می‌کنم.

با این‌حال دارم بهش فکر می‌کنم. و تا حالا چند تا جلسه هم داشته‌م. حتماً روش بیشتر فکر می‌کنم.

 

۵.۲.۳. می‌شه باهاتون ۱:۱ (جلسه صوتی/تصویری تک به تک) داشته باشم؟

بذارین بیشتر آشنا بشیم و ببینیم آیا می‌شه صرفاً با یه سری پرسش و پاسخ و راهنمایی، به جواب رسید یا نه. در ادامه می‌تونیم ببینیم بحث به کجا می‌ره.


۵.۳. شروع برنامه‌نویسی

۵.۳.۱. پول توش هست؟

آره. ولی اگه برای پول‌ش دارین می‌یاین و علاقه‌ای ندارین و بعد از یه چند ماه اوّل هم علاقه‌ای به خلق کردن ندارین، به‌نظرم پل‌های پشت‌سر رو خراب نکنین!

این رشته نیاز به علاقه‌ی زیادی داره. و بدون علاقه شاید یه کم یا خیلی اذیت بشین. مثلاً این‌که ساعت‌ها بشینین و هی ور برین تا ببینین کجای اپلیکیشنی که ساخته‌این باگ داره (مثل این‌که چرا ماشین روشن نمی‌شه) نیاز به یه علاقه به حل مسأله و اشکال‌زدایی (‌debug کردن) داره. و خب اگه پایه نباشین و ازش لذت نبرین، زندگی براتون سخت می‌شه. :)

نمی‌گم از اوّل با عشق و آی-لاو-یو وارد برنامه‌نویسی بشین. اما اگه دیدین همچنان خوش‌تون نمی‌یاد و ذوق ندارین براش،‌ قبل از این‌که باهاش بچه‌دار بشین، طلاق‌ش بدین بره. :))

۵.۳.۲. من می‌خوام تغییر رشته بدم. آیا برنامه‌نویسی برای من مناسب هست؟

برام بیشتر بنویسین که:

  1. رشته و تحصیلات سابق‌تون چی بوده؟
  2. چی باعث شده به برنامه‌نویسی علاقه‌مند شین؟
  3. چه‌قدر وقت حاضرین براش بذارین در روز؟
  4. هدف نهایی‌تون چی هست؟

۵.۳.۳. من به این نتیجه رسیدم که برنامه‌نویسی مناسب من نیست! مرسی؛ اه!

والله نظر من اینه که تنها پیش‌نیازهای یادگیری برنامه‌نویسی «علاقه» و «پشتکار» هستند و بس! اعتقادی به این‌که نیاز به «ریاضی» یا «استعداد خاص» داره هم ندارم – قطعاً اینا کمک می‌کنه، اما الزامی نیست برای این‌که به دنیای برنامه‌نویسی و برنامه‌نویسان وارد بشین!

برام بنویسین که:

  1. چی باعث شد اولش به برنامه‌نویسی علاقه‌مند بشین؟
  2. هدف‌تون از یادگیری برنامه‌نویسی چی بود؟
  3. چی باعث شد که بعدش سرخورده بشین؟

۵.۳.۴. از چه زبان برنامه‌نویسی‌ای شروع کنم؟

من اکیداً برای شروع یا JavaScript رو توصیه می کنم (اگه می‌خواین وب‌سایت/وب‌اپلیکیشن بسازین. حتی می‌شه اپ موبایل هم باش ساخت) یا Python (اگه علاقه بیشتری به دیتا و دیتاساینس و اینا دارین، تا چیزی که بیشتر بصری و عمومی باشه.)

دلیل‌ش هم سادگی این زبون‌ها هست از نظر interpret شدن، نبودنِ تایپ، و وفور مطالب و راهنماها توی اینترنت.

توی دانشگاه ولی اگه هستین و قراره کلاً زندگی‌تون رو بسازین، قطعاً C و ++C و Java رو بخواین نخواین باید یاد بگیرین! راه دررو نداره. درست مثل کسی که بخواد لیسانس زبان بگیره و مدرس زبان بشه – نمی‌تونین با فیلم دیدن و how to speakهای نصرت شما چیزی مثل نقش گرامری have had been رو بفهمین دقیق و از پایه.

زبان‌های قرطی‌بازی دیگه که تک‌منظوره هستن هم (مثل Swift یا Objective C) برای شروع خیلی توصیه نمی‌کنم. کلاً سعی کنین اوّل راه رفتنِ عادی یاد بگیرین و از روز اوّلِ باشگاه بدن‌سازی دنبالِ دمبل زدن ۵۰ کیلویی برای گولاخ شدنِ یه‌شبه نباشین! شما هم یه آدمین مثل بقیه آدم‌ها. و این تلاش و استمرار شماست که شما رو معمولاً متفاوت می‌کنه، نه توهمِ خودخفن‌بینی. :)

۵.۳.۵. از کجا شروع کنم؟

جواب من احتمالاً ۶ ماه دیگه متفاوت باشه! ;) اما در حال حاضر به‌نظرم جواب همون سؤال‌های بالا رو بدین تا ببینیم چی می‌شه.

در حالت کلی هم یه مسیر برای برنامه‌نویسی وب اینه که:

  1. اوّل HTML و CSS مقدماتی از https://www.w3schools.com . لازم نیست همه تگ‌های HTML  و همه پراپرتی‌های CSS رو حفظ کنی!
  2. یه مقدار JavaScript مقدماتی و بعد ادامه داستان از https://www.freecodecamp.org
    پ.ن. خانم اشرفی دارن همت می‌کنن برای جمع‌کردن یه تیم برای ترجمه. اگه پایه هستین برین برای کمک!

    https://twitter.com/nazanin_ashrafi/status/1471919719296864258 
  3. بعد یه عالمه پروژه تا نیاز به framework رو احساس بکنی. و حتی بد نیست با یه library مثل jQuery هم یه کم کار بکنی که ببین چه‌طور یه library زندگی رو راحت می‌کنه، اما هنوز ساختن یه بازی (مثل تتریس) کمی سخته و کثیف – که با یه framework می‌شه راحت بشه.
  4. برای فریم‌ورک هم گویا توی ایران Vue.js رایج هست. من خودم هم Vue کار کرده‌م و خوبه. البته React هم خیلی محبوب و رایج هست بعدش.
  5. و بعد کلی web application بساز! از تقویم و ToDo گرفته، تا بازی‌های کوچیک و …

۵.۳.۶. چرا دانشگاه بریم؟ خودمون مثلاً از یوتیوب یاد می‌گیریم!  (سؤال از هادی)

بعداً جواب می‌دم.

۵.۳.۷. من زیر ۱۸ سال هستم و خودم برنامه‌نویسی یادگرفته‌ام/دارم می‌گیرم. توصیه خاصی؟

[a]

اولاً که دمت گرم حسابی!

ثانیاً بهت تبریک می‌گم که علاقه‌ت رو به چیزی که شبیه یه superpower واقعی هست، پیدا کرده‌ای. احسنت. :)

توصیه‌های من:

  1. جونِ جدّ و آبادت، مغرور نشو! به‌صرف این‌که تو cool هستی و از هم‌سن‌هات باحال‌تر هستی و از بقیه هم جوون‌تر و با‌آینده‌تر هستی، دلیل نمی‌شه که بخوای خودت رو بگیری. پس خاکی باش.
  2. جوگیر نشو. عاشقِ یه تکنولوژی خاص نشو. و عاشقِ ساختن و یادگرفتن بمون.
  3. الگوهای خوبی برای خودت انتخاب کن. مثل https://github.com/sindresorhus
  4. به یادگیری ادامه بده (مثل http://node.cool که همون پسره بالایی نوشته) و چیزهایی هم یاد بگیر که به دردِ چیز میز ساختن باهاش بخوره؛ نه فقط تئوری
  5. خیلی دنبال پول نباش. خوبه که استقلال مالی داشته باشی. اما سعی کن روی خودت و یادگیری و مهارت‌هات سرمایه‌گذاری کنی.
  6. اگه خواستی زودتر مهاجرت کنی، خیلی هم خوبه. پیگیری کن.
  7. درس‌ت رو بخون. مدرک لیسانس برای خیلی چیزها (مثل مهاجرت به آمریکا) لازمه.
  8. بازم خاکی بمون! سعی کن بخشنده باشی. سعی کن یاد هم بدی. خیلی موقع‌ها آدم از یاد دادن یاد می‌گیره.
  9. بنویس. بنویس. بنویس. چه خاطرات، چه گزارش. اینا بعداً برات گنجینه‌ی خوبی می‌شه. :)

۵.۳.۸. بوت‌کمپ/دوره برم یا خودم یاد بگیرم؟

والله این خیلی بستگی داره به سبک یادگیری شما. من به‌شخصه خودم دوست‌دارم self-paced باشه یادگیری برام، و دست خودم باشه کی تند و کی کند بشه. و کجا عمیق و کجا کمتر عمق‌دار. و اصولاً در جمع هم خوب یاد نمی‌گیرم.

بوت‌کمپ/دوره ولی خب خوبیش اینه که شما رو یه‌جورایی متعهد نگه می‌داره به این‌که منظم بخونی. و در عین حال هم معمولاً یه منتور نصفه‌نیمه کنارت هست یا کسی که جواب سؤالات رو بده.

این دو مورد خلاصه به‌نظرم چیزایی هست که باید روش فکر کنی. دوباره بگم:

  1. آیا می‌تونی خودت خودت رو متعهد نگه‌داری به یادگیری؟ و یادگیری شخصی و خودمحور برات بهتره از گروهی؟
  2. آیا وقتی کدت کار نمی‌کنه حس و حال این‌که خودت بشینی دیباگ بکنی رو داری؟ (یا دوستی داری که ازش کمک بخوای؟) چون اگه کلافه و در نتیجه «زده» بشی، بهتره دوره/بوت‌کمپ بری.

 

۵.۴. ادامه‌ی یادگیری برنامه‌نویسی

۵.۴.۱ آیا یادگیری الگوریتم و کلاً تئوری به درد برنامه‌نویسی در صنعت می‌خوره؟ (سؤال از هادی)

بعداً جواب می‌دم!

۵.۴.۲. بهتر نیست به‌جای الگوریتم بریم چیزهایی مثل clean code یا design pattern یاد بگیریم؟  (سؤال از هادی)

بعداً جواب می‌دم!

۵.۴.۳. ماشین لرنینگ از کجا یاد بگیرم؟

این رشتو از ussamamad می‌تونه مفید باشه در زمینه منابع

​​https://twitter.com/ussamamad/status/1341504087179874304?s=21

۵.۴.۴.. تکنولوژی چی یاد بگیرم؟

دو تا رویکرد هست کلاً:

  1. از هر چیزی یه چیزی بدونی (jack of all trades اصطلاحاً)
  2. توی یه زمینه خاص، خیلی خفن بشی

به‌نظرم برای شروع اولی خوبه. اما از یه‌جایی به بعد، دومی بهتر می‌شه.

سایر توصیه‌ها:

  1. تعصب الکی نداشته باشین! واقعاً هیچ زبانی خیلی برتر نیست. و اجازه بدین همون‌طور که یه سری آدم‌ها زرد دوس ندارن، یه سری هم از جاوا یا پایتون خوش‌شون نیاد یا عاشق‌ش باشن. اما بپذیرین که بسته به نیاز پروژه و شرایط شرکت/پروژه، هر زبانی می‌تونه مناسب باشه.
  2. الزاماً زبان/فریم‌ورکی که جدید اومده (کاتلین، فلاتر، …) راه‌حل تمام مشکلات بشریت نیست!
  3. الزماً زبان/فریم‌ورکی که تقاضاش بیشتره، یا سؤال و جواب‌هاش توی stackoverflow بیشتره، یا تو نظرسنجی‌ها محبوب‌تره، یا پول بیشتری براش می‌دن، همیشه بهتر نیست.
  4. اگه از نظر زمانی بودجه دارین، حتماً سعی کنین طی «پروژه‌های شخصی» با چار تا چیز جانبی و نزدیک هم سر و کله بزنین شب‌ها! می‌تونه تجربه خیلی خوبی باشه. :)

۵.۴.۵. تکنولوژی‌هایی که در آینده ترند می‌شه چیان؟

با عنایت به سؤال بالا، به‌نظرم خیلی فتیشِ تکنولوژی یا فریم‌ورک خاصی نداشته باشیم! و حواسمون باشه که هر تکنولوژی‌ای خیلی زود (حتی ظرف دو سه سال) می‌تونه منسوخ بشه. و اصلاً یکی از نکاتِ ذاتی برنامه‌نویسی و دنیاش همین پویا بودن داستان هست.

واسه همین این‌که روی خودِ یادگیری و تسریع‌ش سرمایه‌گذاری کنیم، بدک نیست. :)

پ.ن. به‌نظرم جاواسکریپت حالا حالاها از بین نمی‌ره! =))

۵.۴.۶. کد تمیز چه‌جوری بزنم؟

والله کتاب در این زمینه خیلی زیاد هست و دوستان چیزایی مثل Clean Code و The Pragmatic Programmer رو زیاد توصیه می‌کنن.

یه راه خوب دیگه ولی این هست که کدهای خودِ شرکت رو ببینین و بر اساس همون، و با همون استایل، سعی کنین بنویسین. چون حتی روی سینتکس هم کمپانی به کمپانی گاهی فرق داره.

و نهایتاً کدِ لایبراری‌هایی که استفاده می‌کنین هم می‌تونه مرجع خوبی باشه.

۵.۴.۷. چه کتاب‌هایی بخونم؟

۵.۵. مسائل متفرقه برنامه‌نویسی

۵.۵.۱ من ۲۸ سالمه و تازه شروع کرده‌م. احساس می‌کنم دیره…

ابدااااااااً!

ابدااااااااً!

واقعاً سن اصلاً چیز مهمی نیست توی برنامه‌نویسی. توی مهاجرت کردن (مخصوصاً کشورهایی که شرط سنی دارن) و پیدا کردن شغل (خصوصاً توی ایران) شاید یه‌کم مهم باشه. ولی زیر ۳۰ که اصلاً مهم نیست. الکی نگران نباش.

از نظر دیر وارد شدن به مسابقه هم، اونقدر دنیای برنامه‌نویسی و ساختنِ نرم‌افزار و اپ و اینا بزرگ هست که کسی جای کسی رو تنگ نمی‌کنه به این راحتی. خورشید همیشه داره می‌تابه، حالا شما احیاناً به‌جای ۷ ساعت مثلاً ۸:۳۰ بیدار شدی، تمرکزت رو بذار که تا آخر شب چه‌قدر کارهای خوبی می‌تونی بکنی و چه‌قدر می‌تونی بترکونی. اصلاً ساعت‌ت رو از مچ‌ت در بیار (سن‌ت رو فراموش کن) و تمرکزت رو بذار روی لذت بردن از مسیر!

۵.۵.۲. من عاشق زبان‌های low level هستم. توصیه‌ای؟

والله چی بگم. :)

شاید از نظر بازار کار خیلی محدود بشین. از اون‌ور چیزی هم نیست که بشه بشینین تو خونه ازش پول در بیارین (مثل طراحی وب، یا اپلیکیشن نوشتن). و خب سخته دیگه.

شاید بد نباشه قبل از ازدواج دائم باهاش، یه دور هم با بقیه تکنولوژی‌ها بزنین و با دیدگاه غیرجانب‌دارانه، سعی کنین اونا رو هم یه تجربه‌ای بکنین!

۵.۵.۳. من خیلی علاقه‌دارم بدونم شرکت‌های بزرگ خارجی، چه‌جوری پروژه‌هاشون رو در این ابعاد درست می‌کنن! از کجا می‌شه بیشتر یاد بگیرم؟

سؤال خوبیه!

تقریباً تمام شرکت‌های بزرگ و متوسط دنیا، یه engineering blog دارن که توش خیلی مطالب مفیدی، چه مدیریتی و چه فنی و تکنولوژیکی می‌نویسن.

به‌نظرم اینا رو گوگل کن (سرچ کن: اسم شرکت + engineering blog) و حتماً دنبال کن. مخصوصاً شرکت‌هایی که دوست داری رو.

چند نمونه ازشون:


۵.۵.۴. من خودم رو خیلی برنامه‌نویسی ماهری نمی‌دونم چی کار کنم؟

به‌قول این خارجیا، I have some good news for you and some bad news!

خبر خوب اینه که تنها نیستین. :) و باید خیلی خیلی راجع به ایمپاستر سیندروم بخونین. یه سری منابع: (خدایی ۴ تا ریزالت اوّل گوگل رو گذاشتم؛ و واقعاً همینا هم خوبن. :) )

دقت کنین که من به‌هیچ وجه تجویز یا تشخیص یا لیبل‌زدن‌ای نمی‌کنم. نه تخصص دارم، نه علاقه.  اصلاً یه مقاله توی HBR (هاروارد بیزینس ریویو) هست که می‌گه Stop telling Women They Have Imposter Syndrome. من فقط می‌گم یه‌کم بخونین راجع بهش که بدونین توی دنیا این قضیه رایج هست و برای بقیه هم اتفاق می‌افته. و این ذهنیت رو نداشته باشین که همه‌ی بقیه همکارا و دوستاتون هر شب تو آینه به‌خودشون می‌گن «وای چه خفنم من! قربونم برم!» و بعد می‌خوابن. خیلی‌ها مثل شمان.

از اون‌ور به‌نظر من (نظر شخصی من) استعدادِ گرفتنِ ایمپاستر سیندروم (و امثالهم) توی برنامه‌نویس‌ها بیشتره. یه سری منابع: (دوباره ۴ تا ریزالت اول گوگل برای «imposter+syndrome+programmers» رو دارم می‌ذارم!)

۵.۵.۴.۱. چرا به‌نظرم مستعدتر هستن برنامه‌نویس‌ها برای ایمپاستر گرفتن؟

  1. خود فیلد به‌شکل مثبت و سالمی به‌شدت پویا و در حال رشد هست.
    من خودم مثلاً TypeScript رو سال ۲۰۱۹ شروع کردم برای پروژه شخصی‌م و تا حالا ۱۰۰هزار خط کد توش زده‌م و شصتادتا سؤال Stackoverflow هم توش جواب داده‌ام، اما باز ۳ ماه هست که آپدیت ماهیانه‌شون رو نمی‌کنم و عقبم!
    همین رو حالا مقایسه کنین با یه شغلی که ثابت هست (مثلاً مراقب جلسه امتحانِ امتحان نهایی کلاس پنجم دبستان دولتی ابوریحان). همه شغل‌ها محترمن، اما می‌خوام بگم یه سری شغل‌ها شما این حس که «من سیر تا پیاز این قضیه رو بلدم» رو خیلی راحت‌تر به‌دست میارین.
    توی برنامه‌نویسی، برخلاف خیلی خیلی از شغل‌ها، تا شما بیاین ۵۰ درصدش رو یاد بگیرین، یهو تهش ۵۰ درصد می‌ره جلو و شما روی نقطه ۳۰ درصد یهو وایسادین! (شبیه سؤال
    مورچه روی کش که هادی گفته بود) و خلاصه خسته‌کننده می‌شه که شما به تهش نمی‌رسین.
  2. خود فیلد به‌شکل منفی و ناسالمی به‌شدت پویا و در حال رشده!
    شبیه مورد قبلی، اما گاهی ملت و دست‌اندرکاران یه‌مقداری مرض هم دارن! =)) به‌عبارتی می‌شه گفت hype توی این فیلد خیلی بالا هست. برخلاف شغل‌های دیگه (مثلاً بگیم این‌بار شاید مربی یوگا بودن) که شاید هر چنننننند سال یه متد نسبتاً جدید بیاد، توی این فیلد هر روز چهار تا کلمه‌ی جدید و buzz word پاشیده می‌شه بیرون! از کلمات سکسی مثل «Deep Learning» (وااای! هم ماشین داره یاد می‌گیره؛ هم لامصب داره «عمیییییق» یاد می‌گیره!) گرفته تا چیزای جینگول جدید مثل بلاکچین و NFT و Web3 و همه اینا. و خب خیلی سخته که آدم همیشه بدوئه به همه‌ی این کلمات catch up کنه.
    حاصل این حالا یه FOMOی عمیق می‌شه (Fear of Missing Out یا ترسِ عقب‌موندن). و هر روز شما با استرسِ این‌که وای چی‌شده من عقب نموندم از بقیه بیدار می‌شین، نوتیفیکشن‌ها و اخبار و اعلانات بقیه رو می‌خونین، و هی استرس دارین که وای چی‌شد وای چی‌شد نکنه کوپن روغن رو اعلام بکنن، من جا بمونم. :))
    برای فائق اومدن بر این داستان، شدیداً این
    ۱۰ تمرین و همچنین بستنِ نوتیفیکشن‌ها و یا چک کردن از مرورگر توی گوشی، استفاده کنین. من خودم هم اپ توییتر ندارم که نوتیفیکیشن نیاد و با مرورگر چک می‌کنم. آره کُند هست، اما خوبه! چون من دارم اون ور کنترل می‌کنم و نه اون من رو!
    ​​

  3. ملت توش خیلی پُز می‌دن و تو چشم می‌کنن!
    شما اگه مثلاً یه مکانیک ۲۰۶ باشین، خب مکانیک ۲۰۶ هستین! خیلی توی یه جمع پیش دوستا حرف خیلیییی جدیدی ندارین که همه کف بکنن. (مگر این‌که بگین با ذوب کردن یه قاشق حلبی، تونستین یه سرسیلندر بسازین مثلاً! :دی) یا مثلاً اگه معلم کلاس چهارم باشین (با احترام تماااااام به همه معلم‌ها) بازم خیلی توش رشته‌ی کاری خودتون پیش بقیه همکارها، چیز خیلیییی خفنی خلق نمی‌کنین، اونم به‌صورت روزمره.
    اما توی این فیلد، یارو شب می‌خوابه صبح پا می‌شه یه چیز خفن می‌ده! مثل این بنده‌خدا که من دیدم برای این wordle که تایم‌لاین همه رو توی توییتر رو ماییده (به‌قول tvmez :دی)، معادل فارسی ساخته: vaajoor.ir . خب واضحه که به منِ نوعی این حس دست می‌ده که «وای من عقبم»! ایضاً هزاران نفر دیگه که هر روز دارن یه کار جدید (با نیت خیر فرض کنیم) می‌کنن و توی سوشال مدیا توی بوق می‌کنن. این احساسِ عقب موندن به همه‌مون می‌ده.
  4. رشد دیگران سریع‌تر هست؛ و افسوس‌ش برای منِ مقایسه‌گر
    توی اینستا (که من چک نمی‌کنم) همه هر روز دارن کلی عکس از مسافرت‌ها و لحظه‌های خوب‌شون می‌ذارن.
    اما اگه از بیرون نگاه کنیم، اونا دارن ۳ الی ۵ درصدِ تاپ زندگی‌شون رو می‌ذارن. ینی اگه فرض کنیم محوری افقی زمان/عمر هست و محور عمودی کیفیت و خوشیِ هر ثانیه، زندگی همه‌مون یه سری موج داره. حالا اینا میان یه برش افقی می‌دن و اون نقاط تاپ رو پست می‌کنن.
    (نمودار زیر رو با دست و تُف کشیده‌ام علی‌الحساب :) )

    بعد قضیه اینه که شما اگه ۱۰۰ نفر رو فالو داشته باشین به‌فرض، یه عالمه از این موج‌ها هست تو زندگی همه، اما همه هی دارن اون تاپ ۳ درصد رو ارسال می‌کنن. و شما ناخواسته چیزی که می‌بینین، یه خطّ ممتد هست در ارتفاعِ ۹۷ درصد الی ۹۹ درصد از «خوشی و موفقیت و کامیابیِ بقیه». (همین نمودار رو، برای یه دوستِ دیگرتون، یه ۱۰ پیکسل به راست شیفت بدین. و دوباره یکی دیگه. اون دایره قومبولی‌های بالا می‌شن یه خط ممتد تو همون ارتفاع.) در حالیکه خودتون در اکثر مواقع (به‌صورت عددی ۹۷ درصد مواقع!)، زیر تاپ ۳ درصدِ تاپِ خودتون هستین. :)
    خلاصه این باعث می‌شه که شما خواسته یا ناخواسته، خودتون رو همیشه‌ی خدا، ولو در ناخودآگاه، هی شماتت و سرزنش کنین و کاملاً هی ناراضی باشین.
    راه حل؟ خب نکن آقا! چه مرضی هست؟!
    من به‌شخصه نه توی لینکداین و نه توی اینست (جاهایی که ملت خواسته یا ناخواسته این تاپ۳ درصدهاشون رو ارسال می‌کنن) هیچ‌وقت توی timeline نمی‌رم. چون جنبه‌ش رو ندارم. ضعفِ خودم هست و برش واقف هستم و تا وقتی درمون‌ش نکرده‌ام، نمک روش نمی‌پاشم. و فعلاً حالم خوب هست. :)
  5. مصاحبه‌هاش و ارزیابی توش سخت و غیر «معلوماتی/حفظی» هست.
    اینو وقتی توی اینترویو ازتون یه سؤال الگوریتمی (مخصوصاً Dynamic Programming) بپرسن، خیلی بیشتر به مغز استخون‌تون می‌رسه! :)
    قضیه اینه که دوباره بر خلاف خیلی رشته‌های دیگه که توش شما وقتی چند سال بمونین، دیگه خم و چم داستان رو بلدین و بیشتر حفظی هست همه‌چی، این‌جا دقیقاً نیاز به پویایی ذهن و حل مسئله هست. (من خودم المپیاد کامپیوتر رو یادمه که برخلاف همه‌ی بقیه‌ی المپیادها مثل شیمی و زیست و فیزیک و …، ابداً لازم نبود شب امتحان‌ش چیز خاصی بخونم و یا تقلب خاصی بکنم!)
    حالا قضیه اینه که شما هرچه‌قدر هم کار درست باشین، باز به مصاحبه برای تغییر شغل که برسه، باز هی به‌خودتون می‌گین «من باید ۶ ماه وقت بذارم، سیستم دیزاین و داینامیک پروگرمینگ و … بخونم!» و همین این هست که تو ناخودآگاه داره بهتون می‌گه «you are not on top of your sh*t» که دقیقاً در درون اون اعتماد به خودتون رو داره مثل موریانه می‌خوره.

۵.۵.۴.۲. چه‌جوری از این خراب‌شده‌ی ذهنی بیام بیرون، حالا؟!

اون مقالاتی که بالا نوشتم رو بخونین. (همون گوگل ریزالت‌های imposter syndrome و how to deal with it). همه یه سری نکته تستی مفید می‌گن.

منم چیزای خودم رو بخوام بگم…

  1. خبر خوب: همه‌چی توی کله‌ی خودتونه!
    یادتون باشه که مثل anxiety و اضطراب، قسمت عمده‌ی اینا تو ذهن خودتونه و توی دنیای واقعی خیلی لزومی نداره نگرانش باشین.
    این‌که شما مثلاً سینتکس فلان تابع (مثلاً فرق slice و splice توی جاواسکریپت) رو یادتون نمی‌یاد و باید هربار گوگل بکنین، هم رایج هست، هم یه جوک، هم رئیس‌تون براش اصلاً مهم نیست! اونقد بدبختی داره که بیکار نیست بگه «اوه! فلانی رو یواشکی دیدم داره گوگل می‌کنه یا stackoverflow می‌بینه!» اون بنده‌خدا براش فقط مهمه شما کار رو انجام بدین. و این خود شما هستین که بیکارین که هی خودتون رو قضاوت می‌کنین.
    توی اون مواردِ «چرا»ی بالا هم گفتم که از پاشیدنِ نمک به‌روی این زخمی که همه‌مون داریم، اکیداً خودداری فرمایید، دوست عزیز! و نمک‌های مثل تایم‌لاین لینکداین رو، وقتی نیازی ندارین، نخونین.
  2. خبر بد: ته نداره!
    مثل خیلی از مشکلات روان‌شناختی، اینم خیلی قرص و دوا درمون نداره که بخورین و خوب شین. باید باهاش بسازین. به‌قول یارو، «زندگی فقط ۱۰۰ سال اولش سخته!» :))
    جدی ولی یکی از coping mechanismها این هست که آقا پذیرش و acceptance داشته باشین. بفهمین این هم یکی از مانسترهای درون‌تون هست. و باش به صلح و آتش‌بس برسین. دنبالِ «وای من خوب باید بشم» نباشین که اون یه بچه مانستر بشه.
    همین که آگاه باشین، و روی آرامش خودتون، خیلی آگاهانه با mindfulness کار کنین خیلی خوبه. و این‌که زندگی رو بین خودتون و خودتون بکنین؛ دست بردارین از این‌که بخواین مقایسه کنین یا مقایسه بشین. زندگیِ شماست، مسیری که اومدین مال خودتونه؛ نه به کسی ربط داره، نه کسی لازمه فضولی کنه. این «صلح درون» به‌قرآنِ مجید یکی از بزرگترین چیزایی هست که باید بهش رسید. (الان بگم از انتگرال مهم‌تره، نصف توییتر میان خفه‌م می‌کنن! :دی)
  3. راهکار خیلی مفید: لیست کردن دستاوردها و موفقیت‌ها
    این رو دقیقاً توی تمام اون ۴ تا مقاله‌ی بالا هم گفته!
    توصیه من، جدای از مرتب کردنِ پروفایل لینکداین و گیت‌هاب، اینه که یه هوم‌پیج شخصی بزنین. خرج یه دومین (تلفظ‌ش دامِین نیست، دقیقاً ۲ و بعد main) توی ایران اگه بخواین .ir بگیرین فک کنم سالی ۲۰هزار تومن هست‌ (گوگل
    این رو آورد. ولی توی nic.ir مستقیم هم فک کنم بشه. من دارم.) و توی خارج دات کام ماهی ۶ الی ۱۰ دلار (من با namecheap راضی‌ام). هزینه هوستینگ (مجدد، تلفظ‌ش شبیه حُسین تینگ هست، و نه هاس-تینگ) هم به نسبت ارزون.
    به خودتون هم بها بدین و خرج کنین. رایگان و مفتی نگیرین. درست مثل این‌که وقتی مجرد هستین هم لباس زیر نو می‌تونه به خودتون حس خوبی بده که برای خودتون مهم هستین و خرج می‌کنین، این هم همینه. اصن خودِ همین «برای خودم دارم خرج می‌کنم» خیلی به اعتمادبه‌نفس کمک می‌کنه.
    بعدش توی اکثر هوستینگ‌ها یه cpanel رایگان می‌دن که توش خیلی راحت می‌شه یه wordpress بالا آورد. بعد توش بخش‌های about و project و document و اینا بذارین و توش خودتون رو خیلی عادلانه و شیک (نه در حد عمه‌ی عروس با پز و فیس و افاده! نه در حد عموی بی‌خیالِ دوماد که با جوراب پاره اومده خواستگاری) ارائه بدین. حتی اگه خروجیِ کارهاتون یه بازی تحت وب (مثل یه تتریس یا فکربکر/mastermind یا tic-tac-toe یا حتی ماشین حساب آنلاین) هم باشه که نورعلی‌نور! هر بار نگاه کنین یه بازی هم می‌کنین و با خودتون حال می‌کنین!
    بااااااور کنین همین که هر بار به خودتون فکر کردین و با غصه ترسیدین که «اصن دنیا من رو یادش هست…؟» اگه اسم خودتون رو گوگل کنین و به هوم‌پیج خودتون برسین، خیلی بهتون آرامش می‌ده که اولاً بله، شما وجود خارجی دارین (برای کسی جز مدیریتون که فردا توبیخ می‌کنه اگه نیاین، و دوستاتون که فقط می‌خوان نق بزنن به جون‌تون و هروقت کار دارن یادتون می‌افتن)، ثانیاً یه جایی هست که شما کارت‌های صدآفرین‌تون رو لیست کنین و امیدوار باشین، عین بچگی، یه روز کلِّ دیوااااار رو بپوشونه. :)
  4. راهکار خیلی مفید: قدردان باشین
    اینم دوباره خیلی خوب هست و توی همه‌ی اون مقاله‌های بالا بهش اشاره می‌شه (تمرین gratitude اصن توی اکثر جلسات کوچینگ و اینا همیشه هست: که هر شب سه تا چیز که به‌خاطرش متشکری از دنیا رو بگو و بنویس قبل خواب – و فلسفه‌ی دعای شب thanksgiving هم همینه.)
    توی فرهنگ ما البته، که از یه سمت می‌گن «موفقیت‌هات رو به کسی نگو که چشم نخوری» و از یه طرف حتی توی دل خودت بیشتر نگران این هستی که جوابِ هر «آفرین؛ چه قدر کارت درست بود» این هست که خودت رو تخریب کنی جلوی طرف و بگی «نه، من کاری نکردم» یا «نه، خوش‌شانس بودم» به‌جای «مرسی، تلاش کردم. و دارم هنوز هم ادامه می دم»، توی همچین فرهنگی، ما قدردانی یه‌کم شاید برامون بیگانه باشه.
    بهش فکر کنین فقط. که چه‌قدر چیز هست توی دنیای شما هست که آرزوی هزاران نفر هست. توی کوه‌نوردی اصن می‌گن وقتی خسته شدی، عقب رو نگاه کن؛ وقتی مغرور شدی، جلو رو.
    به این فکر کنین که چه‌قدر چیزایی که می‌تونسته شما رو خیلی پرت کنه به در و دیوار، اتفاق نیافتاده (نه در حد اضطراب که آیا ممکنه سرطان بگیرم من؟ ولی در حد این‌که چه‌قدر خوبه که می‌تونم با خیال راحت امشب توی تخت گرم خودم بخوابم و فردا صبح یه صبحونه تپل بزنم، بدون این‌که هزار تا زجر بکشم.)


    فکر کنین که چه‌قدر همین که الان می‌تونین خیلی کارهایی که ۱۰ یا ۲۰ سال پیش، توی مدرسه و با همه‌ی سرکوب‌های روحیِ جامعه و والدین و …، آرزوتون بوده رو الان می‌تونن بکنین. این‌که چه‌قدر اگه یه پلی بود بین اون ورژن از خودتون و الآن، اون بهتون می‌گفت «دمت گرم! برو حال‌ش رو ببر.» درست مثل بچه‌ای که از تو خیابون و از پشت شیشه‌ی رستوران به شما که دارین کباب می‌خورین زل زده و می‌گه «سماق هم بزن بهش و با گوجه بخور!» می‌دونم مثال سختی زدم، اما واقعاً اون بچه، خودِ بچه‌ی درون شماست (تلفیقی از inner child که توتون زنده‌ست، و خاطرات و آرزوهای فراموش شده) و خودِ شما اون‌قدر درگیر نوتیفیکشن گوشی و کی استوری‌م رو دید و قبض برق رو یادم نره بدم هستین، که نمی‌دونین همین کباب (با سماق زیاد!) و گوجه یه روزی آرزوی شما بود…
  5. راهکار خیلی مفید: مهربونانه و صادقانه، بنویس
    این هم خیلی خوبه. نوشتن یکی از بهترین برون‌ریزی‌هاست.
    من اکیییییییییییییییداً یه وبلاگِ پابلیکِ بدون‌هویت رو توصیه می‌کنم. حتی می‌تونه از جهاتی‌ (نه همیشه، نه همه‌جا) در یه حالاتی و واسه یه مقاصد خاصی، از تراپیست هم مفیدتر باشه برای شروع. (تراپیست همچنان گزینه استاندارد هست و من احترام می‌ذارم و حتی خیلی هم در خیلی مواقع توصیه).
    چرا وبلاگ پابلیک بدون هویت؟
  1. اولاً وبلاگ، که محدودیت کاراکتر نداشته باشه. و بشه توش روی جمله‌بندی کار کرد.
  2. دوماً پابلیک، چون خیلی مهمه که از «درون» شما بیاد بیرون. دفترچه روزمره و نت گوشی هنوز یه بخشی از وجود شماست. اما پابلیک ینی بریزین بیرون. داشتم به دوستی اصن همین رو می‌گفتم: خیلی فرق هست بین لخت شدن توی حموم و لخت شدن توی یه nude beach. شما نیاز دارین که با خودتون خیلی عریان باشین و همه‌ی کوله‌باری ذهنی و دغدغه‌هایی که مثل یه گونیِ این بندگان خدا که از آشغال‌ها پلاستیک جمع می‌کنن، رو، زمین بذارین و خالی کنین. به‌خدا گناه دارین برای خودتون!
  3. سوماً بدون هویت و بدون کامنت، که بتونین راحت خودتون باشین. قرار نیست اونجا کسی شما رو قضاوت کنه یا عاشق‌تون بشه یا شما عاشق‌ش بشین. خود واقعی باشین. دقیقاً همون مثال لخت شدن توی نود بیچ. تمرین خوبیه که عریان باشین. و این‌که بدونین که کسی به‌شما نگاه نمی‌کنه و همه سرشون تو کار خودشون هست. (اصن picture them in their underwear یه اصطلاح و نصیحت نسبتاً رایج هست برای غلبه برا اضطراب در public speaking؛ که البته توصیه هم نمی‌شه (یک و دو) و بیشتر یه مثل هست.) اما لب کلام اینه که بی‌پرده خودتون باشین.
  4. یه ایمیل جدید جیمیل با نام نام‌خانوادگی جدید. می‌تونه توی wordpress.com هم باشه. با VPN هم همیشه وصل شین و اون اوایل حتی توی private browsing و incognito.
  1. راهکار خیلی مفید: بخشنده باشین
    اینم خیلی خیلی چیز مفیدی هست. با دهندگی می‌تونین گاهی خیلی حال خودتون رو خوب کنین. دقیقاً در همون جاهایی که فکر می‌کنین «اصن من به درد دنیا می‌خورم؟» همین که بدونین به درد یه نفر خوردین حداقل، می‌تونه یادتون بندازه که جواب صد در صد «آره» هست!
    شاید غلو نباشه که بگم اصن هدف اصلی من از این همه نوشتن، بیشتر کمک به خودم هست. :)
    کارهای داوطلبانه، چه غیرمرتبط (از اهدا خون، تا کمک به نیازمندان) و مرتبط (از کمک به جونیورترها در حیطه کاری، تا داوطلب شدن برای مثلاً شنونده بودن برای یه ناشناس) می‌تونه گاهی خیلی حال‌تون رو خوب کنه. دنیا به آدم‌های بخشنده خیلی نیاز داره. و لازم نیست شما حتماً خیلی شاخ باشین، یا چیزِ خاصی داشته باشین تا «داوطلب بشین» و «اعلام امادگی کنین». آره شما شاید بهترین نباشین و شاید اشتباه هم کنین (و حتماً قبلش اعلام بکنین که توانمندی‌تون چه‌قدر هست و قانوناً و شرعاً و عرفاً تا کجا می‌تونین باشین)، اما همین‌تون هم برای خیلی خیلی خیلی‌های دیگه می‌تونه خیلی خیلی مفید باشه!
    یادتون باشه همه تنهان. حتی
    لیدی‌گاگا هم تنهاس و مشکلات روحی داره. حتی آویچی هم خودکشی کرد. و توی این دنیای شلوغ، مهربون بودن و بخشنده بودن، خیلی خیلی ارزشمنده!

۵.۵.۴.۳. یه نکته که یادمون نره: فیک ایمپاستر

دیگه بخوام ببندم این بحث رو، یه نکته‌ی هشدارانه هم بگم که مثل همه سیمپتوم‌های جسمی و روحی، سریع خودتون رو! کلاً توی گوگل شما هر مریضی‌ای رو سرچ کنین یا علائم ش رو توی توییتر ببینین، یه میلیون نفر می‌گن «عه! منم دارم که!»


خلاصه، یه‌کم اگاه باشین. و این شانس رو هم بدین به خودتون که شاید واقعاً یه‌مقداری هم بد نباشه روی دانش خودتون کار کنین. شاید بد نباشه سعی کنین به‌جای شبی یک ساعت نق زدن و غیبت کردن پشت همکارا و رئیس توی توییتر و پیش دوست صمیمی‌تون، یه ۵ درصد روحِ استاد ملکی رو شاد کنین و به خودتون، راجع به انتقادی که دریافت کردین امروز و تا مغز استخون دفاعی شده‌این، بگین «شاید حق با اون باشه.»

شاید واقعاً اون‌قدری که فکر می‌کنین هم خفن نیستین. شاید اون دوستی که هر بار زنگ می‌زنین و از خفونت خودتون براش ساعت‌ها می‌گین (که «آره، یه باگ بود؛ هیچ‌کی نتونست فیکس کنه! من رفتم تو نیم ساعت همه‌ش رو زدم!») و گوش‌ش از self promote کردن شما (یک و دو) پر شده، داره توی روتون براتون کف می‌زنه که کودک درون‌تون خوشحال بشه فقط. اما طرف ته قلب و ته چشماش داره می‌بینه که insecurity داره از سر و روی شما می‌باره که این‌قدر به تأیید بقیه نیاز دارین برای این‌که حال‌تون با خودتون خوب باشه…

کمی با خودتون توی آینه روراست باشین. نه غره بشین، نه بداخلاق. یه تعادل، و پیش رفتن به سمت یادگیری.

ساده بگم، اگه از من بپرسن لازمه و جوهره‌ی این فیلد چیه، من بدون شک می‌گم: Constant Learning. (یک و دو؛ باز خودتونم سرچ کنین.) و اگه شما هر روز، خیلی مهربون و بدون استرس، چیزی یاد نمی‌گیرین و کارتون فقط «تبادل پایاپای عمر و وقت شما، با پول و مواجب» هست، احتمال گرفتن کلی مشکل روحیِ جدید خیلی بالاس. :)

کلاً بخوام جمع‌بندی کنم، باز به همون مثال کوه‌نوردی می‌رسم:

رسیدن به این تعادل، شاید رازِ خوشحال بودن و شاد بودن باشه. :)

۵.۵.۴.۴. آخری خلاصه خودمون رو دوست داشته باشیم یا نه؟ نکنه خودشیفته بشیم؟

ببین، به‌نظرم آدم به آدم‌ش بستگی داره!

این نمودار بالایی (منبع‌ش) به‌قشنگی نشون داده که اگه به کودک‌درون خیلی رو بدین، یه آدم نارسیسیست می‌شین و اگه برعکس هی بهش سخت بگیرین، بسیار وابسته و بااعتماد به‌نفس پایین می‌شین.

حفظ این تعادل همیشه کلیدِ برنده شدن هست. منتهی قضیه اینه که چون وجودِ چیزایی مثل سوشال مدیا و دیدنِ دائم موفقیت و خوشحالیِ بقیه، شبیه یه وزش باد به سمت چپ هست، این‌که یه‌کم با خودتون مهربون باشین (کمی نسیم به سمت راست) در راستای خنثی کردنِ اون، چیز بدی نیست. :)

کلاً توصیه من اینه که احتیاط واجب این است که اگه سابقه‌ی نارسیسیست بودن ندارین، با «مهربون بودن» همیشه شروع کنین!

۵.۵.۵. من از فلان چیز (گراف و الگوریتم و انتگرال) خوشم نمی‌یاد و اینا ربطی به برنامه‌‌نویسی (PHP و MySQL) نداره. چی‌کار کنم؟

والله تنها نیستی شما. خصوصاً کسایی که از بوت‌کمپ‌های فشرده میان هم همین هستن.

قضیه اینه که بخوای/نخوای، موقع مصاحبه باید یه‌کم از اینا رو بخونی. و خب هر وقت بخوای شغل عوض کنی، باید اینو قورت بدی یه دور. اما به‌جز اون، سخت نگیر. اگه واقعاً می‌بینی که توی کار روزمره‌ت نمی‌یاد، خب خیلی لازم نیست حفظ کنی که مثلاً فرق heapsort با quicksort چیه.

مطمئن هستم خیلی اساتید کلاسیک‌کار فحش می‌دن به این جوابِ من، اما من در این زمینه مریدِ رضا مارمولک هستم که «به تعداد آدمای دنیا، راه هست برای رسیدن به خدا!» اینجا هم همینه. اگه شما داری کد مثلاً اندروید می‌زنی، واقعاً حتی complexity order هم شاید به دردت نخوره، چه برسه به ریاضی و انتگرال. :)

۵.۵.۶. من دختر هستم / از ریاضی بدم میاد / درونگرا/عینکی نیستم. پس برنامه‌نویسی مالِ من نیست.

۵.۵.۶.۱. ریاضی و برنامه‌نویسی

در مورد ریاضی هم من یه توییت مفصل کردم که آقا، حِدیث داریم :دی (مقاله هست) که می‌گه numeracy خیلی تاثیری در یادگیری پایتون نداره.

تفکر منطقی و دنبال کردنِ یه سری دستور، مرحله به مرحله، همون کاری که در پختن قیمه می‌کنین اسمش «ریاضی» نیست. این‌که شما منطقاً می‌فهمین که مثلاً لپه رو باید آخر بریزین وگرنه اگه از اوّل با گوشت بپزه، خب له می‌شه و تبدیل به شله‌زرد می‌شه خورشت‌تون! این اسمش «تفکر منطقی» هست که هم قابل اکتساب هست، هم بدونِ این‌که بدونین هم ممکنه داشته باشین اصن. کسی هم اگه می‌گه «خب اینم ریاضی هست» و بعدش می‌خواد بهتون «انتگرال» بفروشه، به‌نظرم بهتره خیلی محترمانه از خودش و تعصب‌ش دور بشین. :)

در راستای فحش‌هایی هم که می‌خورم و هست هم، نظرم اینه که: آقا آره، انتگرال مفیده؛ اما نه برای همه! و مهارت‌های زندگی (این توییت و ۴.۴) و یادگرفتنِ یادگرفتن، خیلی مهم‌تره. اونایی که دوست دارن و براشون «لازم» هست، خب دم‌شون هم گرم. اما برای یادگیریِ برنامه‌نویسی، به پیر، به پیغمبر، انتگرال لازم نیست. و این «باید ریاضی‌تون قوی باشه» یکی از بدترین mythهای برنامه‌نویسی هست که می‌ندازن تو ذهن ملت که دست زیاد نشه. :)) شما هر سرچ ریزالتی برای Programming Myth رو بخونین (مثل یک و دو و سه) می‌گه که حداکثرِ کورلیشنِ ریاضی با برنامه‌نویسی اینه که ریاضی با تفکر منطقی کورلیشن داره و تفکر منطقی با برنامه‌نویسی. اما خب وقتی جمله رو بدونِ کانتکست می‌ندازی بیرون، عملاً داری ملت رو می‌ترسونی.

این ترسیدن حالا بدترین کاری که می‌کنه اینه که باعث می‌شه یه‌سری آدم اصلاً جرأتِ نزدیک شدن رو نداشته باشن. و واقعاً شما اگه فکر می‌کنین «نه خب، من دارم بهش می‌گم که وقتش رو هدر نده»، خیلی خیلی خیلی خودتون رو نماینده‌ی برحقِ خدا بر کره‌ی زمین داری می‌بینی!

حتی خودِ ریاضی رو هم روش زوم کنیم (این توییتم)، ممکنه شما بدتون بیاد چون:

  1. معلم‌ت خوب نبوده. وااااقعاً تدریسِ درست کارِ خیلی تخصصی‌ای هست. (و صدالبته education هم باید مثل تبلیغات گوگل و فیس‌بوک personalized بشه در آینده! :) )
  2. اون‌موقع که یاد گرفتی شاید دغدغه‌ها و مغزت رو چیزای دیگه بوده (استرس کنکور، درد عاشقی نوجوانی!)
  3. انگیزه کمتری داشتی. و اصن نمی‌دونستی «خب که چی» به‌جای الان که می‌خوای مثلاً ML یاد بگیری.
  4. کاربردش رو نمی‌تونستی بفهمی. و یه سری حفظیات مزخرف بود که منزجرکننده بوده.
  5. پشتکارش تو زندگی کمتر بوده. چون نمی‌دونستی چی‌کاره‌حسن قراره بشی.

پس نترس! یه بار دیگه به خودت فرصت بده و مهربون باش بازم. :)

۵.۵.۶.۲. برنامه‌نویسی و سایر mythها

(ترجمه‌ی myth به فارسی چی می‌شه؟ منظورم واژه بین «افسانه» و «گل‌واژه» هست :)) )

به‌جز «ریاضی‌ت باید خوب» باشه، کلی myth دیگه هم توی دنیای برنامه‌نویسی هست که می‌گن تا دست زیاد نشه و خودشون خفن به‌نظر بیان! مثل:

  1. باید حتماً درونگرا/introvert باشی! برنامه‌نویس‌ها نمی‌تونن با بقیه دوست بشن.
  2. باید حتماً nerd باشی و عینکی
  3. برنامه‌نویسی خرحمالی[b] هست و توش اصلاً خلاقیت و آفرینش و «هنر» جایی نداره
  4. برنامه‌نویسی boring هست و حوصله‌ت سر می‌ره توش
  5. برنامه‌نویسی یه کار مردونه هست، و اگه صدات کلفت نیست نمی‌تونی برنامه‌نویس بشی!

همین می‌شه که چیزایی مثل bro culture (و این) زاییده می‌شه و آخرش مثلاً ۹۱ درصد پروگرمرها مرد هستن و کمبود خانم‌ها در برنامه‌نویسی (فارسی، ویکی‌پدیای انگلیسی) یه معضل هست تو دنیا! Woman Facepalming on Apple iOS 14.6 دقیقاً یه سری آدم نشسته‌ن یه سری استریوتایپ ساخته‌ن؛ و در بهترین حالت ناآگاهانه و در بدترین حالت مغرضانه باعث شده‌ن که یه عالمه آدم بترسن! این بده.

بد نباشین خلاصه! و حمایت کنین – @GirlsWhoCode و @WomenWhoCode (اگه باز لینک سراغ دارین، مخصوصاً فارسی، کامنت بذارین که اضافه کنم.)

۵.۵.۶.۳. آیا برنامه‌نویس‌ها واقعاً متفاوت هستن؟

هر کسی ممکنه شغل و عنوانِ اجتماعی‌ش روش اثر بذاره. مثلاً اگه یه رفیق روانشناس داشته باشین، فکر می‌کنین که همیشه داره شما رو تحلیل می‌کنه، حتی موقع رقصیدن تو عروسی!

در مورد برنامه‌نویس‌ها هم همینه. اونا، اولاً که مثل هر رشته‌ی دیگه‌ای یه‌سری زبونِ خاص خودشون و جوک‌های مفصل خاص خودشون رو دارن (این کانال تلگرام و این ساب‌ردیت).

ثانیاً این قضیه بیشتر در مدل فکر‌کردن و صحبت‌کردن و استدلال کردن و ارتباطات انسانی بیشتر خودش رو نشون می ده بعد از یه مدت. و بدترین علائم‌ش اینه که فکر می‌کنن/می‌کنیم که «همه‌ی مسائل و bugهای دنیا رو می‌شه debug کرد!» و گاهی درکِ احساسی‌ای که خیلی منطقی نباشه رو یادمون می‌ره! تا حدی که من وقتی دوستم بهم زنگ می‌زنه، گاهی خیلی صریح اوّل مکالمه ازش می‌پرسم «do you want my empathy or my opinion?» و خب شاید برای کسی از بیرون ببینه، این‌شکلی باشه که چه‌قد من روبات هستم!

یا حتی زندگی کردن با یه پارتنر برنامه‌نویس شاید نیاز به سری manual داره (یک و دو) برای بهتر فهمیدنِ نیازها و منظوراتشون. اما این به‌منزله‌ی «خفن» بودن نیست؛ گاهی صرفاً یه تفاوت هست که اگه درک بشه، می‌تونه خیلی مفید هم باشه. :) (اگه کسی فک می‌کنه برتر هست به‌خاطر این چیزا؛ اون آدمِ مزخرفی هست و هنوز بزرگ نشده. :) )

خلاصه، اگه برنامه‌نویس هستین، سعی کنین آدم بمونین؛ و دنیا رو طوری نگه‌دارین که اطرافیان‌تون ازتون خرسند بمونن و دوست داشته باشن به هنگ‌اوت کردن باهاتون ادامه بدن! ;)

۵.۵.۷. من دوست دارم «هوش مصنوعی» بخونم ولی بین نرم‌افزار و هوش مصنوعی مونده‌م برای کار. چه کنم؟

من فرضم این هست که بحث فوق‌لیسانس و بالاتر هست. چون تا جایی‌که می‌دونم هوش‌مصنوعی گرایش لیسانس نیست.

والله به‌نظرم کلاً درس خوندن برای بعد از لیسانس، چیزی نیست که توی کار (به‌عنوان Software Developer و نه یه چیزی مثل Research Scientist) تاثیری داشته باشه. و بیشتر تزئینی هست! با مدرک فوق البته می‌تونی هم یه‌سری دانشگاه‌ها (تو ایران مخصوصاً) درس بدی انگار، و سربازی عقب بندازی، و زن هم بگیری! :)) جز اینا نمی‌دونم کاربرد دیگه‌ای داره یا نه.

خلاصه به‌نظرم اگه خیلی دوست داری، و این‌که خودت بشینی خونه و بخونی یا پروژه دورهمی هم ارضات نمی‌کنه، خب برو سر کار ولی در کنارش یه فوقِ هوشِ لایت‌ای هم بگیر. :)

۵.۵.۸. من به‌نظرم فلان زبان خیلی سخت‌تر از بهمان زبان هست. آره؟

نه!

اصن یه مثالی هست که کسی که «برنامه‌نویسی» خوب بلد باشه، می‌تونه هر زبون دیگه‌ای رو راحت pick up کنه! دقت کن که نمی‌گم حرفه‌ای و خفن و مرجع بشه. می‌گم بتونه بفهمه.

درست مثل یادگیری زبان‌های دیگه. شما اگه «گرامر» انگلیسی رو عالی یاد بگیری و دقیق بدونی نقش تک تک کلماتِ جمله‌ی «Assuming you could have been given up upon X» چی هست، اون موقع می‌تونی کم کم جملات و گرامر مثلاً فرانسوی و آلمانی رو هم بفهمی. درسته که همچنان قواعد عجیب هست و کلی کلمه (vocabulary)، اما می‌تونی کم‌کم ارتباط برقرار کنی و بخونی. حالا خبر خوب اینه که در دنیای برنامه‌نویسی:

  1. این قواعد عجیب معمولاً محدود هستن (مگر این‌که مثلاً از پاسکال بری lisp، یا مرض داشته باشی بخوای زبانِ brainfuck رو یاد بگیری!). و اگه شما مفاهیم ابتدایی مثل inheritance و OO و دیزاین پترن‌ها رو به‌مرور یاد گرفته باشی، خیلی کمتر سورپرایز می‌شی.
  2. دایره‌ی لغات زبان‌های برنامه‌نویسی معمولاً به‌جای ۲۰۰۰ برای شروع، و ۱۰ تا ۳۰ هزار برای تسلط در زبان‌های آدمی، معمولاً در حد شاید زیر ۵۰ باشه. و چیزای حفظی (مثل همه‌ی CSS Properties) هم لازم نیست دونه دونه یاد بگیری و کلیّت داستان (مثل فرق margin با padding) رو بدونی، بقیه رو در طول مسیر یاد می‌گیری.

۵.۵.۸.۱. باز هم «تعادل» مهمه!

خلاصه، به‌نظر من نباید ترسید! آره باید واقع‌بین بود و با ساده‌انگاری (oversimplify) کردن، تبحّر و تسلّطِ آدم‌های دیگه رو نادیده نگرفت؛ اما نیازی به «وای؛ من فرار کنم!» یا «نه، این یکی دیگه از عهده‌ی من خارجه!» نیست.

۵.۵.۸.۲. از یارو دور شین!

کلاً هم اگه کسی داره به‌شما خیلی «ندیده و نشناخته» می‌گه که «حتی با صرف زمان مناسب» نمی‌تونین چیزی رو یاد بگیرین، حتماً از اون آدم به‌شدت دوری کنین. چون یا خودش خیلی کم‌تجربه است، یا خیلی دنیاش کوچیکه و همه رو شبیه خودش می‌بینه، یا خیلی insecure هست و می‌ترسه شما بهش برسین و بعدش دیگه چیزی برای عرضه نداشته باشه. :)

۵.۵.۸.۳. مجدداً، یاد بگیرین که یاد بگیرین. و گوگلِ زمانه‌ات را بشناس!

حرف آخر هم این که اگه شما «یاد بگیرین که یاد بگیرین» واقعاً بزرگترین superpower دنیا رو دارین! یادمه اصن (یه خاطره بگم) من کلاس اوّل راهنمایی (گلاب‌به‌روتون سمپادی بودم و زبان انگلیسی از راهنمایی بود تو برنامه) یه روز اومدم خونه و به مادرم گفتم «من امروز یه چیزی یاد گرفتم که باش می‌تونم همه‌ی انگلیسی رو یاد بگیرم!» و مادرم متعجب نگام کرد که «WTF?!» و من گفتم، امروز معلم‌مون یادم داد که بپرسم «What does "this" mean in English?» :))

خلاصه، به‌نوعی، «گوگلِ زمانه‌ام» را شناخته بودم اون موقع! :دی

حالا اینم همینه. شما اگه مثلاً دست‌تون گرم باشه که هر زبونی می‌خواین یاد بگیرین یه ToDo App یا امثالهم باهاش بنویسین (مثل https://todomvc.com) یه آخر هفته، اون موقع واقعاً نیازی ندارین از چیزی بترسین. اصن سرِ همین هست که می‌گن «دسترسی به اینترنت» یکی از حقوق اولیه‌ی انسانی باید باشه. و بنده مخلص امثال آقای ویلز یا برادران پرتوی هستم. :) چون به‌نظرم دو تا چیز مهم در ادامه‌ی زندگی بشر، «آموزش» و empower کردن مردم از طریق یادگیری و «سلامتی» هستن و بس.

نترسین! با خودتون مهربون باشین و به خودتون خیلییییی اعتماد داشته باشین! (مطلب ایمپاستر رو بخونین در ۵.۵.۴)

۵.۵.۹. فرانت‌اند خیلی مهندسی نیست! حوصله‌م سر رفته. چه کنم؟

والله من هم اوایل خیلی تصادفی گذرم به فرانت‌اند خورد. و هیییچ ربطی به بک‌گراند الگوریتمی من نداشت. و خب منم اوایل متعجب بودم. منتهی شانسی که آوردم درگیر دنیای بزرگ Single Page Applications شدم و بعدش از دنیاش خیلی هم خوشم اومد.

خیلی دقیق بگم، ۴ تا نکته هست.

  1. فرانت‌اندی که فقط شما یه دیزاین رو به یه HTML/CSS تبدیل می‌کنین، آره کمی حوصله سر بر هست. اما این همه‌ی Front End نیست.
  2. مدیریت بالای ۱۰ هزار خط کد مفید Front End و مسائلی مثل State Management توی کل web application واقعاً نیاز به طراحی و دیزاین پترن و مدیریت … داره!
  3. این حس که کدی که با دستای شما نوشته شده داره روی میلیون‌ها تا کامپیوتر داره دانلود و اجرا می‌شه، خیلی جذابه!
  4. خیلی از اپلیکیشن‌ها، از بُعد Product، دلیل برتری‌شون راحتیِ استفاده هست بیشتر تا این‌که توی بک‌اندشون MongoDB هست یا MySQL یا لاراول داره یا نود.جی.اس؛ یا این‌که ‌response time برای API endpointها آیا ۷۰ میلی‌ثانیه هست یا ۱۲۰ میلی‌ثانیه. و خب ظرافت و تأثیرگذاری توی فرانت‌اند می‌تونه خیلی به پروداکت و موفقیت نزدیک‌تر باشه.

خلاصه اگه از بروکلی خوش‌تون نمی‌یاد، این احتمال رو بدین که بد پخته شده!

برای قضاوت بین فرانت‌اند و بک‌اند هم به‌نظرم به این توجه کنین که:

این فرق اساسی اینا هست. اگه دلیل انتخاب‌تون هم تهش «سلیقه من» نیست، و فک می‌کنین یکی بر دیگری برتری داره، به‌نظرم جا داره یه‌کم بزرگ‌تر نگاه کنین به دنیا. :)

پ.ن. اگه بروکلی‌های دم دست‌تون خوشمزه نیست، یاد بگیرین خودتون آشپزی کنین. جدی، همین https://vaajoor.ir رو اگه خواستین یه‌دونه مشابه‌ش رو بسازین. به‌نظرم بک‌اندش می‌تونه صفر خط باشه (دیپلوی روزانه، یا قایم‌کردن کل کلمات سال توی یه آرایه‌ی js آرتیفکت‌ها) یا حتی یه‌خط باشه در ساده‌ترین حالت! (یه دیکشنری رو از یه جا بگیره و کش کنه و بر حسب روزِ سرور، روش به‌صورت round robin بر حسب سایز دیکشنری، یه mod بگیره.) این رو که نوشتین، بعد بیاین ادامه‌ی بحث. :دی


۵.۶. رزومه/لینکداین، و سابقه کاری

تعریف: منظور از سابقه کاری، چیزایی هست که اتفاق افتاده و نمی‌شه کاریش کرد. منظور از رزومه/لینکداین نحوه‌ی ارائه/پرزنت‌کردن اونا هست.

۵.۶.۱. چه‌چیزی توی سابقه کاری من ممکنه حساسیت‌زا (red flag) باشه؟

چیزای حساسیت‌زا توی سابقه کاری به نظرم اینان:

  1. بند نموندن توی یه شرکت یا اصطلاحاً job hopping.
    کلاً این‌که زیر یک‌سال کار عوض کنین مدام، خیلی علامت خوبی نیست. چون به کارفرما این خبر رو می‌ده که بنده‌خدا قراره ۶ ماه رو شما سرمایه‌گذاری کنه که دانش داخلی رو تازه یاد بگیرین، بعد که تازه قراره مفید باشین، ممکنه در برین!
    ممکنه شما برای هر جهش (hop) یه توضیح/توجیه داشته باشین، مثل کارفرمای بد یا پروژه خوابید، یا مشکلات شخصی، یا …، اما توی نگاه اوّل کارفرما یا hiring manager دنبال چیزای پیچیده و توضیح‌دار نمی‌گرده. نمی‌گم این آخر خط هست، اما اگه می‌تونین از اوّل اجتناب کنین، اجتناب کنین!
  2. تکرار خودتون، بدون پیشرفت.
    این‌که شما یه تایتل رو زودی بگیرین و یهو سالها به همون کار چیز مشغول باشین. درسته که تایتل (مثل سینیور سافت‌ور انجینیر) یه قرارداد هست و گاهی زود هم ممکنه بدن بهتون مثل آب‌نبات که دل‌تون خوش بشه. اما خب بدی‌ش این هست که شاید بعد از چندین سال این حس رو بده که شما انگیزه یادگیری و پیشرفت رو از دست داده‌این و دنبال یه sweet spot هستین که اصطلاحاً
    rest and vest کنین! (معادل ایرانش می‌شه: مدیرعاملی بیاین، جوجه بخورین، زودم بپیچین برین خونه!)
  3. بهتر بودن از چیزی که موردنیازه (اصطلاحاً overqualified بودن)
    این یه حقیقت تلخ هست. و خب واکنش اولیه‌ی ما (خصوصاً فرهنگی) اینه که «ای بابا! چرا من زیادی خوبم؟ :(». اما خب وقتی خودتون رو بذارین جای کارفرما/مدیر مربوطه، اون دوست نداره برای یه پوزیشن جونیور، کسی که سابقاً شرکت خودش رو داشته استخدام کنه که بخواد هی رو مخ بره طرف و نظر بده و نشینه یه گوشه کارش رو انجام بده. مضافاً اگه حقوق و مزایای یه جونیور رو هم به‌طرف بدن، طرف خواسته/ناخواسته ته دلش غمگین خواهد بود و ذوق و شکر نخواهد داشت.

۵.۶.۲. چه‌چیزی توی رزومه/لینکداین من ممکنه حساسیت‌زا (red flag) باشه؟

اینا راجع به ارائه/پرزنت کردن سابقه کاری هست.

من توی این زمینه سابقه‌م یه‌کم بیشتر هست چون توی کارهای قبلیم مدیر استخدام‌کننده بوده‌ام و بالای ۱۲۰۰ تا رزومه و ۱۰۰ها مصاحبه تلفنی و حضوری داشته‌م در طی سه چهار سال.

دقت کنین که اینا ممکنه کاملاً سلیقه‌ای هم باشه و هر hiring managerی و هر شرکتی با هر کالچری ممکنه استایل خودش رو داشته باشه. و من سعی می‌کنم چیزایی که «به نظر خودم» رایج هست و عمومیت داره رو بگم اینجا.

چیزایی که به ذهنم میاد ایناست:

  1. فرمتینگ افتضاح
    معمولاً گوگل‌داک و PDF رو من خیلی توصیه می‌کنم. گوگل‌داک برای این‌که راحت بدین دوستان‌تون (و حتی من) ببینن و نظر بدن و همه‌جا بتونین آپدیت کنین. PDF هم برای خروجی گرفتن که مطمئن باشین طرف راحت و سه‌سوت (و حتی توی مرورگر) می‌تونه ببینه.
    داخل داکیومنت هم سعی کنین از فونت‌های یک‌سان و فاصله‌گذاری یک‌سان استفاده کنین. یهو اون وسط یه چی بولد یا با فاصله عجیب نشه. (نکته: به‌جای عین گربه نشستن روی کیبرد، حتماً
    tab-stop رو یاد بگیرین؛ همین‌طور جداول نامرئی رو. :))
  2. طولانی بودن بی‌دلیل
    زیاد بودن دلیل بر خفن بودن نیست. کلاً زندگی کاری هر کسی یه کِیک هست، و رزومه یعنی به اندازه‌ی یک الی دو صفحه از بالای کِیک رو بدین. دقیقاً در همین قد عمق. و این یه مهارت هست که به‌درستی و بدون کج‌وکوله شدن مفاهیم (یه جا زیاد تو عمق، یه جا سطحی) بتونین خودتون رو ارائه کنین.
  3. کلمات و حتی «افعال» نادرست و گنده‌تر از واقعیت
    توی انگلیسی خیلی بیشتر شاید این تو چشم بیاد. مثلاً بین build و developed و designed و implemented یه فرق‌های ریزی هست. و گاهی مثلاً شما یه‌چیزی می‌گین که انگار که مثلاً یه زبون رو خودتون اختراع کرده‌این! (که کار بدی هست. :دی)
    همچنین خیلی چیزای عجیب نگین – مثلاً توی ۳ ماه شما تونسته‌این یه پروژه‌ی ۵۰۰هزار خطی رو ریفاکتور کنین. یا مثلاً در عرض دو هفته، ۳۵۰ تا باگ رو فیکس کردین (تابلوئه که یه‌سری رو فقط close کردین!). یا مثلاً سود شرکت رو یهو با چهار تا کلیک ۱۰ درصد بردین بالا. یا به‌تنهایی باعث شده‌این شرکت یهو در یک سال مثلاً فلان‌قدر میلیون‌دلار سود بکنه.
    دقت کنین اینجا جلسه خواستگاری برای تعیین مهریه نیست که هی از هنرهای انگشت‌هاتون بگین. همین‌که معقول باشین و مرتبط و علاقه‌مند به یادگیری و واقع‌بین، گاهی برای شروع کافیه.
  4. خاطره گفتن از زمان اون خدابیامرز!
    واقعاً کاری که شما ۱۰ سال پیش کرده‌این (بهسال ۴۰، ۴۲ که با ۱۰هزار تومن می‌شد هم پیکان خرید و هم زن گرفت) اونقدار هم مهم نیست. و لزومی نداره همه سکشن‌های سابقه کاری‌تون همه از نظر ارتفاع پیکسلی و سانتی‌متری هم‌اندازه باشه. اون ته‌مه‌ها رو می‌تونین حتی در حد یه بولت پوینت بذارین و بس. و بیشتر روی تجربه‌های اخیر مانور بدین که مفیدتر و مرتبط‌تر هست.
  5. غیرقابل‌ارزیابی و درستی‌سنجی بودن ادعاها
    شبیه مورد ۳، ولی از کلمات غیرقابل ارزیابی مثل «خوب» و «بهبود» (بدون متریک و واحد اندازه‌گیری) استفاده نکنین. این‌که بگین مثلاً سرعت بالا اومدن اپ رو ۵ درصد بهبود دادین خیلی خوبه. اما «سریع شد» واقعاً هیچ ارزشی نداره.
    دقت هم بکنین که وااااااقعاً توی همین مثال قبلی، ۵ درصد خیلی بهتر از ۸۰ درصد هست! چون ۸۰ درصد بیشتر این پیام رو می‌رسونه که قبلش چه‌قدر بی‌دروپیکر و افتضاح بوده. و به‌نوعی نشون می‌ده که شرکت افتضاحی شما کار کرده‌این.

خلاصه بخوام بگم، بدترین حسی که به کسی که داره رزومه‌تون رو می‌خونه می‌تونین بدین اینه که حس بکنه که «خر» فرض‌ش کردین و دارین گول‌ش می‌زنین؛ ولو با ادعاهای عجیب و زیادی تو چشم و صورت و دماغ طرف کردنِ این‌که «من خیلی خفنم، ها!»

۵.۶.۳. چه چیزایی توی رزومه/لینکداین می‌تونه مثبت و کمک‌کننده باشه؟

بعداً می‌نویسم.

۵.۶.۴. چه‌چیزی گیت‌هاب‌م رو جذاب کنم؟

کلاً دو مدل کار هست:

  1. یه پروژه خودت تعریف می‌کنی و سعی می‌کنی روی اون خوب سرمایه‌گذاری کنی. و خروجیش چیز جذابی می‌شه مثل یه اپ یا وبسایت یا ابزارک مفید و کاربردی. این رو می‌تونی با زبانی که دوست داری هم بنویسی که هم یاد بگیری و لذت ببری، هم خروجیش به درد بخوره و هم توی رزومه بره.
    (توصیه‌ی
    هادی: بهتره یک README تر تمیز هم داشته باشه که کسی که میاد سربزنه بفهمه به چی نگاه می‌کنه.)
  2. یه پروژه یا library/framework که هست رو پیدا کنی و توی اون مشارکت داشته باشی.
    اکثر پروژه‌ها یه محیط چت یا ارتباطی با ادمین‌ها دارن (یه discord یا چیز مشابه). کافیه بهشون بگی که تو با این پروژه خیلی حال می‌کنی و دوست داری داوطلبانه براشون باگ فیکس کنی. قطعاً بهت چند تا باگ ساده می‌دن که فیکس کنی و هم یاد بگیری، هم مفید باشی، هم کلی اعتبار خوب بسازی!

۵.۷. زندگی شغلی

۵.۷.۱. چه‌جوری work/life balance داشته باشم؟

من یه‌ذره تو این زمینه شاید مثال و آدمِ مناسبی نباشم! :)یادمه سرِ اون کاری که توش ۴.۵ سال موندم، یه دلیلش این بود که خیلی دوست داشتم کارم رو. هم احترام می‌گرفتم و هم یاد می‌گرفتم. و اون‌قدری خوشحال بودم که به همه می‌گفتم:

I don't feel like I am an employee – I am just doing what I love to do, and some people are generous enough to pay my rent!

این مدلِ نگاه، که شغلی رو پیدا کنین که توش حال‌تون خیلی خوب باشه، واقعاً مفید هست.

برعکسش هم هست البته. من توی یه شرکت دیگه هم بودم که تهش تقریباً رسماً افسردگی گرفتم و هر روزش برام عذاب بود.

خلاصه به‌نظرم مهم‌ترین فاکتور در این زمینه اوّل این هست که حالتون توی work خوب باشه. و به‌نوعی، با کمال احترام، خیلی لازم نیست حتماً مرزبندی شدید بکنین و دو تا شخصیت جدا بسازین از خودتون که بخواین به یأسِ فلسفیِ این‌که «ما زندگی می‌کنیم که کار کنیم؟ یا کار می‌کنیم که زندگی کنیم؟» برسین.

۵.۷.۱.۱. توصیه‌های من برای جنبه‌ی Work قضیه

  1. روتینِ زمانیِ خودتون رو، که حتماً با منیجرتون هم تأیید/کانفرم کرده باشین، جا بندازین – مثلاً دقیقاً ۹ تا ۵؛ یا ۱۰ تا ۶. و خیلی خارج از اون زمان نه ایمیل چک کنین نه اسلک نه چیزی. و اگه هم دیدین که کسی درخواستی داده که می‌تونه تا فردا صبر کنه، الکی نایس‌بازی در نیارین (اگه راحت نیستین قلباً) و فقط mark as unread بکنین‌ش که صبح جواب بدین (هم ایمیل و هم اسلک دارن این امکان رو.)
    دقت کنین که خیلی از مواقع، این خودِ شما هستین که ناخواسته به بقیه (حتی منیجر) اعلام می‌کنین چه‌قدر در دسترس هستین! و شاید هیچ انتظاری نباشه در ابتدا. و صرفاً یه شرایط مرغ و تخم‌مرغی داره پیش میاد ناخواسته. برای مثال: اگه طرف ۸ شب پیام بده ← و شما جواب بدین ← طرف فکر می‌کنه شما ۸ شب در دسترس هستین ← و شما تا ۸ شب مجبور می‌شین در دسترس باشین ← و اگه نباشین یه روز، طرف شاکی می‌شه!
  2. پیشِ خودتون ست کنین که کجاها قراره قهرمان باشین و از زندگی شخصی مایه بذارین که تهش بهتون پاداش بدن! و اگه مثلاً نصفه‌شب پا شدن و کد زدن شما رو به جایی نمی‌رسونه (از منیجرتون تلویحاً بپرسین) و بیشتر طرف دنبال پیشرفت‌های دیگه (مثل یادگیری) هست تا خرکاری اصطلاحاً، الکی خودکشی نکنین.
  3. ساعتِ پاسخ دادنِ ایمیل‌های شما خیلی مهمه! اگه جوابِ یه ایمیل رو دارین ساعت ۱ نصفه‌شب می‌دین و طرف خواب هست، الکی فک نکنین فردا صبح یارو که ببینه می‌گه «وای فلانی چه‌قدر پترُس فداکار هست تا ۱ داشته ایمیلی جواب می‌داده!» بلکه کاملاً ممکنه بگه «فلانی چه اسکله تا ۱ داره ایمیل می‌زنه!» یا «این بدبخت زندگی نداره؟!» در همین راستا، می‌تونین بذارین درفت بمونه، یا با scheduled send تنظیم کنین که ۷ صبح یا ۸ صبح ارسال بشه. :)
    ایضاً روزِ ایمیل‌ها هم مهم هست. جمعه (آخرین روز هفته) از ظهر به بعد دیگه ملت دارن به‌سمتِ سرد شدن می‌رن، پس ایمیل مهم و طولانی نزنین و بذارین ملت هم از زندگی لذت ببرن.
  4. الکی اضافه سرِ کار نمونین. من سالِ اول تقریباً هفته‌ای سه روز تا ۹ شب می‌موندم شرکت و یاد می‌گرفتم. کد تیم‌های دیگه رو می‌خوندم و هی داکیومنت می‌خوندم که یاد بگیرم! و پیشِ خودم هم فکر می‌کردم مثلاً منیجر تیم بغلی که ساعت ۸ می‌رفت خونه و با دست از من خداحافظی می‌کرد حداکثر تو دلش می‌گه «وای این پسره چه‌قدر فداکار و قهرمان هست!» بعدترها یکی برگشت بهم گفت که بابا، ملت فک می‌کنن تو توی طول داری ول می‌چرخی که کارات عقب می‌مونه و مجبوری تا دیروقت شب بمونی شرکت و کار بکنی!
    حالا این قضیه توی کارِ ریموت و کرونا شاید خیلی نباشه (حواس‌تون به آنلاین استتوس باشه). اما خلاصه از این توهّم‌ها نزنین، چون ممکنه اثر عکس داشته باشه! =))
  5. وقتی می‌رین سفر یا تعطیل هستین، واقعاً روزی حداکثر یک‌بار ایمیل چک کنین. و فقط اگه تنها کسی هستین که جواب می‌تونه بده جواب بدین. وگرنه بذارین بقیه جواب بدن. حتماً حتماً حتماً هم vacation responder ست کنین که هر ایمیلی که مستقیم به شما اومد رو اتومات جواب بده و بگه که تا چه زمانی نیستین، و اگه کار ضروری هست با کی تماس بگیره. این خیلی خیلی مهمه.
  6.  یه ایده اینه که شماره تلفن‌تون رو به رئیس یا اعضای تیم یا کسایی که ممکنه باهاتون کار داشته باشن بدین که خارج از ساعت‌های کاری اگه کار ضروری بود، تماس بگیرن. این قضیه دو تا پیام رو می‌رسونه: یک) شما وظیفه‌شناس هستین و براتون کار و شرکت مهم هست که ناپدید نشین و کسی دست‌ش تو حنا نمونه اگه شرایط اضطراری بود. دو) سر هر چیزِ الکی‌ای بهتون یهو اسلک/ایمیل ول ندن ساعت ۱۰ شب! و خودشون شرمنده بشن که دارن خارج از ساعت اداری باهاتون تماس می‌گیرن. و فردا یادشون بمونه.
  7. «نه» بگین، خیلی محترمانه. رودرواسی نکنین. ولی خیلی محترم و صبور باشین. و یاد بگیرین در حد توانایی و درک طرف هم توضیح بدین که فکر نکنه شما خیلی موجود مزخرفی هستین! مثلاً بهش بگین «خیلی دوست داشتم می‌تونستم کمک بکنم؛ اما الآن باید این پروژه رو تموم بکنم و شب هم دیت‌نایت دارم که از قبل پلن شده. اگه تا فردا کسی رو پیدا نکردی، باز هم بگو.» یا بگین «ایده‌ی خوبیه، یه میتینگ بذار برای ماه دیگه یا دو هفته دیگه رو کلندرم که بعداً راجع بهش حرف بزنیم.»
  8. حتماً حتماً حتماً یاد بگیرین که وقتی که overwhelmed شده‌این و هی داره درخواست جدید هم می‌رسه، لیست کارهایی که دارین رو، به همراه تخمین‌شون به‌ساعت، به منیجر بدین و ازش بخواین که اینا رو reprioritize بکنه براتون. و هر موقع یهو درخواست جدیدی که بیشتر از ۲ دقیقه بود رسید، دوباره همین کار رو با منیجرتون بکنین.
  9. راحت ابراز کنین که نیاز دارین با «خانواده» باشین. حتی اگه مجرد هستین هم بگین «دیت» دارین! :دی توی آمریکا مخصوصاً، خانواده خیلی چیز ارزشمندی هست. و همین‌طور وقت گذروندن با خانواده و شام پیش‌شون بودن.
  10. اگه یه‌موقع اضافه کاری‌ای موندین که لازم نبوده و حیاتی نبوده، از منیجرتون بخواین که خارج از نوبت، یه نصف روز استراحت کنین یا زودتر برین خونه فرداش. چیز بدی نیست. نگین «این به اون در» ولی بگین «احساس می‌کنم نتونستم استراحت کنم و دوست دارم استراحت کنم که بهتر بتونم کار بکنم!»
  11. به سلامتی روحی خودتون بها بدین. اخیراً هم توی سیلیکون‌ولی این‌که بگین به دلیل mental health نیاز به استراحت دارین، یه‌کم پذیرفته شده هست و لازم نیست دروغ بگین که اسهال شده‌این یا مشکل دیگه دارین. ولی قبلش سعی کنین این trust/اعتماد متقابل ایجاد بشه، که نخواین هر overthink بکنین که وای نکنه فک کنن دارم می‌پیچونم. و خیال‌تون پیش خودتون راحت باشه.
  12. یه تکنیک خیلی رایج این هست که برای تمرکز، کلندرتون رو بوک کنین با «working» قشنگ یه ۳ ساعت! که کسی روش میتینگ نذاره.
  13. میتینگ‌هایی که دوست ندارین رو نرین. دوباره «نه گفتن» رو انجام بدین، محترمانه، و با رضایت و تأیید منیجر.
  14. تایم‌هاتون رو بعد از پایان روز، اگه خواستین، توی کلندر و با یه رنگ دیگه بذارین. که سرِ چی رفت. که اگه لازم شد به منیجرتون نشون بدین و بگین که چرا بهره‌وری کم بوده. فقط این‌که، لطفاً، با لحنِ «مامان ببین! اصغر گوشه‌ی لباسم رو کشید و نتونستم مشق بنویسم!» نگین. بلکه بپذیرین که متأسف هستین که نتونسته‌این اون‌طوری که می‌خواسته‌این کارها پیش بره و از منیجرتون، به‌صورت سؤالی و نه نق‌ای، بخواین بهتون راهنمایی کنه که چه‌جوری می‌تونین در آینده بهتر منیج کنین این رو. :)
  15. سعی کنین happy hour و کلاً ایونت‌های شرکت رو همیشه برین و شرکت کنین. حتی اگه آدم سوشال‌ای نیستین و می‌ترسین بحث‌های شخصی شما رو ناراحت کنه و نگران وجهه/لهجه‌تون هستین، بازم برین. سعی کنین کلّ داستان رو خیلی professional نگه دارین (مخصوصاً اگه مجرد هستین، و مخصوصاً اگه مخاطب‌تون از جنسیت متفاوت هست، و خیلی مخصوصاً اگه هر دو).
    کلی می‌تونین توی این بحث‌ها دوست و آدم جدید پیدا کنین. و دفعه بعدی که فلان همکار از فلان دپارتمان ازتون درخواستی داشت، شما ناخواسته یه لبخنده به لباتون می‌یاد. :) و همین خیلی بیشتر بهتون کمک می‌کنه که یادتون نیاد که شما یه کارمند هستین؛ و بیشتر حس کنین با دوستاتون دارین در راستای یه هدف مشترک، همه‌تون تلاش‌تون رو می‌کنین!

۵.۷.۱.۱. توصیه‌های من برای جنبه‌ی life قضیه:

  1. مجدداً یاد بگیرین نه بگین، محترمانه! حتی به خانواده. وظیفه شما شاد/راضی/please کردن بقیه نیست.
  2. با دوستای مناسبی hang out کنین. دوستی‌ها خیلی مواقع (مخصوصاً توی خارج) بیشتر از سر جبر زمانی/مکانی هست تا انتخاب. مخصوصاً با هم‌وطن‌ها. پس اگه با کسی حال نمی‌کنین، تدریجاً خارج کنین‌ش از حلقه‌های دوستی. و تعارف رو بذارین کنار. ایضاً راجع به ایونت‌ها.
    دقت کنین که وقت شما برای life هم محدود هست و باید از این وقت در راستای quality و کیفیت بالا استفاده کنین!
  3. یاد بگیرین چی حال‌تون رو خوب می‌کنه. و اگه لش کردن و نتفلیکس دادن براتون خوبه، هیچ عیبی هم نداره.
  4. فلسفه‌ی work hard, play hard رو بهش عنایت داشته باشین. و همون‌قدری که work hard می‌کنین و hardworker هستین، play hard هم بکنین! و به خودتون روا بدارین که لذت ببرین از زندگی. :)
  5. یاد بگیرین پول خرج کنین. مدیریت پول (personal financial management) هم یه‌چیزی هست که می‌شه راجع بهش ساعت‌ها حرف زد! خلاصه بگم، یه راه اینه که ۱۰ درصد حقوق‌تون رو بعد از مالیات و پرداخت اجاره خونه، به خودتون بدین که باش هر عشقی دل‌تون می‌خواد بکنین. و حال‌ش رو ببرین.
  6. برای زمان خودتون، خارج از کار هم، یه مبلغ بذارین. مثلاً ساعتی ۳۰ دلار. و اگه یه کاری (مثل این که برین خرید کنین، یا بگین دلیوری بیاره) مثلاً نیم ساعت طول می‌کشه، ۱۰ دلار بدین به صرفه هست. ایضاً یه‌سری choreهای دیگه‌ی زندگانی رو.
  7. رابطه: خیلی مهم‌تر از «حجم زمانی»‌ای که شما با پارتنرتون می‌ذارین، «کیفیت»ش مهم هست. سعی کنین یه‌سری سنت/ترادیشن بین خودتون بذارین که مثلاً هر چهارشنبه یه دیت‌نایت باشه. و واقعاً گوشی‌ها رو خاموش کنین و ۴ ساعت با هم باشین و فقط پیش هم. و واسه هم «خسته» نباشین همیشه.
  8. تجربه‌ی «خاموش» (دقیقاً خاموش، و نه سایلنت یا فلایت‌مود یا …) کردن گوشی رو داشته باشین. خیلیییییییی تأثیر داره.
  9. یه جمله‌ی قصاری که ما قبلاً که بازی‌های آنلاین (تراوین؛ گلاب‌به‌روتون!) می‌کردیم داشتیم این بود که «تراوین بهترین تفریح روزهای بد، و بدترین تفریح روزهای خوبه!»
    خیلی از این تفریحاتِ گوگولی مگولی مثل توییتر و اینستا و اینا هم همین مدل هستن. سعی کنین زندگی‌تون اون‌قدر خوب باشه که نیازی به اینا نباشه.
  10. خلاصه‌ی کلام این‌که واقعاً خوبه که کیفیت زندگی شخصی رو همیشه مدّ نظر داشته باشیم، نه صرفاً ساعت‌هاش رو. :)

۵.۸. پیشرفت و ارتقای شغلی

دقت کنین که همه‌ی این توضیحات این پایین، کاممممملاً بسته به شرکت ممکنه متفاوت باشه. و بهترین کار این هست که از منیجر مستقیم‌تون این چیزا رو بپرسین که مطمئن باشین اصطلاحاً دچار «داداچ داری اشتبا می‌زنی!» نشین. :)

۵.۸.۱. چه‌جوری تو جاب ترفیع پیدا کنم؟

یکی از بهترین کارهایی که می‌تونین بکنین اینه که با مدیر مستقیم (direct manager) و غیرمستقیم (اصطلاحاً indirect manager یا مدیرِ مدیرتون) رابطه خوبی داشته باشین و ازش بخواین که بهتون جهت، راهنمایی، و حمایت لازم برای رشد رو بده. می‌تونین توی یه جلسه هفتگی با مدیر مستقیم یا ماهانه با غیرمستقیم اینا رو بپرسین:

  1. سلام، به‌نظرتون من عملکردم چه‌طوره؟
  2. چه نقاطی رو به‌نظرتون خوبه بیشتر روش کار بکنم؟
  3. مرحله‌ی بعدی ارتقا برای من، چه مرتبه‌ای هست؟
  4. برای رسیدن به اون مرتبه، چه چیزهایی رو باید کسب کنم؟
  5. مرسی از حمایت‌تون. دوست دارم هر هفته یه قسمتی از جلسه‌ی هفتگی رو به بررسی عملکردم اختصاص بدیم. و اگه لازم هست من بیشتر تلاش کنم که مطمئن بشم این تسک‌های هفتگی برای ارتقا (مثل یادگیری تکنولوژی جدید، یا کارهای فوق برنامه) رو انجام می‌دم.

دقت کنین که با همه این اوصاف، به هزار و یک دلیل ممکنه این ترفیع زود اتفاق نیافته یا اصن نیافته. از مسائل داخلی شرکت و امور اداری (HR) گرفته، تا عوض شدن مدیر، تا سیاست‌های شرکت، تا … پس سعی نکنین طوری خودکشی کنین که بعدش پشیمون بشین. بلکه سعی کنین تلاش‌هاتون برای خودتون هم یادگیری (چه فنی، چه تجربه) حتماً داشته باشه!این‌که یادگیری شما و نیاز شرکت در یک راستا باشه، خیلی می‌تونه خوب باشه. هم در رضایت‌مندی شخصی، هم در دریافت حمایت و احیاناً ارتقا شغلی.

در مورد نکات غیر فنی این داستان:

  1. دقت کنین که این وسط این‌که چه‌جوری با منیجر مستقیم صحبت کنین و باهاش رابطه دوستانه (و متعادل، نه افراط و نه تفریط) بسازین، هم یه مهارت شخصی/بین‌شخصی هست که واقعاً مهمه توش ماهر بشین!
  2. به هیییییچ وجه منیجر مستقیم خودتون رو دور نزنین! و هرگز پشت‌سرش بد نگین. احتمال این‌که به‌هر دلیلی توی هر دعوایی بین شما و منیجرتون، شما پیروز بشین خیلی پایینه کلاً. (مگر مسائلی که تخطی قوانین شرکت باشه مثل بی‌احترامی.) اصلاً اصطلاحاً اون‌قدر نقش منیجر مهمه که می‌گن: People don't leave companies, they leave managers.
  3. این‌که بدونین چه زمانی باید این سؤال رو بپرسین هم مهمه. اوّل نشون بدین که توی کار خودتون موفق هستین، بعد دنبال مسئولیت جدید بعدی باشین.
  4. در مورد تسک و مسئولیت جدید (یادگیری، تغییر) حتماً خیلی خوب صحبت کنین و مشورت بخواین و تعریف دقیق رو از انتظارات و موفقیت (definition of done) داشته باشین که سوتفاهم پیش نیاد.
  5. و کلاً روتون هم بشه که هم درخواست کنین برای پذیرفتن یه مسئولیت، هم برای ارتقا کنین. چیزی که باید خیلی حواس‌تون باشه همیشه اینه که به طرف مقابل این امکان رو بدین که «نه» بتونه بگه بدون این‌که کدورت خاصی پیش بیاد. و در یک فضای امن و دوستانه، سعی کنین بیارینش توی تیم خودتون (برعلیه امور اداری/مالی!) که برای شما دفاع کنه و چونه بزنه. این امنیتِ عدمِ موفقیت در پاسخ دادن به انتظار/درخواست شما، واقعاً کلیدی‌ترین نکته در یک درخواست هست.

۵.۸.۲. لول‌های مختلف برنامه‌نویسی، از نظر کاری، چیان؟

عموماً رده‌های برنامه‌نویسی به شکل زیر هستن:

۵.۸.۲.۱. رده‌ی Junior Developer و ‌Intern (کارآموز)

  1. خصائص:
  1. زمانِ موندن توی این سطح:
    معمولاً حداکثر ۱ سال الی ۲ سال طول می‌کشه این مرحله.
  2. برای ارتقا:

۵.۸.۲.۲. رده‌ی  Software Engineer معمولی؛ یا SE1 و SE2؛ یا mid-level

  1. خصائص:
  1. قسمت‌های مختلف کد رو بلده، اما ازش انتظار طراحی سیستم جدید (architectural design) نمی‌ره.
  2. می‌تونه باگ‌های یه‌کم پیچیده‌تر رو هم فیکس کنه. و معمولاً ۵۰ تا ۸۰ درصد باگ‌های تیم رو می‌تونه بفهمه مال کجای کد هست.
  3. یه پروژه‌ی تکی رو کمتر بهش می‌دن. و با SE2 ها و سنیورها متچ می‌شه که با هم یه فیچر یا پروژه جدید رو بردارن.
  1. زمانِ موندگاری:
    می‌تونه سال‌ها توی این سطح بمونه، ولی خب معمول‌ش بین ۲ الی ۴ سال هست.
  2. برای ارتقا:
  1. توانایی مدیریت پروژه و دادن ریپورت
  2. توانایی کمک به بقیه‌ی اعضای تیم، هم متانت و شخصی و هم از نظر دانش
  3. خیلی self-sufficient (خودکفا) باشه و بیشتر برای منیجر یه asset (سرمایه) واقعی باشه تا یه liability (مسئولیت!)
  4. توانایی این‌که در نبودِ منیجر هم بتونه کلّ تیم رو بگردونه
  5. توانایی چونه زدن با تیم‌های دیگه (مثل PM و UX) که هم برنده بشه، هم کسی رو نرنجونه
  6. توانایی پیش‌نهاد تکنولوژی‌های بهتر و ارزیابی هزینه و دستاورد
  7. یادگیری دانش بیشتر از دامنه‌ی خود تیم (مثلاً بک‌اند چه‌جور کار می‌کنه، اگه تیم فرانت‌اند هست)

۵.۸.۲.۳. رده‌ی Senior Software Engineer یا سینیور

  1. خصائص
  1. کاااملاً قابل اعتماد و گاهی بادانش‌ترین فردِ تیم در زمینه‌ی خودِ کد تیم
  2. می‌تونه یه منتور فنی[c] برای جونیور و حتی SE1 باشه
  3. تمام باگ‌های تیم رو می‌تونه بفهمه. و تخمین نسبتاً خوبی هم بده[d]، چه برای پروژه‌ها و چه باگ‌ها. و می‌تونه پروژه‌های چند ماهه رو هم دلیور بکنه.
  1. زمانِ موندگاری:
    می‌تونه خیلی سال توی این سطح بمونه. و کلاً توی این سطح هم بازنشسته بشه. مگر این‌که تشنه‌ی یادگیری و مسئولیت باشه. شاید بشه گفت متوسط ۳ الی ۵ سال.
  2. برای ارتقا:
  1. توانایی طراحی و مدیریت سیستم‌هایی که بیشتر از یک تیم می‌خوان (هم بک‌اند و هم فرانت‌اند و هم دیتابیس و …)[e]
  2. توانایی مدیریت پروژه‌هایی که بیشتر از یک تیم دارن و بعضاً تا ۱۰ یا ۲۰ یا ۵۰ نفر توش درگیر هستن.
  3. هیچ ترسی از یاد گرفتن هیچ تکنولوژی‌ای نداره
  4. کاملاً قابل اعتماد هست از نظر شرکت، و یکی از ریسورس‌های اصلی حساب می‌شه که رؤسای شرکت (بسته به سایز) هم بارها اسمش رو شنیده‌ان و حاضرن برای این‌که از شرکت نره، حقوقش رو خیلی راحت بالا ببرن!

منابع بیشتر برای مطالعه:

  1. https://medium.com/javascript-scene/what-is-the-difference-between-a-junior-and-a-senior-developer-63c1594d7a98
  2. https://www.altexsoft.com/blog/business/software-engineer-qualification-levels-junior-middle-and-senior/
  3. https://artelogic.net/blog/what-is-the-difference-between-junior-middle-and-senior-developers-software-engineers 
  4. https://fullscale.io/blog/difference-junior-mid-level-senior-developers/
  5. https://devskiller.com/junior-developer/

بازم می‌گم، اینا شرکت به شرکت فرق داره! مثلاً توی Netflix همه Senior Software Engineer هستن. (چرا؟) یا مثلاً توی گوگل اینا بهشون می‌گن L3 الی L8 (این مقاله) که اون L8ها دیگه خدایان داستان هستن مثل Jeff Dean و اینا. و تازه بین شرکت‌ها هم این لول‌ها اصلاً قابل مقایسه نیست و یه‌کم کیلویی هست. مثلاً من یه زمانی، در یک ماه، از گوگل یه آفر L4 گرفتم (که شاکی شدم)، از فیس‌بوک یه L5 و آمازون یه L6! خلاصه خیلی به اینا دل نبندین و بدونین که تهش تا اندازه‌ای هم کیلویی و گوگولی مگولی هستن. :) تازه اینا واسه شرکت‌های معروف هست. توی شرکت‌های کوچیکتر که نادقیق‌تر و حسی‌تر هم هست. :)

اینم بگم که علی‌رغم این‌که شرکت‌ها، خصوصاً توی آمریکا و اخیراً، یه محدوده‌ی خیلی سفت و سخت دارن برای حقوق برابر توی یه لول (Equal pay یا اصطلاحاً Equal job, Equal pay) و اخیراً هم خیلی جدی شده (از قانون ۲۰۱۰ و با موومنت‌های اخیر برعلیه discrimination)، اما جای چونه زدن سر Signing bonus و همین‌طور Stock Options هست که اون رو توی یه سؤال دیگه می‌گم.

آها اینم بگم که حتی توی یه شرکت هم اینا توی دپارتمان‌ها/تیم‌های مختلف می‌تونه فرق داشته باشه. ینی مثلاً یهو طرف Principal Data Scientist هست ولی واقعاً از نظر سابقه و تجربه و تخصص با ‌Principal Software Engineer زمین تا آسمون فرق داره. پس خیلی درگیر تایتل ملت توی پروفایل لینکداین‌شون نشین!

۵.۸.۳. چه‌جوری از سنیور به بعد ارتقا پیدا کنیم؟

بعد از SE2 یا سنیور معمولاً داستان دو شاخه می‌شه که بهش «dual career ladder» می‌گن. این شاخه‌ها اینن:

  1. یکی اینه که مدیر/manager بشین (زیردست یا direct report داشته باشین)،
  2. و یا بخواین اصطلاحاً Individual Contributer (یا IC) بمونین و تخصص فنی رو بیشتر پیش ببرین.

the dual career ladder - management path versus individual contributor path
منبع:
https://codesubmit.io/blog/career-paths-software-engineering

شرکت به شرکت این داستان فرق داره. ولی معمولاً همینه.

۵.۸.۴. چه‌جوری مدیر (منیجر) بشم؟

برخلاف ارتقای تکنیکال،  که توش جای کسی تنگ نمی‌شه، برای مدیر/منیجر شدن، باید شرکت نیاز داشته و جا باز باشه (یا یه مدیر کنونی، دیگه نباشه؛ یا یه تیم جدید بخوان ایجاد کنن.)

برای این‌که نشون بدین آمادگی منیجر شدن رو دارین، باید حتماً خیلیییی با منیجر کنونی‌تون رابطه نزدیکی داشته باشین (و در نبودش بتونین کارهاش رو انجام بدین) و منیجر غیرمستقیم هم دوست‌تون داشته باشه و خیلی قبول‌تون داشته باشه.

خلاصه که این‌که دمِ این دو نفر رو ببینین، و هی ازشون بپرسین آیا همچین شانسی هست یا داره باز می‌شه خیلی مهمه.

نکاتی که خوبه تمرین کنین:

  1. با کسی دعوا نکنین توی شرکت! روابط حسنه داشته باشین.
  2. با منیجرهای تیم‌های دیگه هم دوست باشین. درسته که اونا از نظر سطحی شاید از شما بالاتر باشن، اما باهاشون صمیمی باشین. چون گاهی نظر اونا هم مهمه.
  3. توی شرکت به‌عنوان یه آدمِ فان و دوست‌داشتنی و کاردرست و وظیفه‌شناس و عاشقِ شرکت و اهداف و پیشرفت شرکت خودتون رو جابندازین. نمی‌گم به‌هیچ‌وجه که دروغ بگین یا فیلم بازی کنین، سعی کنین همچین آدمی باشین و Personal Brand خودتون رو جا بندازین!
  4. یه منیجر کاملاً یه نماینده از شرکت هست برای زیردست‌هاش و باید ارزش‌ها (values) شرکت رو نشون بده توی تصمیمات و رفتارش. پس حتماً سعی کنین اهداف و دیدگاه و مأموریت شرکت (اصطلاحاً mission و vision) رو درست بشناسین و بتونین هم باور کنین، هم ارائه!
  5. توی hiring و مصاحبه کردن هم داوطلبانه خودتون رو جا بدین. چون این هم خیلی مهمه.
  6. کلاً خودتون فکر کنین که اگه فردا منیجرتون یهو بره (اصطلاحاً two weeks notice بذاره روی میز رئیسش)، اون رئیس بالای باید اولین جایگزینی که به ذهنش میاد شما باشین و بس!

۵.۸.۵. چه‌جوری منیجر خوبی بشم (و بالاتر)؟

راجع به این می‌شه کلی کتاب نوشت!

من کتابی که خیلی دوست داشتم این بود: Managing Humans: Biting and Humorous Tales of a Software Engineering Manager

خیلی خلاصه بخوام در حد چند تا نکته بگم:

  1. سعی کنین که lead کنین و نه manage!
  2. بخونین، بخونین، بخونین!
  3. شنوا باشین.
  4. با آدم‌ها مهربون باشین. و ازشون بپرسین که چه‌جوری می‌تونین کمک‌شون کنین. بدترین اشتباهی که می‌تونین بکنین این هست که فکر کنین بقیه عین شمان!  (پیشنهاد آذرخش شالی : کتاب The Coaching Habit)  – واقعاً مدلی که شما دوست دارین بازخورد (فیدبک) بگیرین زمین تا آسمون با زیردست‌هاتون ممکنه متفاوت باشه، پس بپرسین.
  5. یاد بگیرین طوری انتقاد کنین که طرف له نشه، و بپذیره. گوشه‌ی رینگ قرارش ندین، و همیشه بهش یه راه فرار بدین.
  6. یاد بگیرین چه‌قدر دست‌تون باز هست (event بردن تیم) از نظر مالی خرج اضافه برای تیم.
  7. سعی کنین به اعضای تیم نزدیک بشین، اما نه نزدیک‌تر از چیزی که می‌خوان خودشون.
  8. سعی کنین از تیم‌تون خیلی خوب تعریف کنین، مخصوصاً در جاهای عمومی. طوری که کسی تهوع نگیره البته! و همیشه یادتون باشه که praise in public, criticize in private.
  9. طوری که به بقیه تیم‌ها توهین نکنین، حتماً یه سری micro-culture برای تیم تعریف کنین. یه زبان یا کار مشترک یا فعالیت مشترک. می‌تونه از کارهای ساده مثل دست به دست کردن یه سیب یا بالش توی استندآپ (بعد از کرونا که اگه/باز حضوری شد!)، تا مثلاً یه ساعتی از یه روزی در هفته همه بیان بازی کنن!
  10. یاد بگیرین تسک محول کنین به افراد تیم (خارج از تیکت‌ها و باگ‌ها) و پیگیری کنین. و توی دفترچه خودتون (من فتیشِ Moleskin Hard Cover 5"x8" دارم! و به شدت به ابزارهای الکترونیکی ترجیحش می‌دم.) پیگیری کنین توی هر ۱:۱.
  11. خیلی اوکی هست، و اتفاقاً شاید بد هم نباشه که استایل مدیریتی خودتون رو داشته باشین. همون‌طور که علی پروین و فرگوسن و مورینیو و فیروز کریمی استایل خودشون رو دارن، شما هم می‌تونین. و حتماً استایل‌تون رو با منیجر مستقیم خودتون و همین‌طور یه دوست از HR چک کنین که یهو دسته‌گل به بار نیارین.
  12. حتماً یه منتور داشته باشین (یه منیجر سنیورتر) که ازش نظر بخواین مواقعی که نمی‌دونین چی کار کنین و نیاز به همفکری دارین (منیجر مستقیم شما که دایرکتور هست، واقعاً دوست نداره نویز از شما زیاد بشنوه). حتی به اعضای تیم هم توصیه کنین منتور از تیم‌های دیگه داشته باشن.
  13. یاد بگیرین کجا micro-manage بکنین (که کار بدی هست) بدون این‌که کسی بفهمه. در بهترین حالت شما باید همه‌ی اطلاعات رو بخونین (همه کانال‌های چت رو که مهم هست، همیشه بخونین) و هیچ‌کس نفهمه. همچین مدیرِ در سایه‌ای، مخصوصاً توی لول دایرکتور و بالاتر، واقعاً عالی هست.
  14. اینو یادتون باشه که the best managers are the redundant ones – مدیر خوب مدیریه که اضافه باشه توی سیستم! (هم گوگل کنین، هم این و این.) و همیشه سعی کنین تیم‌تون خودکفا باشه – عین این مامانا که دهن ما رو صاف می‌کردن که خودمون به خودمون دیکته بگیم. :)  دقت کنین که اون روش مادری، تهش یه‌سری عقده‌ی «کم محبت دیدن» تومون جا گذاشته؛ پس این رو دریغ نکنین از تیم‌تون. ;)[f]

۵.۸.۶. چه‌جوری یه Tech Lead یا Staff Software Engineer بشم؟ و بعدش کارم رو خوب انجام بدم؟

برای شدنش که بالاتر هم گفتم. از اونجا که هم شدنش، و هم لول‌های بعدیش (معمولاً Senior Staff و بعد Principal و بعد Senior Principal و …) شبیهن و نیاز به تجربه و کنتورِ سال‌انداختن داره، یه سری پیشنهاد (‌tip) فقط می‌گم:

  1. ابداً از یادگیری هیچ تکنولوژی‌ای یا زبانی نترسین.
  2. کاملاً پایه باشین که یه آخر هفته بشینین یه پروژه توی یه زبان کاملاً جدید یاد بگیرین که آشنایی خیلی خوبی توش پیدا کنین.
  3. هیییییچ‌وقت، جونِ عزیزان‌تون، متعصب نشین روی یه تکنولوژی یا زبان یا فریم‌ورکی!
  4. هییییچ‌وقت ادعا نکنین که خیلی بلدین یه چیزی رو، یا خیلی خفن هستین. واقعاً یکی از بدترین (اگه نگم «گه‌ترین»!) ویژگی‌های یه آدم بعد از سنیور اینه که گنددماغ (اصطلاحاً a**hole) باشه! همیشه سعی کنین متواضع بمونین و اگه هم خواستین کسی رو متوجه اشتباه کنین، حتماً با یه سؤال ازش شروع کنین. حواس‌تون باشه شما با له‌کردن پایینی‌ها بالا نمی‌رین؛ بلکه با نشون دادنِ این‌که می‌تونین پایینی‌ها رو بالا بکشین (و empower کنین) به رؤساتون نشون می‌دین که استحقاق و لیاقت بالاتر رفتن هم دارین (که دست بقیه رو هم بگیرین بیان بالا بالاتر!)
  5. شنوا باشین؛ شنوا باشین؛ شنوا باشین.
  6. یاد بگیرین خیلییی بخونین و خیلی سریع بفهمین یه مقاله جدید توی medium ارزش share کردن داره یا چرت و پرت هست. سعی کنین خیلی بخونین. بازم می‌گم. توی گوگل فید یا هر جای دیگه.
  7. یاد بگیرین متعصب نباشین. و اگه چیزی خیلی خوب (too good to be true) اومد، یا شما به شعف رسیدین سر یه solution یا چیز جدید، همیشه معایب‌ش رو هم گوگل کنین.
  8. قابل اتکا باشین. اگه mood swing هم دارین یا مشکل شخصی، سعی کنین خیلی توی کارتون تبدیل به دراما نشه. و همیشه اون آدم مهربونه و قابل اتکائه باشین، که بشه شما رو به‌عنوان یه «ستون» شرکت شناخت و روتون برج ۱۰ طبقه ساخت. پس به هییییییچ وجه، حتی توی توییتر شخصی و انانیموس‌تون، هم حق ندارین و نباید پشت سر شرکت غیبت کنین و نق بزنین! چون شما دیگه جزوی از شرکت هستین.
  9. شما کسی هستین که وظیفه‌ش پیدا کردنِ جواب هست. پس اگه یه مسأله به شما رسید، فکر نکنین کس دیگه‌ای باید جواب بده! این شما هستین که باید اولاً مسأله رو بفهمین، بعد حداقل ۵ تا راه‌حل براش پیدا کنین، بعد بتونین اینا رو مقایسه کنین و به رؤسا (یا stakeholders) نشون بدین که اونا تصمیم بگیرین بر حسب کدوم (یا چه وزنی) از ۱۰ تا پارامتر ارزیابی، باید کدوم جواب انتخاب بشه.[g]
  10. این‌که حاضر بشین همیشه بدترین و غیرمحبوب‌ترین راه‌حل پیشنهادی خودتون انتخاب بشه، و با همون انگیزه و جون و دل روی همون وقت بذارین! همین یه نکته یه بلوغ (maturity) خیلی بالایی می‌طلبه که هم رسیدن بهش برای خود شما خوبه، هم به بقیه نشون می‌دین که چه‌قدر بالغ هستین!
  11. بسیار باید organized و دست به آچار توی خیلی چیزها، مثل اکسل و نوشتن داکیومنت و حتی کارهای فتوشاپ ساده باشین. و کلاً نشون بدین که اگه همه کارمندان شرکت رو، هر کدوم رو بندازن توی یه جزیره جدا، جزیره‌ی شما از همه بقیه سریع‌تر به رفاه می‌رسه و پیشرفت می‌کنه. پس بیییی‌نهایییییتتتتتت روی خودکفا بودن خودتون (self-sufficient بودن) سرمایه‌گذاری کنین. حتی یاد بگیرین چه‌جوری (بدون لود اضافه) queryهای A/B testing فیچر تیم رو توی BigQuery شرکت ران کنین. (به تیم مربوطه احترام بذارین و ازشون حتماً اجازه بگیرین قبلش!)
  12. همیشه لب‌خند بزنین. :)

۵.۸.۷. منیجر بشم یا IC بمونم؟

خب خیلی واقعاً دنیاهای اینا متفاوته. فرق‌های مختصرش رو بگم:

  1. تقویم
    مدل تقویم روزانه اینا متفاوته. اصن این مقاله‌ی Maker's Schedule, Manager's Schedule از آقای پاول گراهام خیلی معروفه. به‌عنوان یه منیجر شما قشنگ ممکنه در روز ۱۲ تا میتینگ داشته باشین و یه دفترچه به‌دست از این میتینگ به اون میتینگ برین. :) به‌عنوان یه IC شما اکثراً پای کامپیوتر با هدفن هستین و دارین کد می‌زنین!
  2. حل مسأله
    جالبی داستان اینه که اینا یه شباهتی هم دارن. من وقتی منیجر شدم خودم (و بعد دیرکتور و …) همیشه می‌گفتم: I have found that one of my core skills is "problem solving," and as a manager I am solving people's problems :D.
    واقعاً اگه عاشق حل مسئله باشین، منیجر شدن خیلی می‌تونه بامزه باشه و خوش‌تون هم بیاد. منتهی حواس‌تون باشه که debug کردن آدم‌ها خیلییییییییی سخته و گاهی اصلاً deterministic نیست! :))
  3. زندگی شخصی
    منیجرها وقتی می‌رن خونه معمولاً مغزشون آف می‌شه. ICها ولی گاهی تا پاسی از شب هم ذهن‌شون درگیر هست.
    از اون‌ور هم زمان نزدیک به تحویل پروژه، جنس اضطراب و حرص خوردن منیجر شبیه ماماناس! کاری نمی‌تونن بکنن و فقط سیب پوست می‌کنن می‌ذارن جلوی بچه‌ها که تمرکز کنن. اما به‌عنوان IC شما در خط مقدم هستین و گاهی مجبورین تا نصفه‌شب کد بزنین.
  4. یادگیری شخصی
    من به هر آدمی که تحمل منیجر شدن رو داره، اکیداً توصیه می‌کنم حداقل یک بار منیجر بشه! وااااااقعاً تجربه‌هاش توی زندگی شخصی هم خیلی تأثیر داره. من از موقعی که منیجر شدم توی زندگی شخصی (دو نفره) هم خیلی صبورتر و شنونده‌تر شدم. خیلی فهمیدم که یه چیزایی دست من نیست. خیلی تونستم اعتماد کنم و تفویض (delegate) کنم. و این برای پروگرمرهایی که معمولاً خودمحور هستن، خیلی خوبه.
  5. خفن شدن و قابل ارائه بودن
    توی این یکی IC ها شاید راحت‌تر باشه کارشون. چون وقتی شما مثلاً یه Staff بشین توی ‌فرانت‌اند مثلاً، ینی می‌تونین قشنگ توی یه کنفرانس حرف بزنین و حتی توی اصل ریپازیتوری داستان (مثلاً Vue.js) هم احتمالاً ازتون commit هست و می‌تونین حتی نشون بدین خودِ اصلِ یه فریم‌ورک چه‌جوری کار می‌کنه! خب اگه پس‌فردا بخواین برین یه شرکت جدید، این خیلی خیلی راحت‌تر قابل ارائه هست. کلی آدم هم اونجا ممکنه کلی ذوق کنن و بخوان باهاتون سلفی بگیرن که این‌قد خفن هستین!
    از اون‌ور ولی منیجر بودن، فروختنش (اصطلاحاً sell کردنش) گاهی سخت هست. چون ارزیابی‌ش هم سخت هست. و توی مصاحبه نمی‌شه خیلی راحت فهمید یه منیجر چه‌قدر کارش درسته – هزاران تا بلاگ و مقاله هست که سؤال‌های حفظیِ soft-skill برای «چگونه منیجر خوبی باشیم» توش هست. خلاصه شاید سخت‌تر باشه به‌عنوان منیجر خودتون رو ارائه بدین موقع تغییر شغل.
  6. ته ته آینده‌ی شغلی
    ته ته تهش، اینا رو می‌شه به VP of Engineering و CTO ربط داد. اینم باز مثل تایتل‌ها، کمی سلیقه‌ای هست و شرکت به شرکت فرق می‌کنه. حتی یه سری شرکت‌ها فقط یکی از اینا رو دارن. و دیگری رو حتی فحش می‌دونن! (یارو می‌گفت مگه می‌شه یه آدم همه‌ی تکنولوژی‌های شرکت رو بلد باشه که بهش بگیم CTO.)
    معمولاً VP of Engineering مثل بقیه VPها یه عالمه آدم زیر دست‌ش هست و یه ارگانیزیشن داره و هی تصمیم می‌گیره تیم‌های جدید ایجاد بشه و آدم‌ها و ریسور‌ها جابجا بشن. اما CTO یه نرد عینکی هست که خیلی ساده، با همون شلوار و تی‌شرت روز اول، یه گوشه می‌شینه و کد می‌زنه و گاهی ممکنه یه آخر هفته خودش بشینه یه پروژه‌ی شرکت رو هم بنویسه یا یه سرویس رو refactor بکنه! و اون‌قدری هم introvert هست که توی شرکت کسی بهش سلام می‌کنه، می‌ترسه نشناسندش. :)) یه‌کم دارم زیادی استریوتایپ می‌سازم، اما تهش تو همین مایه‌هاست. :)

خلاصه به این فکر کنین که ته ته عمرتون دوست دارین ۳۰۰ نفر زیردست‌تون کار بکنن، یا خیلی با تکنولوژی‌های جدید سر و کار داشته باشین و هی بخونین. این رو هم دقت‌ کنین که اگه تا حالا منیجر نبوده‌این (حداقل یک سال)، شما کاملاً الآن یه سوگیری (bias) دارین، به چیزی که توش تا حالا موفق بوده‌این! پس از الآن خیلی دنبال جواب این سؤال نباشین و اگه فرصتش شد، اوّل اون‌ور رو هم تست کنین، بعد خدا بزرگه!

یه سری پیشنهاد (tip) نهایی هم بگم که مشترک هست برای هر دو مدل خیلی سینیور بودن (هم منیجر و هم IC):

  1. حواس‌تون باشه که شما از یه جایی به بعد به‌خاطر ساعتِ کارهاتون پول نمی‌گیرین، بلکه به‌خاطر تصمیم‌ها و مسئولیت‌هاتون حقوق [بیشتر] می‌گیرین. پس سعی کنین اثبات کنین که ارزش‌ش رو دارین. :)
  2. سعی کنین اسفنج باشین و نه فنر.
  3. یاد بگیرین مدیریت بحران کنین. واقعاً این خیلی مهارت خیلی مهمی هست. چه در پیشگیری قبلش، چه در حین‌ش، چه در یادگیری‌های بعدش (اصطلاحاً retrospectiveها)
  4. یاد بگیرین اگه اشتباه کردین، عذرخواهی کنین. یاد بگیرین اگه تیم‌تون اشتباهی کرد، بازم پیش آدم‌های درست اول عذرخواهی کنین و بعد بگین چه کارهایی در راستای پیشگیری از تکرار اون اشتباه قراره انجام بدین.
  5. یاد بگیرین فرق I am sorry to see و I apologize چیه.
  6. یاد بگیرین واقعاً کِی‌ها باید از پیام مستقیم (اسلک، دایرکت) استفاده کرد، کِی‌ها ایمیل، کی‌ها جلسه، و کی‌ها یه نوت بشه برای ۱:۱ بعدی.
  7. یاد بگیرین کِی جلسه بذارین و کی نذارین. و چه‌جوری با احترام اونایی که لازم نیست برین رو نرین.
  8. ته تهش بدون این‌که به غرورتون باشه، حواس‌تون باشه که یکی از فاکتورهای تصمیم‌گیری شما همیشه باید این باشه که زندگی رو برای منیجرتون آسون کنین. همین! اینو فراموش نکنین. مخصوصاً وقتی باهاش ۱:۱ دارین و دلتون می‌خواد کلی نق بزنین و شرح حادثه کنین از رشادت‌هاتون! اون بدبخت هزارتا بدبختی داره و شما همیشه اول جلسه از منیجرتون بپرسین «خودت خوبی؟» و آخر جلسه هم بپرسین «کاری هست بتونم بکنم که به تو کمکی بکنه؟» (بسته به زبون و ادبیات بین خودتون.) این دو تا سؤال اگه از صمیم قلب‌تون بیان، خیلیییی مؤثر هستن!


۵.۸.۸. کلاً چی‌کارا بکنم سرِ کار و کلاً در راستای شارپ نگه‌داشتنِ خودم؟

توصیه‌های من اینان:

  1. سعی کنین همیشه یه تعدادی newsletter که دوست دارین (مثلاً از medium) درباره‌ی تکنولوژی‌هایی که دوست دارین بخونین. و اگه می‌بینین اینا رو نمی‌خونین، خیلی محترمانه unsubscribe کنین.
  2. سعی کنین کنفرانس‌های اصلی تکنولوژی‌هایی که کار می‌کنین رو برین.
  3. کنفرانس‌هایی که نمی‌رین رو ویدیوهاش رو بعداً ببینین، با کلّ تیم بشینین ببینین (قشنگ یه ایونت گروهی.) هیچ‌وقت سعی نکنین خفن‌تر آدمِ تیم (smartest person in the room) باشین یا بشین! چون بعدش مجبورین اتاق‌تون رو عوض کنین. و این راهِ خودخواهانه، واقعاً تهش خوب نیست.
  4. آلترناتیوهای سیستم‌هایی که دارین استفاده می‌کنین و مشکل داره رو شناسایی کنین، و با یه ارزیابی بدون جانبداری، داوطلبانه توی یه memo بنویسین. بعد در فرصت و فرمت مناسب این رو با منیجرتون به‌اشتراک بذارین و با موافقتِ اون، به اعضای دیگه بفرستین برای بازبینی.
    مشابهاً برای تصمیماتِ build vs buy تیم سعی کنین داوطلبانه آنالیز بنویسین.
  5. نسخه‌ی جدیدِ تکنولوژی جدید رو باش یه پروژه‌ی شخصی بنویسی توی ویکند اگه خواستین، و دستاوردها رو به تیم ارائه کنین.
  6. یه‌سری برنامه رو راه‌بندازین (initiate/initiative) که توش اعضایِ سنیور تیم‌ها، به تیم‌های مجاور (فرانت‌اند ↔ بک‌اند ↔ پلت‌فرم ↔ dev ops ↔ دیتا آنالیست‌ها ↔ …) بیان راجع به کدبیس خودشون و کارهاشون و پروسه‌هاشون یه وبینار/سمینار/ورک‌شاپ بدن. همچین چیزی اگه تو شرکت هست، حتماً خودتون هم توی همه‌ش شرکت کنین. و سعی کنین تیم‌های مجاور رو یاد بگیرین.
  7. توی شرکت hackathon راه بندازین؛ یا اگه هست، شرکت کنین.
  8. از مدیرتون بخواین که شما رو توی امور استخدام و مصاحبه بازی بده.
  9. توی وبلاگ انجینیرینگِ شرکت سعی کنین مقاله بنویسی. (اگه نیست، پیشنهاد بدین. برای reputation و branding و جذب talent خیلی مفیده.) و توی بلاگ شخصی‌تون هم بازنشر کنین.
  10. سعی کنین توی meet up‌های local شرکت کنین همیشه. و حتی توی شرکت host کنین (حضوری بعد کرونا.)
  11. سعی کنین اگه می‌تونین توی یه کنفرانس (حتی نه‌چندان معتبر) صحبت کنین. و براشون مقاله بنویسین از آموخته‌هاتون یا تجربیات جالب‌تون توی شرکت.

۵.۸.۹ چه کارهایی بکنم در راستای بهینه/پروداکتیوتر بودن و شارپ نگه‌داشتنِ فنی خودم؟

موارد زیر رو فردریک عزیز، همینجا توصیه کرده که من باهاشون موافق هستم:

  1. تا اندازه‌ی Cloud و SysAdmin بلد باشیم؛ که مجبور نباشیم معطل بقیه بمونیم (مثل یکی که بیاد زیرساخت پروژه‌ها رو راه بندازه و deploy رو ست‌آپ کنه.)
  2. با Git یا version controlی که ازش استفاده می‌کنیم خیلی راحت باشیم. (و قطعاً همیشه هم یه ورژن‌کنترل استفاده کنیم، حتی پرایوت برای هوم‌پیج یا پروژه‌های شخصی! و فرض کنیم هر لحظه ممکنه هارد کامپیوترمون بسوزه.)
  3. تست کردن، اعم از unit test و automated testing و … بلد باشیم و بنا به نوع پروژه ازش استفاده کنیم. تست‌های اتومات باعث می‌شن که یه باگ سریع‌تر کشف بشه. و اگه باگی بعداً پیدا شد که توسط هیچ تست‌ای کاور نمی‌شد، حتماً در کنار فیکس کردنش یه تست هم براش بنویسیم که دیگه تکرار نشه.
  4. کار کردن خیلی خیلی مسلط (من‌جمله حفظ بودن حداقل ۵۰ درصد هات‌کی های رایج) با IDE/Editor رو بلد باشیم. (برای VS Code که تقریباً داره رایج‌ترین ادیتور می‌شه در خیلی زبان‌ها، با زدن کنترل/کامند K و بعد کنترل/کامند R می‌تونین به این صفحه برسین.)

من (لوکوموتیو) هم موارد خودم رو اضافه می‌کنم:

  1. بلد باشین که یه اسکریپت به زبان bash یا حتی JavaScript/Node.js توی ترمینال بنویسین و هیچ‌موقع چند تا دستور متوالی رو هی تکرار نکنین. همچین اسکریپتی رو برای کارهای روزمره مثل بک‌آپ گرفتن یا ریپورت ساختن باید بتونین خودتون مدیریت کنین.
  2. توی Stackoverflow فعال باشین. (پاسخگو) و اگه چیزی رو سرچ می‌کنین و جوابش نیست، یا شما جواب بهتری دارین، حتماً بنویسین. هم تجربه خوبی هست و هم برای رزومه‌تون عالی خواهد بود!
  3. زبان‌های رایجِ دیگه (مثل پایتون یا جاواسکریپت) رو حتی تفریحی هم که شده یاد بگیرین.
  4. هرازگاهی، بیکار که بودین، یه مینی‌اپ تحت وب بنویسین! دقیقاً پروژه‌هایی که فکر کنین می‌تونین توی حداکثر ۱۰ الی ۱۵ ساعتِ مفید تموم‌ش کنین.
  5. سعی کنین برای آماده نگه‌داشتنِ خودتون توی leetcode هرازگاهی مساله جانبی حل کنین.
  6. سرِ کار هرازگاهی فضولی کنین توی باگ‌های تیم‌های دیگه و باهاشون کانکشن بزنین که بهتون یه توضیحی بدن. یا مثلاً از بچه‌های تیم‌های خاص (مثل اندروید به‌فرض) بپرسین که برای یادگیری دانش تیم اونا (شخصی) می‌تونن بهتون کمک کنن یا منتور باشن؟ :)

۶. ایران هستم.

۶.۱. ایران هستم. دانشجو هستم.

۶.۱.۱. چی کار کنم حین تحصیل؟ چی کار کنم که راحت جاب بگیرم؟

والله من از بازار کار ایران خبر ندارم. منتهی چیزی که می‌دونم اینه که اگه توی کار خودتون خبره باشین و رزومه/پورتفولیوی خوبی داشته باشین، قطعاً شانس بهتری دارین!

مهارت‌ها و توصیه‌های من:

  1. مهارت‌های بخش «۴. توصیه‌های متداول من» رو بخونین.
  2. اگه می‌تونین حتماً حتماً حتماً تا جایی که می‌تونین کارآموزی بگیرین! کاراموزی می‌تونه تجربه‌ی خیلی خوبه باشه.
  3. روی زبان انگلیسی‌تون کار بکنین. کلاً اگه خواستین جاب ریموت بگیرین بعداً خیلی خوبه.
  4. سعی کنین فعالیت‌های جانبی هم یاد بگیرین. مخصوصاً هنر یا ساز یا ورزش. یه‌چیزی که تهش بلد باشین حالتون رو خودتون خوب کنین!
  5. درس‌های عمومی ممکنه مزخرف باشن، اما بهتون پشتکار و «خوردن قورباغه» یاد می‌دن! این مقاله از Joel Spolsky که مال سال ۲۰۰۵ هست هیچ‌وقت قدیمی نمی‌شه – توش همچین چیزی راجع به «برداشتن درس تاریخ اروپا در لیسانس کامپیوتر می‌گه».
  6. درس‌هایی که دوست دارین یا به‌نظرتون کیفیت‌ش خوب نیست یا می‌خواین مسلط بشین رو، به پیشنهاد هادی مشیدی: با استفاده از منابع دانشگاه‌های معتبر خارجی مثل MIT و CMU و Stanford بخونید و سعی کنید حتما تمرین‌ها و پروژه‌هاشون رو هم انجام بدید. بخش اصلی یادگیری معمولا موقع انجام دادن پروژه است. (درس‌های پیشنهادی هادی: دیتابیس CMU، سیستم عامل MIT، سیستم‌های توزیع‌شده‌ی MIT).
  7. سعی کنین دوست‌های خوب و صمیمی پیدا کنین. و دوستی‌هاتون رو درست مدیریت کنین. و الکی کسی رو پرت نکنین از دایره بیرون. بعد از درس، حتی یه کانکشن خوب ممکنه باعث شه مسیر زندگی‌تون عوض بشه.
  8. مهاجرت خیلی چیز سختیه اما دو تا بخش داره: ۱) بخواین، ۲) زمین و زمان رو به هم بدوزین که بشه! حتماً قبلش حسابی تحقیق کنین که آیا برای شما مناسب هست یا نه. و اگه بود، زمین و زمان رو به هم بدوزین.
  9. اگه بتونین توی لیسانس یه پیپر یا حتی ریپورت هم بدین چیز خوبیه به نسبت! اگه آخر درس به LoR (توصیه‌نامه) استاد احتیاج دارین، از خیلی قبل سرمایه‌گذاری کنین.
  10. سعی کنین حتماً حل تمرین (TA) بشین. خیلی تجربه خوبیه. خیلی. هم مسئولیت‌پذیری، هم مدیریت رابطه دوستانه با بچه‌ها، هم یاد دادن، هم …

۶.۱.۲. من بک‌گراندم مهندسی کامپیوتر نبوده و خود‌آموز یاد گرفته‌م، الان هی ریجکت می‌شم چرا؟ (ایران)

به‌نظر نکات ۶.۱.۱ و ۵.۶ (رزومه و لینکداین خوب) رو که بخون.

بعد به این توجه کن که برای تو «فقط یه دونه از تو، توی کلّ دنیا هست»؛ اما برای اون کارفرما، «تو» یکی از بین صدها متقاضی هست. اصلاً منظورم نیست که روحیه‌ت رو بباز. بلکه منظورم این هست که واقع‌بین باش، رقبات رو بشناس و سعی کن ازشون جلو بزنی.

در واقع اون بازی‌ای که تو الآن باید توش برنده بشی این هست که نشون بدی، و ثابت کنی، که تو از هم‌دانشگاهیت که همزمان با تو رفته ۴ سال کامپیوتر خونده، استحقاق بیشتری داری برای گرفتن این شغل. و برای این‌کار باید حتماً حداقل یه ویترین خیلی خوب ردیف کنی، که می‌شه همون هوم‌پیج + پورتفولیو + گیت‌هاب (پروژه‌های شخصی، عادت و انگیزه‌ی یادگیری شخصی) + لینکداین و رزومه مرتب. و این مرحله از بهینه‌سازی (optimization) رو اون‌قدر هی بهبود بدی و بدی و بدی و بدی، که بتونی حداقل برای مصاحبه فنی دعوت بشی.

وقتی به مصاحبه فنی رسیدی، یعنی ویترین خوبه. حالا باید کم‌کم روی مراحل بعدی یعنی حل مسأله و پاس‌کردن مصاحبه‌ها هست تمرکز کنی!

پ.ن. کلاً شانس موفقیت در cold apply (همین فقط رزومه رو تو سایت ارسال کنی) معمولاً خیلی کمتر هست. اگه بتونی کسایی که یه نسبتی باهات دارن (مثلاً از همون دانشگاه‌ت هستن؛ یا آشنای مشترک داری توی لینکداین) از اون شرکت رو پیدا کنی و خیلی دوستانه و محترمانه ازشون بخوای که تو رو ارجاع بدن به‌صورت داخلی، این شاید خیلی شانس بیشتری داشته باشه.

 ۶.۱.۳. ارشد دارم می‌خونم/تموم‌شده و می‌خوام اپلای کنم آمریکا

والله من توی بازارِ اپلای کمتر هستم، اما می‌دونم دوستان دیگه مثل ussamamad توی توییتر خیلی فعال هستن و کانال تلگرام هم دارن (البته برای پست‌داک بیشتر) و یه thread خیلی خوب هم دارن:

https://twitter.com/ussamamad/status/1344685596149690368 

و از قدیم‌الایام هم من این اپلای ابرود رو یادم هست: http://www.applyabroad.org/forum/ 

نظر شخصیم هم اینه که آره اپلای بکنین. :)


۶.۲. ایران هستم. شاغل در برنامه‌نویسی هستم.

۶.۳. ایران هستم. غیره

۶.۳.۱. می‌تونی کمک کنی این ایده رو با هم بزنیم؟

شرمنده، ولی نه. من وقت واسه پروژه جدید ندارم و انجام پروژه با ایران هم برام دشواری‌های خاص خودش رو داره.

۶.۳.۲. می‌تونی کمک کنی من این کدم رو درست کنم؟

اگه سؤالی داشتین که جوابش توی گوگل و stackoverflow نبود، بعیده من بتونم کمک کنم. باز حالا بپرسین، شاید تونستم بگم.

۶.۳.۳. من درسم تموم شده و شاغل در چیزی جز برنامه‌نویسی هستم و می‌خوام فلان تکنولوژی (ماشین لرنینگ، هوش مصنوعی، غیره) رو یاد بگیرم. مسیرش چیه؟

والله هدف یادگیری‌تون رو اول باید مشخص کنین. اینا چیزای خیلی بامزه‌ای (مثل آشپزی) نیست که یاد بگیرین و فردا راحت استفاده‌شون کنین الزاماً. مخصوصاً اگه تخصص برنامه‌نویسی هم ندارین.

برای یادگیری هم من والله منبع خیلی خاصی بلد نیستم. بهتون پیشنهاد می‌کنم حتماً یه توییت کنین و من رو هم منشن کنین تا منابعی که دوستان معرفی می‌کنن رو من هم اینجا بذارم. :)

۶.۳.۴. برنامه‌نویسی تا حدی بلدم. می‌خوام کسب و کار خودم رو بزنم تو ایران. از کجا شروع کنم؟

والله من خیلی از بازار ایران اطلاع ندارم. و خب بالطبع توصیه می‌کنم یه مدت خاکِ کوزه بخورین (برای بقیه کار کنین) تا خم و چم کار و پروژه‌ گرفتن و قیمت و اینا دست‌تون بیاد، بعد خودتون بیزینسِ خودتون رو بزنین اصطلاحاً.

مضافاً، به‌نظرم می‌تونین از ساخت هوم‌پیج‌های شخصی و وبسایت‌های شخصی هم شروع کنین. یا حتی اپ بامزه و کاربردی اندروید هم بسازین و توی کافه‌بازار و امثالهم بذارین و ازش پول در بیارین.

و این‌که توی سایت‌هایی که فریلنسرهای ایرانی توش ثبت‌نام می‌کنن هم به‌عنوان developer مستقل شاید بتونین پروژه بگیرین. دقت کنین که ساختنِ یه نتورک خوب و این‌که اسم‌تون بیافته روی زبون‌ها برای هر بیزینسی خوبه. و کلاً مارکتینگ (حتی آموزش نکات برنامه‌نویسی توی اینستاگرم مثلاً!) می‌تونه برای هر بیزینسی تبلیغات خوب و مفیدی به حساب بیاد. :)


۶.۴. برنامه‌نویس هستم. ایران هستم و موندگار!

۶.۴.۱. من دارم فلان شرکت کار می‌کنم و تکنولوژی‌هاش قدیمیه چی‌کار کنم؟

… می‌نویسم بعداً. برم بخوابم الان! (۱۹ ژانویه ۱ بامداده!)


۶.۵. ایران هستم و می‌خوام مهاجرت کنم

۶.۵.۱. تو ایران دارم کار می‌کنم. چه‌جوری می‌تونم بیام یه شرکت آمریکایی کار کنم؟

والله اصلاً کار راحتی نیست!

اولاً که شما باید اون‌قدری توی کار خودتون خبره باشین که یه شرکت ترجیح بده هزینه کنه و شما رو بیاره، تو نیروی دم دست خودشون رو، که شاید بیکار باشه. یا حتی اگه بخواد از خارج از آمریکا نیرو بیاره، از بین همه‌ی میلیون‌ها نفری که می‌خوان بیان، شما رو انتخاب کنه و نه بقیه رو.

دوماً باید دولت این اجازه رو به‌شما بده. و برای این قضیه، اگه بخواین مستقیم از خارج خاک آمریکا بیاین به ویزای H1-B احتیاج دارین برای کار کردن در آمریکا. خودِ گرفتن این ویزا حالا یه پروسه‌ی عظیمی هست که نیاز به یه اسپانسر داره و تهش هم یه لاتاری هست الان (از تقریباً ۷ سال پیش) و هر سال برگزار می‌شه و کلی دنگ و فنگ داره.

خلاصه اگه اینا رو نمی‌دونستین و از تمام مسیر فقط اون‌ قسمت «دلم می‌خواد» رو بیشتر روش سرمایه‌گذاری کرده بودین و نه حتی یه سرچ گوگل، احتمال موفقیت‌تون خیلی کم هست. اما در سایر قسمت‌های این داکیومنت فکر کنم کلی اشاره کرده‌م که این شانس رو چه‌جوری می‌تونین ارتقا بدین. :)

۶.۵.۲. مهاجرت تحصیلی راحت‌تر هست یا کاری؟

والله بستگی به کشورش داره. مثلاً برای کشورهایی مثل استرالیا یا کانادا می‌شه skilled worker اپلای کرد گویا؛ اما برای آمریکا خیلی خیلی سخت هست که بخواین با ویزای کاری یه‌راست بیاین.

از اون‌ور اگه تحصیلی هم اپلای کنین، هم هزینه و کیفیت زندگی شاید سخت باشه؛ هم باید اصن ثابت کنین (حداقل آمریکا) که قصدتون بیشتر تحصیل هست تا مهاجرت.

این فروم اپلای ابرود http://www.applyabroad.org/forum هم چیز خیلی خوبی برای مهاجرت هست.

یه نکته دیگه هم در زمینه‌ی اپلای کاری اینه که احتمالاً هزاران نفر از صدها کشور دیگه (جز ایران) هم می‌خوان برن اون کشور مقصد برای کار. و خوبه که با خودتون فکر کنین که چرا اون شرکت مقصد (مثلاً تو کانادا) باید شما رو از ایران مستقیم بخواد. آیا واقعاً بین صدها هزار نفر دیگه، اون‌قدر تاپ هستین؟

من ریسورس‌های خوب مهاجرت تحصیلی رو هم که پیدا کنم اینجا می‌ذارم:

  1. https://twitter.com/dordme/status/1430244147399593987 رشتوی ۱۳گانه در زمینه اپلای به آمریکا

۶.۵.۳. می‌خوام تازه برنامه‌نویسی/تکنولوژی یاد بگیرم که باش مهاجرت کنم. راهی پیشنهاد داری؟

والله دوباره برمی‌گردیم به سیستم عرضه/تقاضای بالا. این‌که این‌بار شاید میلیون‌ها نفر دوست دارن همین مسیر رو برن. و شما تازه در ابتدای مسیر هستین. مسیر طولانی‌ای خواهد بود و این‌که بخواین تنها با یک هدف دوردست از همینجا شروع کنین، شاید خیلی خسته‌کننده باشه.

پیشنهاد من اینه که واقعاً اینجا یه divide and conquer بزنین. و داستانِ برنامه‌نویسی یادگرفتن و داستانِ مهاجرت رو جدا کنین و جدا دنبال کنین.

۶.۵.۴. برنامه‌نویسی بلدم، می‌خوام مهاجرت کنم، چیا مهمه تو رزومه؟

مجدداً مهاجرت کاری شاید یه‌مقدار زیادی سخت باشه به‌خاطر سیستم عرضه و تقاضا، و همچنین پاسپورت ایرانی. و خب باید تلاش کنین که نه تنها بین رقبای خودتون (هزاران نفری که تو شرایط مشابه شما فقط توی ایران هستن؛ چه برسه به سایر کشورها) برتر باشین، بلکه نیاز دارین که نشون بدین (هم به شرکت مقصد، هم به کشور مقصد) که شما استحقاق بیشتری دارین از خودِ نیروهای انسانیِ برنامه‌نویس/فارغ‌التحصیل همون کشور.

برای اثبات این قضیه هم، معمولاً نیاز به یه portfolio خوب دارین. چیزی بیشتر از یه رزومه که توش یه مشت keyword بخواد ردیف بشه. و یه سری پروژه‌ی شخصی یا گزارش سابقه‌ی کاری می‌تونه خیلی کمک بکنه.

در همین راستا، حتی نوشتن مقاله یا گزارش به زبان کشور مقصد (انشالله انگلیسی) هم می‌تونه خوب باشه. اما خب می‌گم، به نظر من و با دانشِ من، کلاً به‌خاطر سیستم عرضه و تقاضا، این مسیر خیلی دشوار خواهد بود.

۶.۵.۵ زبان (انگلیسی) از کجا یاد بگیرم؟

من خودم به‌شخصه تقریباً هیچ‌وقت کلاس زبان نرفتم و خودم یاد گرفته‌م. گاهی هم پشیمون هستم، گاهی نه. کلاً از یادگرفتن سرِ یک ساعت خاص (که به‌خاطر یک ساعت، لازم باشه ۲ ساعت اضافه رفت و آمد کنم و ذهنم هم عوض بشه) برام سخت بود. و همچنین یادگیری گروهی که سرعت تدریس و اینا برای چندین نفر آدم یکسان بود. خیلی هم پول و انگیزه‌ی معلم خصوصی نداشته‌م.

برای من اینا خیلی کار کرد: (لینک توییت)

  1. خوندن و ترجمه‌ی لیریکس آهنگ‌های انگلیسی که خیلی دوست داشتم.
  2. فیلم با زیرنویس انگلیسی و متوقف کردن برای هر کلمه‌ی جدید.
  3. گوگل کردن گرامر دو مورد فوق، اگه براتون عجیبه.
  4. دیکشنری هم تو گوگل، همیشه انگلیسیش رو بخونین و هرگز فارسی نه! (مثال: honeydew)

اگه دوستی هم دارین که زبانش خوب هست، سعی کنین ازش بخواین که اجازه بده باهاش انگلیسی صحبت/چت کنین و ازش بخواین که حتماً شما رو (دو نفره، نه جلوی جمع) تصحیح کنه.

راستی گویا توی ایران یه سری کلاب و میتینگ English Talk و English Speaking هم هست. اینا رو هم جدی بگیرین.

الکی هم به‌نظرم عضو این کانال‌هایی که روزی یه اصطلاح بسیار منسوخ و خفن رو با لهجه‌ی غلیظ پرت می‌کنن، نشین. وااااقعاً خیلی مهم هست که شما بتونین یه مفهوم رو با گرامر صحیح و حتی کلمات ساده برسونین، تا این‌که یه ضرب‌المثلی که سال ۱۸۲۳ در یه داهاتی توی تگزاس بین گاوچرون‌های هفت‌تیرکش رایج بوده، با لهجه غلیظ بگین.

پ.ن. یکی از افعالی که من رو اذیت می‌کنه (اصطلاحاً pet peeve هست!) اینه که گفته بشه «تافلم رو بگیریم» یا «آی‌التس‌م رو بگیرم.» اینا آزمون‌هایی هست که نمره داره و خیلی معنا نداره که «بگیرین»شون. مقصود اغلب این هست که به یه حدنصاب لازم که برای یه جایی یا دانشگاهی لازم هست برسه. منتهی بدون گفتنِ اون حدنصاب، این «گرفتن» بی‌معنی هست.

۶.۵.۶. آیا می‌شه بدون مدرک لیسانس هم اپلای کرد؟

برای تحصیلی خب شاید بتونین. مخصوصاً دانشگاه خصوصی و از طریق وکیل و اینا.

برای کاری ولی، باید خیلی خیلی کارتون خوب باشه به‌نظرم. مثل این بنده‌خدا (پویا پارسا | @_pi0_) که اگه اشتباه نکنم با فوق‌دیپلم (یا لیسانس رها شده؟) که من اخیراً دیدم رفته هلند. و خب این یکی از اعضای اصلیِ فریم‌ورک nuxt.js هست که من از اونجا پیداش کردم. دقت کنیم که اعضای اصلی (یکی از ۶ نفر اصلی) که یکی از ۳ فریم‌ورک اصلی Vue.js (که خودش یکی از ۳ فریم‌ورک رایج در دنیای فرانت‌اند هست) رو داره مدیریت می‌کنه. ینی با یه تعریفِ خیلی ساده‌سازی شده (مدل مامان عروس که داره سر مهریه چونه می‌زنه!) بخوام بگم، طرفاً یکی از تاپ ۳×۳×۶ = ۳۶ نفر شاخِ دنیای فرانت‌اند هست از یه جهاتی.

خلاصه باید خیلی خیلی خفن باشین و از بیرون بشناسن‌تون که بشه به‌نظرم. اونم خودش کلی سختی خواهد داشت البته!

واسه همین همیشه سعی کنین یه نیم‌نگاهی هم داشته باشین که رتبه‌ی شما بین همه‌ی سایر متقاضی‌ها چند هست و چرا باید شما رو انتخاب کنن.  ناامید نشین، اما واقع‌بین بمونین. :)

۶.۵.۷. منابع خاصی هست که بتونم دنبال کنم برای مهاجرت؟

اگه منابعی خودتون می‌دونین بگین (کامنت بذارین) تا من اضافه کنم اینجا. تا الآن:

  1. کانال تلگرام Tech immigrants(با تشکر از هادی عزیز): https://t.me/TwitterImmigrant و یوتیوب‌شون در https://www.youtube.com/c/TechImmigrants 
  2. کانال تلگرام «پیشنهادهای یک استاد دانشگاه ساکن آمریکا برای اپلای» توسط ussamamad: https://t.me/safarname7 

۷. خارج از ایران هستم.

۷.۱. خارج از ایران هستم. دانشجو هستم.

۷.۱.۱. چه توصیه‌ای برای طول تحصیل دارین؟

فرض من اینه که هدف‌تون این هست تهش برین توی صنعت (۷.۱.۵ برای مقایسه صنعت و دانشگاه رو ببینین.)

توصیه‌های من اینان:

  1. کارآموزی تا می‌تونین بگیرین.
    توی کارآموزی هم به پول‌ش و جاش و آب و هوا و خونه پیدا کردن و خودِ پروژه (و به شوخی یا جدی، بلانسبت، حتی یادگیری) و این چیزا هم فکر نکنین. کارآموزی فقط یه هدف داره: این‌که نشون بدین که تونسته‌این برین یه شرکت معتبر و اونجا مثل بچه آدم کار کنین و بعدش بیاین زندگی‌تون رو ادامه بدین! و یه بار از یه فیلترِ یه شرکت رد شده‌این. و آدمِ عجیب غریبی نیستین!
    این وسط اسم و رسم اون شرکت (مثل گوگل) خیلی هم مهمه. و اگه مثلاً دو تا کارآموزی از دو تا شرکت تاپ (مثل گوگل و فیس‌بوک) داشته باشین دیگه خیلی رزومه‌تون «هات» خواهد بود!
  2.  پروژه‌های شخصی رو فراموش نکنین. و حتماً در طی سالیان برای خودتون به‌تدریج رزومه بسازین. اگه پروژه‌های شخصی کاربردی یا بازی یا اپپ باشن هم که چه بهتر – باش می‌تونین معروف هم بشین یا حتی پول هم در بیارین. :)
  3. بپذیرین که درسی که می‌خونین احتمالاً بین ۸۰ تا ۱۰۰ درصدش ممکنه هیچ ربطی به کارتون نداشته باشه؛ مخصوصاً اگه برای Software Eng دارین اپلای می‌کنین و نه مثلاً Research Scientist. و با این واقعیت کنار بیاین که تهش تو ذوق‌تون نخوره.
  4. حتماً نتورک قوی‌ای داشته باشین. و ایونت‌های مختلف رو شرکت کنین. چه مال شرکت‌ها، چه گروه‌های بامزه‌ی محلی راجع به یه تکنولوژی. نتورک داشتن فقط اون عددِ تعدادِ آشناهای لینکداین نیست. بلکه این هست که واقعاً همین فردا به چند نفر می‌تونین رو بندازین و رزومه بفرستین.

۷.۱.۲. من صفرکیلومتر (تازه فارغ‌التحصیل) هستم. چه‌جوری جاب بگیرم؟

اگه توی دوره تحصیل یه اینترنشیپ/کارآموزی رفته باشین که احتمال زیادی داره اونجا بگیرن‌تون. نکات ۶.۱.۱ هم برات طول تحصیل خوب بوده اگه انجام دادین.

توصیه‌های من:

  1. رزومه و لینکداین مرتب. رزومه رو حتماً به دوست و آشناها بدین که نظر بدن. مخصوصاً تو گوگل‌داک که مستقیم suggestion بذارن. و پذیرنده‌ی نظرات باشین. (من هم معمولاً دوست دارم نظر بدم. البته این روزها خیلیییی سرم با این قضیه شلوغه.)
    حتی متن پروفایل لینکداین رو هم می‌تونین توی گوگل داک بذارین که ملت راحت نظر بدن. و حتی یه کاور لتر هم. (بین علما سرش اختلاف هست؛ من دوست دارم.)
    توی ۵.۶. هم راجع به اینا توش توضیح داده‌م.
  2. ریفرال داشتن خوبه. اما خب برای شروع/کارآموزی، گاهی خیلی هم مؤثر نیست ریفرال؛ پس دل نبند.
  3. از برنامه‌های خود دانشگاه حداکثر استفاده رو بکن. مخصوصاً این job fair ها و postingهای داخلی
  4. با فارغ‌التحصیل‌های دانشگاه (ایرانی) که سال بالایی هستن و الان تو صنعت هستن یه کانکشن بزن و از اونا نظر بخواه. اونا احتمالاً راه و چاه رو بهتر می‌شناسن و می‌تونن کمک بیشتری بکنن. اینجا باید قشنگ به کلی آدم توی لینکداین و … رو بندازی و سعی کن راحت باشی با این کار و همین‌طور با ریجکت شدن‌های بعدش.
  5. کلاً داشتنِ یه portfolio خیلی مهمه. مثل هوم‌پیج شخصی و لیست پروژه‌ها و گیت‌هاب و اینا.
  6. حتماً ایونت‌های مختلف رو شرکت کنین و با ملت آشنا بشین. و دست به آچار باشین (باید بتونین ظرف ۲۰ ثانیه یه ایمیل با عنوان و متن تشکر و روزمه‌ی پیوست شده) به کسی که توی آسانسور دیده‌این بفرستین. (حتی می‌تونین این رو توی درفت آماده داشته باشین و فقط اسم و ایمیل طرف رو بذارین توش.)
  7. دقت کنین که برای جاب اوّل، خیلی از کارفرماها نگران این نیستن که شما «دانش» کمی دارین. بلکه نگران این هستن که شما اوّل آدم خوبی هستین (فان، قابل تکلم، محترم، صبور و متین) و بعد این‌که هوش و یادگیری دارین. پس به‌جای مثل اسب/لوکوتیو خر زدن و جزوه‌ی ۵۰۰ صفحه‌ایِ تکنولوژی حفظ کردن، خودتون رو در محیط قرار بدین (اصطلاحاً put yourself out there!) و از محیط یاد بگیرین.
    به‌عبارتی به‌جای این‌که بعد از چیزایی که گفته شد (مثل رزومه و لینکداین و هوم‌پیج) بخواین همچنان برای کیفیت خودتون over-optimize بکنین (مثلاً از ۶۱ درصد بشین ۶۲ درصد خوب)، روی شانسِ دیده‌شدن سرمایه‌گذاری کنین (از دیده‌شدن توسط ۱۰ نفر، بشین ۱۰۰ نفر). این‌جوری فرمولِ کیفیت×تعدادِ دیده‌شدن براتون بهتر بهینه می‌شه!

۷.۱.۳. چه استراتژی‌ای برای اپلای کردن برای کار درنظر بگیرم؟

کلاً خیلی خوبه که شما اوّل و توی یه بازه‌ی کوتاه همه‌ی پیش‌نیازها رو آماده‌ی آماده‌ی آماده بکنین (مثل رزومه و لینکداین کاملاً حاضر + هوم‌پیج + …). بعدش بزنین تو کار اپلای کردن حسابی!  و روی این هم حساب کنین که شاید لازم باشه ۲۰۰ تا جا اپلای کنین تا اولین اینترویو رو بگیرین.

امیدتون رو از دست ندین، اما تا می‌تونین اپلای کنین و دل‌به‌کار بدین حسابی! اگه خسته هستین یه استراحت به‌خودتون بدین، اما بعدش دوباره شروع کنین.

یه برنامه‌‌ی روتین روزانه هم بذارین که مثلاً هر روز از ۹ تا ۱۰ جواب ایمیل‌ها؛ ۱۰ تا ۱۲ اپلای توی سایت‌ها؛ ۱۲ تا ۱ ناهار و نماز؛ ۱ تا ۳ صحبت تلفنی با ریکروترها و لینکداین بازی احیاناً؛ ۳ تا ۵ دوباره اپلای؛ ۵ تا ۷ یه‌کم کد زدن و یادگیری و تمرین leetcode مثلاً. بعدش هم ورزش و شام. و آخر شب هم ۲ ساعت اپلای.

سعی کنین روزی بین ۱۰ الی ۲۰ جا، با دل و جون اپلای کنین. دل و جون هم یعنی قشنگ برین و جستجو کنین. یا احیاناً اون شرکت رو توی لینکداین سرچ کنین و افراد توش رو پیدا کنین و ببینین با کدوم ممکنه چه نسبتی داشته باشین (مثلاً هم‌دانشگاهی؛ یا دوست درجه ۲؛ یا هم‌دانشگاهی ایران) و حتماً بهش مؤدبانه یه سلام بکنین و بگین که قصد دارین اپلای کنین برای این شرکت و آیا توصیه یا راهنمایی خاصی داره؟ حتی اگه می‌تونین به ریکروتر شرکت هم توی لینکداین یه پیام بدین که شاید اون پیشنهادی داشته باشه.

این وسط جونِ هر کی دوست دارین، egoی خودتون رو هم یه چند هفته/ماه خاموش کنین. و واقعاً «رو» بندازین به زمین و زمان. ممکنه حالا چند تا پیشنهاد بی‌شرمانه هم در بدترین حالت دریافت کنین (متأسفانه)، اما به ریسک‌ش می‌ارزه. کسی تهش به‌تون مدال افتخار نمی‌ده که وای چه‌قدر شیک جاب اوّل‌ت رو گرفتی و زیر بار منت کسی نرفتی! آقا زندگی سخته. پس شما هم درّنده باشین برای بقا. من نمی‌گم personal valueهای خودتون رو زیر پا بذارین. اما از این overthink کردن‌هایِ «وای، تو ذهنش نکنه فکر کنه من فلان…» نکنین. سعی کنین از همین حالا یاد بگیرین چه‌جوری هم friendly و هم professional باشین همزمان، و نیاز‌تون رو بپرسین!

نهایتاً این‌که از ملت فیدبک هم گدایی کنین. مثلاً به ریکروتر یا آشنای لینکداین بگین که به‌نظرش کجای رزومه یا لینکداین رو می‌شه کار کرد که شانس بیشتری داشته باشین. یا احیاناً پروژه خاصی یا ایده خاصی داره که روش کار کنین؟

۷.۱.۴. من هی رزومه دارم می‌فرستم و ریجکت می‌شم؟ چرا؟ :((

به این فکر کنین که اون کسی که اون‌ورِ خط نشسته، بعد از یه اسکن توسط یه ATS (حقیقتی تلخ، راهنماها: یک و دو، این سایت هم شاید خوب باشه،‌ نمی‌دونم.)، چرا باید از بینِ هزاران اپلیکنت/متقاضی، شما رو انتخاب کنه.

مثلاً:

  1. حمایت دولت (خارج): معمولاً اگه غیرخارجی بگیرن شرکت‌های خارجی، هم حس بهتری دارن و هم هزینه کمتر و هم حمایت دولت. و حتی گاهی سقف دارن که چند تا لژیونر می‌تونن بگیرن. :)
  2. ویزا (خارج): اینم دوباره پاسپورتِ ایرانی احتمالاً توش برگ برنده نیست!
  3. رشته مرتبط: مثلاً اگه شما مدرک تحصیلیِ نرم‌افزار ندارین، بالطبع شما هم جای اون مدیر استخدام (hiring manager) باشین، کسی که در همین کامپیوتر تحصیل کرده رو ترجیح می‌دین به برق و ریاضی و مکانیک و مدیریت و …، درسته؟
  4. سابقه‌ی کاری مرتبط
  5. پورتفولیوی مرتبط و تمیز

خلاصه تهش حواست باشه که «تو فقط برای خودت تنهای «تو»ی دنیا هستی!» برای بقیه‌ی آدم‌ها تو هم یکی مثل بقیه هستی. پس سعی کن خودت رو براشون متمایز کنی.

من کاملاً موافقم که باید از یه‌جایی شروع کرد. اما نظرم اینه که در عین حال خوبه که «واقع‌بین» باشیم و حواسمون باشه که «wanting» تنها ۵ درصد اوّلِ رسیدن به یه چیز هست، و احتمالاً هزاران یا میلیون‌ها نفر دیگه هم همین گام اوّل رو دارن میان همزمان. پس اون ۹۵ درصد بقیه (تلاش، داشتنِ چیز واقعی برای عرضه، پرزنت کردن مناسب) هم مهم هست و گاهی باید روش خیلی کار کرد.

۷.۱.۴.۱. سابقه کار توی ایران در اپلای کاری در خارج

این قضیه ۳ تا بُعد داره:

  1. از نظر اقامتی و ویزا و بُعدهای قانونی حساب بشه
    این نسبتاً راحت‌تر و شدنی هست. مخصوصاً اگه اون شرکت وجود خارجی داشته و یه اسم و ایمیل (با ایمیل شرکت) وجود داشته باشه که جواب بده. مضافاً شما می‌تونین یه affidavit هم بنویسین و قسم بخورین به جونِ خودتون که دارین راس می‌گین! :)
  2. برای پیش‌نیازهای شرکت جزو اون بند «حداقل ۳ سال سابقه کار» حساب بشه
    این بستگی داره واقعاً. ببین اون recruiter مربوطه (یا اصطلاحاً اینجا چون اولش هست، می‌شه sourcer مربوطه، که دنبال lead اپلیکنت می‌گرده) دنبال این هست که آدم جور کنه. و خب در راستای منفعت شخصی خودش هست که بخواد تو رو هم حساب بکنه و توی آمار روزانه‌ش (که مثلاً باید روزی ۱۰۰ تا ماهی بگیره) حساب بکنه. منتهی اگه منیجری که داره باش کار می‌کنه بهش دستور داده باشه که «۳ سال سابقه کار در شرکت معتبر تو همین قاره»، خب طرف نمی‌تونه حساب بکنه.
  3. برای خود منیجر و از نفر فنی جزو سابقه حساب بشه
    این رو واقعاً طرف احتمال خیلی زیاد، با یه‌ضریب خیلی کم‌تر حساب می‌کنه. مخصوصاً اگه اصلاً مدل داستان و جاب دسکریپشن تا حدی فرق هم بکنه.
    کلاً هم توصیه‌ی من اینه که موقع مصاحبه‌ها، خیلی راجع به این تیکه زیاده‌گویی و قصه‌ی حسین کرد شبستری و رفرنس‌های دائم در نیار. و بذار اگه طرف خواست و پرسید، اون‌وقت مختصر جواب بده. چون خود طرف توی یه دوگانگی (که توی پایین توی ۷.۱.۴.۱.۱. توضیح داده‌م) هست و نمی‌خواد تو بیشتر گیج‌ش کنی.

(اینا البته بسته به رشته هم فرق می‌کنه. اما چیزایی که نوشته‌ام بیشتر برای مهندسی کامپیوتر و برنامه‌نویسی هست و فک کنم توی خیلی رشته‌های دیگه هم صادق باشه.)

یه سری نکات دیگه:

  1. تمیز و مختصر بنویس. و اگه وبسایت هم دارن انشالله قید کن.
  2. صادقانه بنویس. مثلاً بگو که سایز شرکت یا تیم چه‌قدر بوده، به‌جای غلو کردن، حالا که سر و ته نداره و قابل پیگیری نیست زیاد.
  3. خیلی روش مانور نده توی رزومه، نسبت به دستاوردهای این‌ورِ آب. ینی شاید یه اینترنشیپ این‌ور آب خیلی بهتر باشه تا یه سابقه اون‌ور آبی.
  4. اگه سابقه مدیریت داری اون‌ور، و اینجا داری برای پوزیشن پایین‌تر اپلای می‌کنی، شاید بد نباشه که اون تیکه رو ننویسی اصن. (ادامه رو بخون.)
  5. کپی از ژنرال الکاتراز در این توییت: اگه کارت توی ایران می‌تونه نگرانی‌های تحریمی/نظامی داشته باشه هم توجه ویژه داشته باش. (من حرف بیشتری نمی‌زنم. :) )
۷.۱.۴.۱.۱. تاثیر منفیِ سابقه کار توی ایران در اپلای کاری در خارج

نکته آخر هم این‌که این تجربه ممکنه نتیجه‌ی عکس هم بده. مثلاً سابقه کارت توی ایران ممکنه گیج کنه ملت رو که تو چرا با مثلاً ۵ سال سابقه الزاماً می‌خوای کارآموزی بری. چون شاید (شاید) یکی از شروط کارآموزی این باشه که قبلش کار نیاموخته باشی!

یا از اون‌ور مثلاً اگه سابقه‌ی منیجمنت یا حتی founder بودن توی ایران داری، بالطبع برای یه پوزیشن جونیور تو overqualified هستی. و منیجر مربوطه نمیاد تو رو استخدام کنه که پس‌فردا بخوای هی بهش اظهار فضل بکنی. ترجیح می‌ده یه بچه‌ی بی‌دست‌وپا و تشنه‌ی یادگیری رو بیاره که مثل اسب کار بکنه و یاد بگیره!

خلاصه حواست به این داستان باشه. کلاً این‌که تو به اون پوزیشن fit باشی خیلی مهمه. و این‌که خیلی خفن‌تر باشی، خصوصاً جز برای شرکت‌هایی مثل google و facebook، قشنگ می‌تونه نمره منفی داشته باشه.

پ.ن. این قضیه برای مدرک تحصیلی هم هست. مثلاً کسی که تو ایران PhD داشته باشه توی یه سری رشته‌ها (مثل یه سری علوم)، واقعاً براش سخت هست این‌ور. چون از یه‌طرف خیلی اون مدرک رو خیلی قبول ندارن (مخصوصاً اگه دانشگاه و رنک‌ش خیلی خوب نباشه یا اصن معلوم نباشه)، و از طرف دیگه نمی‌تونن بهت بگن خب با PhD بیا لوله و شیشه‌ی آزمایشگاه رو بشور! واسه همین ترجیح می‌دن دنبال همچین کِیس‌ای اصن نباشن و رزومه رو بذارن کنار؛ و به‌جاش یه جوان جویای نام که موقع شیشه آزمایشگاه شستن ذوق هم می‌کنه که کار داره و انگیزه داره رو استخدام کنن.

۷.۱.۵. بین صنعت و آکادمی مونده‌ام!

فک کنم تا حالا فهمیده باشین که جز برای research positionها، از فوق‌لیسانس و به بعد، خیلی ربطی به شغل‌های software engineer نداره. و اصن مهارت‌هایی رو می‌خوان که توی دانشگاه شاید درس نمی‌دن.

از اون ور هم نکته‌ی مهمی که باید درنظر داشته باشین اینه که احتمالاً دانشگاه و آکادمیا و پیپر الان به‌نحوی comfort zone شما شده. پس کمی با نگاه بازتر و غیرجانب‌دارانه به صنعت نگاه کنین!

نهایتاً، چیزایی که این لامصبا توی اینترویو می‌خوان معمولاً فقط توی دو سه تا درس خاص هست – مثل طراحی الگوریتم و اینا. و نیاز به تمرین خیلی خیلی زیاد داره (مثلاً توی leetcode و اینا)

خلاصه علی‌رغم این‌که موندن توی دانشگاه/اکادمی خودش زیرشاخه داره (مثل ریسرچ یا تیچینگ یا تنیور ترک) و صنعت هم خیلی مختلفه (بیگ کمپانی، استارت‌آپ، ریسرچ پوزیشن، …) من جدول زیر رو «به نظر خودم» تنظیم کردم.

نکات مهم در مورد جدول زیر:

  1. اینا کاملاً نظرات من با مشاهدات من هست. اگه چیزی به‌نظرتون خیلی پرت می‌یاد حتماً همینجا کامنت بذارین یا بهم پیام بدین.
  2. من تجربه مستقیم در آکادمیا ندارم، اما خیلی زیاد هم دیده‌ام و هم استخدام کرده‌ام. در صنعت ولی تجربه‌م بیشتره. انتخاب خودم هم صنعت بوده. پس ممکنه علی‌رغم تلاش خودآگاهانه شخصی‌م، همچنان به‌سمت تصمیم خودم پیش‌داوری/bias داشته باشم.
  3. من بیشتر برای اکادمیا یه ریسرچر/فلوشیپ/پُست‌داک رو درنظر گرفتم و برای صنعت کار به‌عنوان برنامه‌نویس در یه شرکت متوسط. قطعاً همون‌طور که گفتم، خودِ اینا هم ممکنه دقیق نباشه و متفاوت باشه.

دسته

فاکتور

در آکادمیا

در صنعت

مالی

حقوق و مزایا

محدودتر

بیشتر (به‌همراه سهام)

افزایش حقوق

محدودتر

بیشتر، کاملاً دوبل بعد از ۵ سال شدنیه

امکان درآمد غیرمستقیم (passive income)

کمتر: کتاب - آموزش آنلاین

بیشتر - سهام شرکت رشد کنه، حتی بعد از جدایی شما

امکان برنده‌شدن Jack Pot و یه شبه میلیونر شدن

تقریباً صفر - مگر جایزه خیلی بزرگ

شدنی، یهو استارت‌آپ بگیره

زندگی شخصی

منزلت اجتماعی

بیشتر - خصوصاً در فرهنگ ایرانی

معمولی - مخصوصاً با تاتیل SE عادی

سهولت ویزا و اقامت (آمریکا)

نسبتاً بهتر - H1B cap exempt و NIW

نسبتاً سخت‌تر - لاتاری H1B

سهولت مرخصی

سه ماه تابستون معمولاً آف

مرخصی‌ها نسبتاً محدودتر به دو هفته شاید

سطح استرس روزمره

نسبتاً کمتر و قابل پیش‌بینی

نسبتاً بیشتر - پروژه‌ها، باگ تو پروداکشن

بقا در comfort zone

بیشتر - چون توی همون محیط احتمالاً تا الان Master's یا PhD گرفته شده

جدید - با روال و روتین جدید و آدم‌های جدید و چیزای جدید

کار

گزینه‌های ورودِ اولیه

کمتر - دانش‌گاه‌ها محدودن

بیشتر - گونی گونی شرکت و استارت‌آپ هست

سختیِ ورود اولیه

احتمالاً کمتر - مخصوصاً اگه کار-درست باشین

احتمالاً بیشتر - مخصوصاً اگه برنامه‌نویس نباشین

امنیت شغلی (اخراج شدن)

شاید کمی بهتر اگه تنیور بشین (اخراج سخت‌تر)

امکان اخراج هست، اما بعد از سال سوم دیگه راحت می‌شه آفر گرفت

امنیت و راحتی آینده/پیری اگه بخوای کار کنی

شاید بیشتر - مخصوصاً فکالتی‌شدن و خودمختار شدن

شاید کمتر کمی - مگر خیلی دیگه رئیس شدن (تو ۷۰ سالگی باز ملت کد می‌زنن)

بروکراسی و احتمال خاله‌زنک‌بازی و رواعصاب

شاید بیشتر - محیط کوچیک‌تر و معمولاً بالا به پایین

شاید کمتر - امکان تغییر تیم راحت، تنوع در تیم‌ها و ساب‌کالچرها

سختی تغییر شغل خودخواسته

نسبتاً سخت‌تر - تعهد بیشتر، تقاضای محدودتر

نسبتاً آسون - خصوصاً از سال ۳ به بعد

حس و نگاه شخصی

نقش در سرنوشت بشر

شاید بیشتر - پیش‌برد علم

شاید کمتر - حتی کمک به کپیتالیسم. مگر در صنایع خاص.

هیجان شخصی

شاید کمتر - خروجی: چند مقاله در سال

شاید بیشتر - مخصوصاً فیچر جدید و A/B تست‌ها

تاثیرگذاری مستقیم در زندگی آدم‌های کنونی

شاید کمتر - مخصوصاً در رشته‌های تئوری و محض

شاید بیشتر - مخصوصاً در استارت‌آپ‌های یونیکورن

یادگیری

یادگیری تعاملات انسانی و مدیریت

محدودتر شاید - دانشجو گرفتن و سایر اساتید. و حتی فقط استاد راهنما.

بیشتر اگه منیجر بشین - مثل هایرینگ و فایرینگ. و همچنین مشتریان و ساپورت

یادگیری روزمره

نسبتاً کمتر ولی عمیق‌تر شاید (پیپر)

نسبتاً بیشتر - خصوصاً در کار/پوزیشن جدید

گذشته/آینده

امکان استقلال و رئیس-خود-شدن

هم صفر هم صد - می‌تونی رئیس گروه خودت باشی

نسبتاً راحت‌تر - استارت‌آپ

مفید بودن گذشته و مسیر طی شده تا الآن

خیلی زیاد - خصوصاً در ریسرچ

نسبتاً کم - خصوصاً در SE معمولی

توییت‌های مرتبط:

۷.۱.۶. من بین دو تا شرکت مونده‌ام؛ چه عواملی رو باید مدنظر داشته باشم برای انتخاب ؟

بعداً می‌نویسم.


۷.۲. برنامه‌نویس هستم. خارج از ایران. دنبال کار.

۷.۲.۱. کلاً داستان اینترویو چه‌شکلی هست؟ من هیچ‌ نظر خاصی ندارم.

۷.۲.۲. چه‌جوری خودم رو برای شروع اینترویوها آماده کنم؟

۷.۲.۳. برای مرحله‌ی صحبت کردن با ریکروتر چه چیزهای خوبه بپرسم؟

۷.۲.۴. برای مرحله‌ی آزمون‌های تلفنی (برنامه‌نویسی) چه‌جوری خودم رو آماده کنم و چیا بپرسم؟

سؤالات روزبه:  چطوری به صورت سریع مسئله حل کنیم از نظر کنترل استرس و مدیریت زمان و ... موقع اینترو و زیر نظارت شخص دوم بد نباشه.

۷.۲.۵. برای مرحله‌ی مصاحبه‌های حضوری (گروهی/نهایی) چه کارهایی بکنم؟

۷.۲.۶. چه توصیه‌هایی برای بعد از گرفتن آفر و negotiation و چونه‌زدن دارین؟

… می‌نویسم بعداً. برم بخوابم الان! (۱۹ ژانویه ۱ بامداده!)


۷.۳. اروپا هستم و می‌خوام برم آمریکا/کانادا

… می‌نویسم بعداً. برم بخوابم الان! (۱۹ ژانویه ۱ بامداده!)

۷.۴. سایر مهارت‌های خارج از ایران

۷.۴.۱. چه‌جوری speakingم رو قوی کنم؟

بهترین راه فقط و فقط تمرین هست.

  1. حتماً سعی کنین گروه دوستی‌هاتون رو توش خیلی غیرایرانی بذارین. مخصوصاً اگه مسن هم باشن (در و همسایه) یا بخواین داوطلبانه به خانه‌های سالمندان‌طور سر بزنین. و حتماً ازشون بخواین که تصحیح‌تون کنن وقتی چیزی رو اشتباه می‌گین.
  2. سعی کنین اون‌قدری مسلط بشین که به‌جای فارسی فکر کردن و بعد ترجمه کردن به انگلیسی، مستقیماً انگلیسی فکر کنین.
  3. کلمه جدید یاد می‌گیرین حتماً باش جمله بسازین.
  4. توی خونه با دوستان و هم‌خونه و پارتنرتون انگلیسی حرف بزنین. حتی اگه آخر شب خسته و کوفته هستین یا به‌نظرتون عجیب به‌نظر میاد.
  5. یه یک‌سال غم غربت رو فراموش کنین و به‌هیچ‌وجه فیلم ایرانی نبینین و به‌جاش فیلم‌های انگلیسی زبان با زیرنویس ببینین. حتی اگه تنها هستین، جایی که کاراکتر موردعلاقه‌تون یه جمله باحال می‌گه، یهو pause کنین و همون جمله رو خودتون با لهجه‌ی طرف ۳ بار بگین!

۸. پیشنهادات حرفه‌ای‌تر زندگی کردن

[h][i][j][k][l]

۸.۱. اُرگانایزد/مرتب بودن

۸.۱.۱. چه‌جوری خوب داکیومنت کنم که بعداً یادم بیاد چی کرده‌م؟

ژورنال روزانه وااااقعاً کمک می‌کنه.

یه گوگل داک داشته باشین (با لینک بوک‌مارک آیکنی مطابق پاسخ زیر – ۸.۱.۲) که هر روز توش بنویسین چی‌کار کردین یا دارین می‌کنین. برای اوایل هر کاری من توصیه‌م روزی نیم ساعت هست (یک خط برای هر یکی دو ساعت).

علاوه بر این برای هر پروژه هم یه داک داشته باشین و توش پیشرفت‌تون رو به همراه نکات مهم (مثل query یا لینک یا کد یا اسکرین‌شات) هی بذارین. دقت کنین که توی گوگل داک با Command+Alt+1 و 2 و 3 می‌تونین هدینگ رو راحت عوض کنین و هی سرتیتر بذارین که بعد فهرست (Table of contents) داشته باشین. و با خودتون قرارداد کنین که مثلاً هر روز، خودِ روز یه Heading 1 خواهد بود و هر بخش کاری یه Heading 2. این شکلی شکیل هم خواهد شد.

بعد یه فولدر بوکمارکی داشته باشین و این داک‌های هر پروژه رو هی بندازین توش. حتی می‌تونین nested folder هم داشته باشین. مثل این.

ابزارهای دیگه (مثل این notion که جدید اومده؛ یا google keep؛ یا one note) هم هستن. اما گوگل‌داک به‌نظرم از خیلی جهات محشره!

خلاصه روی این قضیه حتماً سرمایه‌گذاری بکنین. ثواب داره!

۸.۱.۲. چه‌جوری شونصد تا تب باز نداشته باشم؟

من کاری که می‌کنم اینه که از بوک‌مارک‌بار مرورگرها خیلی مفید استفاده می‌کنم. (و دو مرورگر جدا برای کار و development دارم.)

برای مدیریت اون نوار مفید اولاً هر چیزی رو که بوک‌مارک می‌کنم، حتماً rename می‌کنم و اون اسم طولانی‌ش رو بر می‌دارم. و خیلی مواقع به آیکن‌ها اکتفا می‌کنم یا فقط یه حرف یا حتی یه اموجی! این شکلی همه‌ی اینا همیشه در دسترس هست.

همچنین از folder ها هم خیلی استفاده می‌کنم. چیزایی که می‌خوام باشه رو توی یه فولدر می‌ذارم که گم نشه، ولی لازم نباشه یه تب هم داشته باشم.

و نهایتاً به‌خودم می‌گم چیزایی رو که نمی‌خونم الکی باز نگه ندارم. یه FOMO از آرتیکل‌هایی که قراره یه روزی بخونم نداشته باشم. اگه الان خوندم، خوندم. اگه نه هم دیگه نمی‌خونم.


۸.۲. هدف داشتن و رسیدن به هدف‌ها

۸.۲.۱. چه‌‌جوری برای خودم هدف تعیین کنم؟

یکی از نکاتی که باید چه توی کار و چه توی زندگی راجع به تعیین هدف (Goal) داشته باشیم اینه که اهداف رو S.M.A.R.T تعریف کنیم. (لینک یک و دو و PDF).

این متد توی سر کار خیلی خیلی رایج هست. مخصوصاً برای ست کردن هدف‌ها برای ارزیابی عملکرد (performance review) هر ۳ یا ۶ یا ۱۲ ماه، و ارتقا یا پاداش گرفتن.

حالا جالبی داستان این هست که همین رو توی زندگی واقعی، مخصوصاً دم عید/new year که همه رو جو گاز می‌گیره، می‌شه اِعمال کرد. :)

اون مقاله‌های بالا خیلی خوبن. من هم نظر خودم رو (بدون خوندن و ترجمه‌کردن اونا) بخوام بگم این پایینی‌ها می‌شه.

نکته: بعد از خوندنِ این پایینی‌ها باید فرق «هدف» رو با «چشم‌انداز»، «رؤیا»، «آرزو» و «کار مفید» بدونین. :)


۸.۲.۱.۱. هدف باید دقیق یا Specific باشه

در واقع به یه «چه‌گونه» و Howی کلّی جواب بدیم درباره‌ی هدف؛ و اگه لازم هست راجع به بقیه‌ی چیزهایی که با W شروع می‌شن، مثل پایینی.

و اگه هدف رو یه نقطه درنظر بگیریم، حداقل این‌که برای نزدیک شدن بهش قراره از جاده‌ی چالوس بریم یا هراز، یه صحبتی بکنیم که هی گیج نشیم.

چون اگه هدف‌تون مشخص و دقیق نباشه، خیلی سخته بفهمین دارین بهش می‌رسین یا نه. و هی هم ممکنه از راه‌های مختلف برین و بیاین که گیچ بشین خودتون هم.

نگیم

بگیم

می‌خوام برنامه‌نویسی‌م بهتر بشه

می‌خوام یه پروژه‌ی ToDo App با زبان پایتون بنویسم.

می‌خوام زبان یاد بگیرم

می‌خوام بتونم یه داستان انگلیسی بخونم. یا ۳ تا مقاله انگلیسی بنویسم.

می‌خوام آدم سوشال باشم

می‌خوام دوست‌های نزدیکی که هر هفته باهاشون در تماس هستم رو افزایش بدم.


۸.۲.۱.۲. هدف باید قابل ارزیابی یا Measurable باشه

هدف‌تون باید قابل ارزیابی باشه. و در حالت ایده‌آل همیشه بتونین روی یه تیکه کاغذ بنویسین که از صفر تا صد درصد، الان کجا هستین دقیقاً.

 از الفاظ کیلویی مثل «خیلی» یا «خوب» استفاده نکنین. و واقعاً روی «قابل ارزیابی» بودنش خیلی فکر کنین. معمولاً «عدد» اینجا خیلی به‌کار میاد.

نگیم

بگیم

می‌خوام پروژه‌ی شخصی‌م رو توش پیشرفت کنم

می‌خوام حداقل ۳۰ تا کامیت داشته باشم تا عید، روی پروژه شخصی

می‌خوام لاغر شم (* قسمت «چراییِ هدف؟» پایین رو هم بخونین)

می‌خوام بتونم ۱۰ پوند یا ۵ کیلو کم بکنم تا ۳ ماه دیگه.

می‌خوام با دوستام بیشتر معاشرت کنم

می‌خوام بتونم به‌صورت متوسط در هفته ۱۰ ساعت با دوستام تماس تلفنی/حضوری/تصویری داشته باشم.


۸.۲.۱.۳. هدف باید رسیدنی یا Attainable/Achievable باشه

من South Park باز نیستم. اما این تیکه‌ش (ویدیوی یوتیوب) خیلی رایج هست – جمع شده‌ان لباس زیر جمع می‌کنن و یکی می‌پرسه خب می‌خواین چی کار کنین با این همه لباس‌زیر دست دوم؟ می‌گن: خب فاز اول جمع آوری، فاز سوم هم سوددهی، فاز دوم هم هنوز راجع بهش فکر نکرده‌ایم!

برای اهداف هم همینه.

یکی از رایج‌ترین اشتباهاتی که من دیده‌ام و بارها می‌بینم این هست که یه «می‌خوام» (فاز اوّل: wanting) این سرش هست و یه «هدف» (فاز سوم: target) هم اون سرش، و وسطش هم «یا علی مدد! می‌ریم ببینیم خدا چی می‌خواد! انشالله که بشه!»

هدف بدون مسیر، واقعاً فقط یه آرزو هست و بس. فرق آرزو و هدف رو بدونین. آرزو بد نیست، اما قاطی (confuse) کردنش به هدف، بده. :)

نگیم

بگیم

می‌خوام امسال پولدار بشم.

می‌خوام امسال بیزینس جانبی خودم رو راه بندازم.

می‌خوام برم خارج.

می‌خوام درسم رو تموم کنم و تافل رو ۱۱۰ بگیرم.

می‌خوام خوشحال باشم.

می‌خوام ۵ تا دوست نزدیک (هفتگی) داشته باشم و ۱۰ تا کتاب بخونم و ۷ تا چیزی که تو زندگی من رو شاد و متمایز می‌کنه رو توی خودم کشف کنم.

۸.۲.۱.۴. هدف باید مرتبط یا Relevant باشه

این «مرتبط بودن» رو شاید بشه ظریف‌ترین بُعدِ این تنظیمِ هدف دونست!

داستان اینه که شما یه «چشم‌انداز» یا vision توی زندگی دارین (یا اگه ندارین، باید داشته باشین). ساده بخوایم بگیم، جوابِ این‌ سؤال که «تو خودت رو ۱۰ سال دیگه دوست‌داری کجا ببینی؟» (به‌جای ۱۰، می‌شه ۱ یا ۳ یا ۵ هم گذاشت.) (این پادکست هلی‌تاک هم احتمالاً خوب هست – من پادکست‌پرسن نیستم. مغزاً کلافه می‌شم. :( ).

این سؤال رو معمولاً در ۲ بُعد می‌شه بهش جواب داد – شخصی و کاری.

حالا، داستان اینه که هدفی که می‌ذارین باید کمک بکنه که شما به اون ویژن‌تون برسین. و هدف بی‌ربط مخصوصاً به‌خاطر چشم و هم‌چشمی نچینین! چون هدفی که به‌دردتون نخوره و/یا به‌ش اعتقاد نداشته باشین، یه گوشتِ گندیده توی مغز و روح شما خواهد شد، خیلی زود.

پس حواس‌تون باشه که هدفی که ست می‌کنین، مرتبط با شما و چشم‌انداز شما باشه. نه صرفاً چون «مُد» هست. 

(پ.ن. مثال‌های زیر ممکنه در شرایط خاص، برعکس باشه! من قضاوت نمی‌کنم. هدفم فقط مثال هست. قطعاً داشتنِ هابی شخصی خیلی هم خوبه.)

نگیم

بگیم

می‌خوام همه‌ی GoT رو ببینم و LOTR رو بخونم (که عقب نمونم از بقیه)

می‌خوام ۳ تا کتاب که دوست‌دارم و با خوندنشون حس خوبی به خودم دست می‌ده بخونم.

می‌خوام قبل اپلای برای دکترا، ناخن‌کار بودن یاد بگیرم

می‌خوام زبان انگلیسی رو مسلط بشم که بتونم یک ساعت بدون غلط با دوستم تو کانادا تلفنی بحرفم.

می‌خوام تعداد فالوورهای اینستام رو به ۱۰۰۰ برسونم

می‌خوام ۱۰ تا دوست واقعی و قابل اتکا داشته باشم.

۸.۲.۱.۵. هدف باید مدت‌دار یا Time-Bound باشه

همون‌طور که هدفِ بدون مسیر و برنامه، یک «آرزو» هست، هدفِ بدونِ مهلت و پایان هم یک «رؤیا» می‌شه تلقی بشه.

کلاً توی همه‌ی هدف‌هاتون یه فاکتور «زمان» رو هم در نظر بگیرین. و کیلویی هم نگین «امسال». واقعاً یه زمان شروع و پایان بذارین. در غیر این‌صورت ممکنه بلای قانون پارکینسون (و این) سرتون بیاد و این هییییی کش پیدا بکنه و هیچ‌وقت هم نرین سرش – قانونِ پارکینسون (از ویکی‌پدیای فارسی): «هر کار به اندازه زمانی که برای آن تخصیص داده شده طول می‌کشد.»

برای مقابله با قانون پارکینسون هم در حالت کلی باید روی time management (مدیریت زمان) خیلی خیلی کار بکنین. و خب برای این کلی راه و ابزار و تکنیک هست. مثل اینا (که می‌شه یه سؤال/جواب کرد خود همین رو).

نگیم

بگیم

می‌خوام زبان یاد بگیرم

می‌خوام در ۳ ماه آینده بتونم آزمون آزمایشی تافل رو بالای ۹۰ از ۱۲۰ بشم.

می‌خوام لاغر شم (* چراییِ هدف رو بخونین پایین)

می‌خوام تا تولدم، وزنم رو ۱۰ کیلو کم کنم

می‌خوام ۱۰ تا کتابِ موفقیت بخونم

می‌خوام امسال هفته‌ای حداقل ۵ ساعت کتابِ موفقیت بخونم.

والسلام.

حالا، اینا به کنار، من یه نظری هم داره اینه که کلاً قبل از «گذاشتن» هدف، بیاین و خداییش یه‌بار فکر کنین که چرا دارین این هدف رو می‌ذارین؟

۸.۲.۱.۶. چراییِ هدف

همه‌ی اون روضه‌ها رو خوندیم؛ اما خدایی گاهی بیاین واقعاً فک کنین که چه برای «هدف» و چه برای «چشم‌انداز»تون، چرا می‌خواین به اون هدف برسین؟

این «چرا» پرسیدن رو هم لطفاً، تو رو خدا، تو رو به جانِ خودتون، با یک پاسخ رها نکنین. و دقیقاً ۵ مرحله (Five Whys) برین پایین تا به ریشه‌ی اصلی چرا برسین. (یا این تمرین رو بخواین که یه دوست معتمد و نزدیک‌تون باهاتون انجام بده.) مثلاً «من می‌خوام زبان فرانسوی امسال یاد بگیرم»

  1. چرا زبان فرانسوی؟
    - که بتونم فیلم‌های فرانسوی ببینم و اهنگ‌های فرانسوی گوش کنم.
  2. چرا فیلم‌ها و آهنگ‌های فرانسوی؟
    - راستش، چون می‌خوام متمایز باشم. و می‌خوام تو هر جمع یا صحبتی، یه‌کم خودم رو خفن و شاخ و جالب نشون بدم.
  3. چرا نیاز داری خودت رو توی هر جمعی خفن و شاخ و جالب نشون بدی؟
    - چون خسته‌شده‌ام از دیده نشدن. و دوست ندارم مثل اواخر رابطه با اکس سابقم (که نارسیسیست بود؛ و رابطه‌ی تاکسیک داشتیم!) من عادی بشم و نادیده گرفته بشم.
  4. چرا فکر می‌کنی عادی هستی و نادیده گرفته می‌شی و لازمه کار خاصی بکنی؟
    - چون تمام ۲۰ سال اوّل زندگی، نمی‌تونستم کسی رو داشته باشم که بهم بگه «تو توی کلّ دنیا تک هستی؛ و من عاشق‌ت هستم.»
  5. چرا فکر می‌کنی نیاز داری این رو بشنوی؟
    - چون فکر می‌کنم توی بچگی اون‌قدری که لازم داشته‌م نشنیده‌م. و به همین خاطر خودم رو دوست ندارم و قانع‌شده‌م که دوست‌داشتنی نیستم.

(این یه سناریوی خیلی خیلی تخیلی بود. کاملاً هم مثالی بود و من هیچ استریوتایپ‌ی نمی‌سازم. صرفاً خواستم «عمق» و «پنج مرحله» رو برسونم.)

حالا، وقتی به اون ته رسیدین، حالا ممکنه چند تا حالت پیش بیاد:

  1. بفهمین که ریشه در یک عقده‌ی کودکی یا نوجوانی (مثل «you are not enough» که عده کثیری از والدین ایرانی، سلطانِ اعطا کردنش هستن؛ یا شکست‌های عمیق در کنکور و درس؛ یا اولین break up تلخ و جان‌گداز) داره، و یا FOMO یا چشم و هم‌چشمی داره و بس – رهایش کن! و سر فرصت هم درمانش کن.
  2. بفهمین که عه، خب اگه این رو می‌خوای که راه خیلی بهتری هم هست. دقیقاً‌ چیزی که بهش XY Problem می‌گن (مثال‌هاش). و جونِ جدّتون هم با «مسیر» و «راه‌حل» ازدواج نکنین (don't marry the solution) و تعصب خرکی به خرج ندین! آقا همونی که ته‌ته‌ش می‌خوای خب راه ساده‌تر هم داره و نیازی نیست بیای چرخ رو دوباره اختراع کنی. پس از خر شیطون و تعصب و غرور و اون egoی لامصب‌ت بیا پایین و وقت خودت رو حروم نکن که ثابت کنی خیلی موجود قُدی هستی و بقیه باید بهت تعظیم کنن، می‌تی‌کومان جان!
  3. بفهمین که توی این ۵ مرحله از عمقی که دارین می‌رین (به‌عبارتی recursiveگونه)، دارین یه جاهایی اصطلاحاً جوب می‌زنین (پ.ن. این اصطلاح انگار واقعاً المپیادی هست و حتی تو گوگل هم نیست زیاد، جز اینجا :-/). دوباره بگم: یه جاهایی توی این ۵ مرحله دارین نتیجه‌گیری‌های اشتباه می‌کنین. یعنی مثلاً فرض می‌کنین که اگه فرانسوی یاد بگیرین، شانسِ خواستگار پیدا کردن (یا بله شنیدن در خواستگاری) بیشتر می‌شه. در حالی‌که شاید خیلی هم درست نباشه!
    یا مثلاً دارین فرض می‌کنین که با فالو کردنِ کانال‌های آموزش زبان توی اینستاگرام شما زبان‌تون بهتر می‌شه. در حالی‌که نمی‌شه.
    خلاصه این چراها رو یه بار برای خودتون بنویسین و به منتور/دوستای نزدیک‌تون که معتمد هستن هم بگین که کمک بکنن مطمئن بشین که استدلال‌هاتون منطقی و واقعی هست.

در غیر این صورت‌ها، اگه هم ریشه‌ی چراها تهش به چیزی رسید که شما باهاش حالتون خوب باشه (و در راستای ویژن‌تون هم باشه) و مسیرِ بین این چراها هم درست هست، اون‌موقع می‌تونین با اطمینان بیشتری ادامه بدین.

من بازم تأکید می‌کنم که به قرآنِ مجید، این‌که این «عمق چرا» رو پیدا کنین، خیلی خیلی می‌تونه عمر و جوونی‌تون رو نجات بده! چون خیلی وقت‌ها یهو می‌بینین شما دارین یه جا چاه می‌کَنین، خوبم می‌کَنین، اصولی هم هست، وقت هم می‌ذارین، دریل هم نو خریده‌این و نقشه‌ی حفر رو هم از سایت دانلود کرده‌این و پرینت کرده‌این، انرژی و انگیزه هم می‌ذارین، بعد تهش می‌بینین این وسط اصن آب نبوده این پایین و همه تلاش شما الکی بوده.

یا مثلاً ممکنه چاه رو بکّنین و خودتون رو پاره کنین، بعد تهش یهو ببینین خب سه‌قدم اون‌ورتر که یه چشمه هست خب که! و برای این‌که ضایع نشین مجبورین تا چشمه سینه‌خیز برین. :دی

با خودتون، عریان و روراست باشین. و اجازه بدین به خودتون که توی خودتون عمیق بشین، وقتی آروم هستین. همین.


۸.۲.۲. چه‌جوری به اهدافم برسم؟

اون مثال South Park رو یادتون هست توی ۸.۲.۱.۳؟

برای رسیدن به اهداف شما باید بتونین اون فاز دوم:

  1. پیدا کنین
  2. بشکونین به مراحل کوچیک
  3. طی کنین
  4. و ارزیابی کنین

این مراحل رو حالا اگه بخواین بهتر تعریف کنیم و بهشون نگاه کنیم، می‌تونیم موارد زیر رو بررسی کنیم با هم.

۸.۲.۲.۱. شکستنِ بزرگ‌ها برای غلبه برشون

حتماً در درجه‌ی اول سعی کنین اهداف‌تون رو هر کدوم رو مثل یه مینی‌پروژه نگاه کنین و اون‌ها رو به بخش‌های کوچیک‌تر بشکونین.

شما «گرفتن نمره ۱۱۰ در تافل تا ۳ ماه آینده» رو نمی‌تونین یه قرص بدونین که با قورت دادنش داستان تموم بشه. قطعاً این هدف نیاز به چندین مرحله داره. مثل: تموم‌کردن کتاب ۵۰۴، ۳ جلسه مکالمه در فلان کافه یا فلان استاد، نوشتن دو تا essay مرتبط، تماس با دوست کانادایی و تنظیم جلسات هفتگی مکالمه، و …

این break down واقعاً اولین گام هست در پیدا کردن مسیر. و وقتی شما بتونین گام‌های کوچیک رو از توش در بیارین، قطعاً می‌تونین با طی کردن این پله‌ها، به خیلی اوج‌ها برسین!

۸.۲.۲.۲. دنبال‌کردن و مدیریت اهداف به‌شکل پروژه

حالا که اهداف رو شکوندین، باید حتماً بتونین خوب نگاه‌شون کنین و توی هر کدوم بدونین که کجا هستین و چیا رو انجام داده این و چیا مونده.

ابزارک‌های آنلاین زیاد هست برای همچین چیزی (اگه بخواین از یه اکسل ساده یا استیکی‌نوت بهترین برین جلو) مثل trello یا الآن دیدم ایرانیش هم هست به اسم mizito.ir. و ساده‌ترین مدل هم یه Kanban ساده هست با ۳ تا ستونِ «To Do» یا «در انتظار انجام‌شدن»، «Doing» یا «در حال انجام»، و نهایتاً «Done» یا انجام شده.

می‌تونین برای هر کدوم از هدف‌های جاری هم یه رنگ انتخاب کنین و باش برین جلو.

احتمال زیادی داره که شما سرِ کار دارین همین کار رو می‌کنین و شاید هیچ‌وقت فکر نکرده‌این که برای زندگی شخصی هم می‌شه استفاده‌ش کرد! اما یه امتحان بکنین. خیلی خوبه و می‌تونه هم خیلی حال بده!

یه نکته هم این‌که اگه یه‌موقعی می‌بینین یه تیکه/کارت (task) خیلی گنده هست که نمی‌شه راحت تکون‌ش داد، می‌تونین بشکونینش (مورد بالایی) به ۲ تا چند تا task ساده‌تر و قابل مدیریت کردن! طوری که بتونین راحت روی یه تیکه کار بکنین و پیشرفت محسوس خودتون رو بتونین ببینین!

۸.۲.۲.۳. پایبندی و مسئول دونستنِ خودتون

همه‌ی این حرف‌ها راجع به تنظیم هدف، بادِ هواست مگر این‌که خودتون رو مسئول بدونین و اصطلاحاً accountable نگه دارین برای رسیدن به اهداف‌تون!

این هم ابداً آسون نیست. و واقعاً نیاز به اراده‌ی قوی و تعهد به خودتون داره. و می‌تونم شخصاً بگم که ۹۵ درصد اهداف دقیقاً در همین مرحله هست که رها می‌شن و می‌میرن. :(

این مقاله و این یکی خیلی خوب هستن. خلاصه و نظر شخصیم رو بخوام بگم:

  1. به هدف‌تون ایمان داشته باشین. اگه ایمان درونی ندارین و خوش‌تون نمی‌یاد (مثلاً واسه پارتنرتون می‌خواین لاغر بشین، و اگه اون نباشه، شما با فُرم و وزن‌تون اوکی هستین)، احتمال موفقیت‌تون خیلی کم هست. و شاید بد نباشه یه تجدیدنظر بکنین.
  2. حتماً یه support group داشته باشین. حالا چه می‌خواد دوستای نزدیک باشه، چه خانواده، چه فالوورهای توییتر و اینستا. کسایی که شما رو حمایت کنن. (من به‌شخصه نه این مدلی هستم، نه این مدل رو دوست دارم؛ اما می‌دونم می‌تونه برای خیلی‌ها خیلی مفید باشه! واسه همین می‌نویسم‌ش)
  3. اگه می‌تونین توی یه community قرار بگیرین و با هم برین جلو، حتماً این کار رو بکنین! توی توییتر مثلاً خیلی‌ها با هشتگ #100DaysOfCode یا هشتگ‌های مشابه همدیگه رو پیدا و ترغیب می‌کنن. شما هم اگه بتونین مثلاً با ۳ از دوستان هر هفته برین کوه، شانس موفقیت خیلی بیشتره تا تکی بخواین برین.
  4. کاری کنین که از خودتون بدتون بیاد اگه به اهداف پایبند نباشین. حتی اگه شده یه جریمه هم بذارین که قشنگ فشار بیاد بهتون (پایین توضیح داده‌ام توی ۸.۲.۲.۵)
  5. مطمئن باشین که هدف‌تون به شخص دیگری جز خودتون وابسته نیست که سرخورده بشین. و اگه مثلاً قراره کد بزنین و یکی قراره بیاد منتور باشه، یاد بگیرین که بدون منتور هم کار خودتون رو پیش ببرین، ولو با سرعت کمتر.
  6. از اپلیکیشن‌های مرتبط که شما رو بهتون انگیزه می‌دن یا track می‌کنن استفاده بکنین. این مقاله اول داره این اپپ‌ها رو می‌گه: StickK، StayFocused، Beeminder، Coach.me. من واقعاً نظری ندارم، اگه کسی داره کامنت بذاره یا بهم بگه.
  7. حتماً از Focus Mode یا Do Not Disturb گوشی‌تون استفاده بکنین وقتی دارین کار می‌کنین. و به‌هیچ‌وجه اجازه ندین یه نوتیفیکشن احمقانه (مثل «زن‌دایی همسایه قبلی‌تون بود که شینیون‌کار بود و توی یه عروسی یه بار دیدیش، اوووون، خببببب، به یه بچه گربه که چشماش شبیه کراش ۱۴ سالگیش بود گفت «عجقم! خوبی؟») تمرکز شما رو به‌هم بزنه. چون به‌خودتون بیاین می‌بینین یهو رفتین اون تو و یهو دیدین ۲ تا مسیج هم دارین و … و … و … حالا خر بیار و باقالی جمع کن و شما رو برگردون روی اون momentum و اینرسی و انگیزه و mental state و تمرکزی که داشتی!
  8. دستاوردهاتون رو هر روز یه‌جا بنویسین که انگیزه خوبی داشته باشین که بدونین هی دارین پیشرفت می‌کنین. اگه اون taskهای کانبان هم بتونین هر روز یه‌دونه رو جلو ببرین که چه بهتر!

۸.۲.۲.۴. ارزیابی

شما باید بتونین همیشه اهداف‌تون رو ارزیابی بکنین.

حالا دو مدل برای این ارزیابی هست. یه مدل باینری (که برای اهداف S.M.A.R.T مناسب‌تر هست) و یه مدل اصطلاحاً OKR.

در مدل باینری شما قراره به اون نقطه برسین و یا می‌رسین یا نمی‌رسین. مدل تربیتی ما هم تو ایران بیشتر این مدلی هست. و خب چیزی که ارزیابی می‌کنین پیشرفت پروژه هست (مثلاً تعداد taskهایی که توی kanban تون جلو رفته، تقسیم بر تعداد کل taskها).

در مدل OKR ولی شما سعی می‌کنین یه هدفی (Objective) بذارین که نسبتاً سخت باشه و براش ۳ الی ۵ تا دستاورد (Key Result) تعریف می‌کنین که باید ارزیابی بشن. (این مقاله خیلی خوبه)

مثلاً Objective اصلی‌تون می‌شه این باشه که «توی امتحان تافل ۳ ماه دیگه، ۱۱۰ بشم» (یه چیزی شبیه یه مینی‌ویژن). بعد حالا KRهاتون می‌تونه این باشه که:

حالا توی هر کدوم اینا می‌تونین ببینین چند چند هستین.

یه نکته‌ی خیلی بامزه توی OKR اینه که اصطلاحاً نمره‌ی خوب (یا ‌sweet spot داستان) ۷۰ درصد یا 0.7 هست!

ینی برخلاف مدل باینری، نمی‌گه که شما باید به همه‌ی اهداف برسین و نمره‌تون ۲۰ بشه! بلکه می‌گه اهداف رو طوری بچینین که خودتون رو کِش بیارین (‌stretch بشین). و اصن اگه به همه اهداف برسین، ینی هدف رو خیلی ساده چیده بودین!

من به‌شخصه نظرم اینه که برای اهدافی که ته دارن، باینری خوبه (SMART بیشتر) و برای اهدافی که ادامه‌دار هستن، شاید OKR خیلی بهتر باشه.

۸.۲.۲.۵. تشویق و reinforcement (و گه‌گاه تنبیه مهربونانه) و کودک درون!

من به‌عنوان یک علاقه‌مند به روانشناسی خیلی خیلی زیاد به مفهوم inner child (کودکِ درون، مقاله فارسی خوب یک و دو) اعتقاد دارم و خیلی توی حرفام ازش استفاده می‌کنم. 

در مسیرهای سخت و غیر رایج مثل انتخاب یک هدفی که الزاماً همه‌ش بستنی و شکلات نیست (مثل زبان خوندن، وقتی دل‌تون توییتربازی یا ویدیوگِیم می‌خواد!) واااااقعاً نیاز دارین حواس‌تون خیلی به این کودکِ درون باشه. چون بدونِ این‌که بفهمین، گاهی ۸۰ درصد کنترل‌تون دستِ اون هست!

۸.۲.۲.۵.۱. نکاتِ مهم در شناخت کودک درون:
  1. وااااقعاً خیلی خوبه که بدونین کودکِ درون‌تون چه‌شکلی هست.
    اگه هیچ تجربه‌ای از این خودشناسی/خودشکافی تا حالا نداشته‌این، برای شروع باید باهاش به چشم یه بچه‌ی ساکت و مهربون که توی یه مهمونی یه گوشه نشسته آشنا بشین و بهش سلام کنین. بعد کم‌کم سعی کنین سرِ صحبت رو باش باز کنین. :)
  2. بدونین چی‌ها خوشحال‌ش می‌کنه. و باعث می‌شه یهو ذوق بکنه!
    شما واقعاً وظیفه دارین که به‌عنوان یه بالغ کاملاً بلد باشین چی‌ها می‌تونه خوشحال‌تون بکنه، مخصوصاً در مواقع ضروری. قرار نیست همیشه خوشحال باشه، اما گاهی که براتون یه اتفاق سخت می‌افته یا مراحل عزاداریِ یک مرثیه رو رد کرده‌این (از ۵ مرحله‌ی مواجهه با اندوه طبق
    Kübler-Ross Grief Cycle و این) بدونین که چه‌جوری حالش رو می‌شه کم‌کم خوب کرد.
  3. بدونین چی باعث می‌شه ناراحت بشه. و خودآگاه باشین معمولاً ناراحت/عصبانی که می‌شه می‌ره پشتِ اون صفحه‌ی پر از دکمه‌ی داخل مغز/قلب‌تون می‌شینه و هر چی دکمه رو فشار می‌ده! (اگه خواستین، انیمیشنِ Inside out رو ببینین، نه‌خیلی‌دقیق ولی بامزه و مرتبط هست.)
    خیلی خیلی خیلی از مواقع، جاهایی که شما ناراحت یا عصبی می‌شین و این عصبانیت و دلخوری رو با خشم یا عصبانیت یا سکوت یا گریه بروز می‌دین و بقیه نمی‌فهمن که دقیقاً چی شده، کار کارِ این بچه‌ست! چون بین شما و اون رابطه (در ناخودآگاه شما، بدون این‌که بتونین توضیح بدین و تشریح‌ش کنین) شکل گرفته هست. اما این رو شما نمی‌تونین الزاماً توضیح بدین.
  4. حواس‌تون باشه که این کودکِ درون همیشه از کودکی نمی‌یاد! درسته که شاید یه قسمت‌هایی از شکل‌گیری‌ش به تراماها (و دراماها)ی کودکی ربط داشته باشه و سرکوب‌ها و مخالفت‌های خانواده، اما هر تراما(ی لحظه‌ای) و دراما(ی مزمن) در بزرگسالی هم در شکل‌گیریِ این نقش داره. پس اگه یهو چیزهایی که مال ۲ سال پیش و آخرین break-upتون هست اذیت‌ش می‌کنه و عصبی‌ش می‌کنه، تعجب نکنین. چون گاهی خیلی دیر می‌فهمه و می‌پذیره و قبول می‌کنه.
  5. زبون‌ش رو باید بلد باشین. چون اگه نخواد کاری بشه، کلی می‌تونه کرم بریزه! و اگه زبون‌ش رو بلد نباشین و به چشمِ «بچه صدا نده! برو عقب ماشین بشین، کمربندت رو هم ببند» باش رفتار کنین، دقیقاً تحریک‌ش می‌کنین که مانسترِ درونش رو فعال کنه و شما رو از زندگی بندازه!  این قضیه حتی می‌تونه جدای از سلامت روحی شما، به سلامت جسمی شما هم لطمه بزنه – هورمونی، سیستم ایمنی. (پیپر، و مقاله‌ ها). حتی تجربه‌ی شخصی من هم توی ژانویه ۲۰۲۲ (که همزمان هم کرونا گرفتم، هم یه مینی‌تراما بهم وارد شد و یه breakdown شدید داشتم) این بود که تا ۲ هفته نمی‌تونستم بفهمم که مشکلاتم جسمی هست یا روحی. و خودم هم حسابی گیج شده بودم!
            ​​

    خلاصه قدرت‌ش رو اصلاً دست‌کم نگیرین! ابداً. و با این‌که دقیقاً رقیب (opponent) شما نیست، اما گفته ی سان‌تسو توی
    Art of War رو در موردش یادتون نره.

بعد از این‌که با کودک درون آشنایی پیدا کردین، واقعاً نیاز دارین که اصطلاحاً «دَم»ش رو ببینین برای رسیدن به اهداف‌تون!

از یه سمت باید بتونین خیلی rewards-based در درجه‌ی اول برین جلو. و بهش کادو بدین برای پیشرفت و دستاورد داشتن!  (اینجا ۳۶۵ راه هست؛ ولی کودک درون شما ممکنه با مال بقیه متفاوت باشه.) حتی یه راه اینه که یه قلک (یا یه حساب Savings جدا) داشته باشین و یه مبلغ کاملاً قابل توجه (مثلاً ۱۰۰ دلار) به خودتون بدین اگه بتونین یه milestone از اون هدف رو بهش برسین. :)

دقت کنین که مهم‌تر از این پول جمع‌کردنه، خرج کردنش هست. و واقعاً این‌که این ۱۰۰ دلارها رو چه‌جوری تهش باش یه سفر خودتون رو مهمون کنین، یا برای خودتون یه عینک‌دودی بخرین، یا وسائل یه ورزش جدید رو بخرین، به‌اندازه‌ی همون پول درآوردن و کار اصلی و … مهم هست.

در سمت دیگه ولی باید حواس‌تون باشه که اگه کودک درون‌تون داره خیلی لوس می‌شه، یه‌جاهایی یه‌کم والدانه و دوستانه، خواسته‌هاش رو به تعویق بندازین. و یه‌سری چیزایی که می‌خواد و داره سرش مغز شما رو از داخل پاره می‌کنه (مخصوصاً اگه ببینه که بقیه دارن انجام می‌دن و شما عقب هستین!) بهش بگین که اگه مشقاش رو بنویسه، حتماً امشب آخرِ شب پیتزا سفارش می‌دین براش مثلاً. یا با این‌که الآن که این‌همه آنلاین-ویندو-شاپینگ دارین می‌کنین و تهش غم و غصه هست و انگیزه‌ای نیست، اگه این هفته ۵ روز برین جیم، حتماً آخر هفته براش اون پکِ سه‌تاییِ رژلب‌های استه‌لادر رو می‌خرین!

این‌که این جوایز یا تنیبه‌ها/تعویق‌ها چه نسبتی با تلاش داشته باشه رو خودتون بهتر می‌دونین. اما سعی کنین بهترین بالانس رو براش پیدا کنین. که هم حال خودتون خوب باشه تهش، هم به‌سمت جلو حرکت کنین!

۸.۲.۲.۶. عادت‌سازی

نکته‌ی نهایی هم اینه که اگه می‌خواین اهداف‌تون رو بتونین خیلی منظم دنبال کنین و نخواین هربار «تصمیم بگیرین» که برین و براشون کاری بکنین (اصطلاحاً relying on the willpower) باید اونا رو عادت بکنین. در غیر این‌صورت اگه بخواین هر روز روی «اراده» (willpower) اتکا بکنین، واقعاً خیلی خیلی کارِ ریسکی‌ای دارین می‌کنین!

برای عادت سازی (habit building) هم دو تا کتاب خیلی رایج هست: The Power of Habit و Atomic Habits. مطمئن هستم اینا به فارسی هم ترجمه شده و احتمالاً هر پادکست self-improvement رو که پیدا کنین (فارسی و انگلیسی) کلی در این باره حرف می‌زنه.

اینجا هم ۱۱ تا اپلیکشن داستان رو با اسکرین‌شات و توضیحات معرفی کرده. می‌تونین امتحان کنین و اگه چیزی توشون خوب بود، حتماً کامنت بذارین یا دایرکت بدین: https://collegeinfogeek.com/habit-tracker 

موفق باشین در اهداف‌تون!

Copyright © twitter.com/loc0m0 - 2021         

[a]شاید بد نباشه درباره سافت اسکیل ها حرف زد اینجا. اینکه سینیوریتی خیلی وابسته است به مهارت های مرتبط با کار با آدم ها. اینکه دید چقدر می تونه مهم باشه.

[b]شاید بد نیست اشاره کنیم که برنامه نویسی خرحمالی هم داره. مثل هر کار دیگه ای.

[c]این منتورشیپ فنی باقی می مونه؟ یعنی ازش لیدرشیپ انتظار نمیره؟ مثلا در زمینه سافت اسکسیل ها؟ اون موارد بر عهده شخص دیگه ایه؟

[d]شاید بد نباشه در مورد تشخیص بدهی فنی و تخمین هزینه اش هم صحبت کرد. موردیه که خیلی بهش توجه نمیشه.

[e]بحث رهبری فرآیند collaboration اینجا جایی داره؟

[f]قاعدتا این کار وابسته به سینیوریتی تیم داره یعنی هم زمان با توانمند شدن تیم شما کم کم از نقش یه دایه (مامان زیادی دلسوز) تبدیل میشی به مدیر اضافه (تون بین هم فاز های متفاوتی هست)

[g]من این موقع ها درباره کتاب تفکر کند و سریع آقای کانمن صحبت می کنم. قدم اول حل مساله برای متخصصین تشخیص اینه که آیا مساله توی حیطه دانش دامنه اشون هست یا نه. گاهی لازمه برای حل مساله و رسیدن به گزینه های راه حل collaboration  انجام بشه. شاید بد نباشه درباره بحث مقایسه از لحاظ هزینه و فایده بیشتر شفاف سازی بشه.

[h]اولویت بندی از جمله مواردیه که خیلی هامون توش صعف داریم. شاید بد نباشه در مورد تکنیک های اولویت بندی و مثلا نمودار ABC توضیح بدیم.

اینکه با بهرهوری بالایی از نردبون بالا بری برای موفقیت لازمه ولی کافی نیست. برای اطمینان از موفقیت باید مطمین بشی که نردبون رو به دیوار درستی تکیه دادی.

این مساله چه توی توسعه محصول و چه تو توسعه زندگی صادقه.

[i]احتمالا در مورد نحوه کارکرد اعتماد به نفس و توانایی و رابطه اشون در برنامه نویسی هم و کلا کاری های مشابه باید توضسح بدیم.

https://s3.amazonaws.com/viking_education/web_development/blog/coding_is_hard_confidence_competence.png

و اینکه این یه چرخه تکرار شوند است.

[j]توانایی درک و حل مساله هم مورد بعدی که خیلی وقت ها درک و روال درستی نداره.

تفاوت فضای مساله و فضای جواب و احیانا بحث درک هر سمت درگیر در مساله برای حلش.

کتاب پیشنهادی

https://www.goodreads.com/book/show/1044831.Are_Your_Lights_On_

Partial Contents

Part 1: What is The Problem?

1. A Problem

2. Peter Pigeonhole Prepared A Petition

3. What's Your Problem?

Part 2: What is The Problem?

4. Billy Brighteyes Bests The Bidders

5. Billy Bites His Tongue

6. Billy Back To The Bidders

Part 3: What is The Problem Really?

7. The Endless Chain

8. Missing The Misfit

9. Landing On The Level

10. Mind Your Meaning

Part 4: Whose Problem Is It?

11. Smoke Gets In Your Eyes

12. The Campus That Was All Spaced Out

13. The Lights At The End Of The Tunnel

Part 5: Where Does It Come From?

14. Janet Jaworski Joggles A Jerk

15. Mister Matczyszyn Mends The Matter

16. Make-Works And Take-Credits

17. Examinations And Other Puzzles

Part 6: Do We Really Want To Solve It?

18. Tom Tireless Tinkers With Toys

19. Patience Plays Politics

20. A Priority Assignment

[k]_Marked as resolved_

[l]_Re-opened_