کار در کنار تحصیل - قسمت ۳ - توصیه‌هایی برای شروع

تو این پست می‌خوام در مورد نکاتی که خوبه موقع انتخاب محل کار و شروع به کار حواستون بهش باشه صحبت کنم. در مورد این که چرا کار خوبه؟ و چرا تحصیل کنارش هم ضروریه توی دو تا پست قبلی صحبت کردم. صحبت‌هایی که می‌کنم در مورد کار در یک شرکت نرم‌افزاری هستش و لزوماً در حوزه‌های دیگر صادق نیست.چند ساعت می‌خواید کار کنید؟اولین چیزی که باید بهش فکر کنید اینه که چقدر می‌خواید روی کارتون وقت بذارید. منظور از ساعت‌هایی که در ادامه ذکر شده ساعت مفید هستش که شامل مواردی مثل جلسه، صحبت با افراد مختلف در مورد مسائل کاری و کد زدن می‌شه و شامل مواردی مثل ناهار و نماز و استراحت نمی‌شه.کمتر از ۵۰ ساعت در ماه: کمتر شرکتی حاضره که کمتر از این مقدار رو بپذیره و این مقدار برای خودتون هم مفید نیست. در این حالت حدوداً دو روز در هفته کار می‌کنید و این مقدار برای مطلع موندن از اتفاقات شرکت، تعاملاتتون با همکاران، و انجام دادن یک بخش جدی از کار کافی نیست. پس عملاً این گزینه نشدنی هست.بین ۷۰ تا ۹۰ ساعت در ماه: این مقدار برای درگیر شدن به صورت جدی در یک پروژه نرم‌افزاری کافی هستش و اکثر شرکت‌هایی که افراد رو به صورت پاره‌وقت می‌پذیرن، همین حدود رو به عنوان حداقل میزان کارکرد تعیین می‌کنن. اگر سعی کنید تعادل زمان رو بین دانشگاه و کارتون برقرار کنید احتمالاً خیلی بیشتر قدر وقتتون رو می‌دونید و زمانتون رو بهتر مدیریت می‌کنید.بیشتر از ۹۰ ساعت در ماه: در این حالت سرعت پیشرفتتون در شرکت نسبت به حالت قبل بیشتر خواهد شد و شرکت هم رضایت بیشتری خواهد داشت. اما احتمالاً نمی‌تونید درس‌های دانشگاه رو هم با کیفیت خوبی بگذرونید.افراد زیادی هستند که بعد از شروع به کار، کم‌کم از فضای دانشگاه فاصله می‌گیرند و درسشون به شدت افت پیدا می‌کنه و کامل غرق در کار شرکت می‌شن. این حالت بسیار خطرناک هستش، چون ممکنه از نظر دانش فنی رشد پیدا نکنند و اگر به هر دلیلی از شرکت جدا بشن، به پوچی برسند و هیچ سرمایه‌ی مادی یا معنوی برای ادامه نداشته باشند.انتخاب محل کاراولین محل کار و اولین تیمی که توش قرار خواهید گرفت یکی از مهم‌ترین عوامل در مسیر رشدتون خواهد بود. شما برای اولین بار تعاملات کاری و فرایندهای مهندسی نرم‌افزار رو در این تیم تجربه خواهید کرد. کیفیت کدتون در بهترین حالت برابر با کیفیت کد تیمتون می‌شه و تصویر شما از یک تیم نرم‌افزاری ایده‌آل در همون تیم شکل می‌گیره. اگر تیمتون فیکس کردن باگ روی سرور رو یک فرایند عادی و روتین ببینه، این ذهنیت برای شما هم ایجاد می‌شه و اگر تیمتون هیچ مستندسازی انجام نده، شما هم مستندسازی رو کاری بیهوده تلقی می‌کنید. برای همین خیلی مهمه که انتخاب هوشمندانه و درستی داشته باشید. پارامترهایی که خوبه بهشون توجه کنید:چقدر اعضای اون شرکت، کار کردن در اونجا رو به شما پیشنهاد می‌کنند: سعی کنید این سوال رو از نیروهای قدیمی‌تر شرکت بپرسید. افرادی که جدیدتر اومدند هنوز در ماه‌عسل به سر می‌برند و درک کاملی ندارند.چقدر به رشد شما در اون شرکت بها داده می‌شه: چه کسی شما رو ارزیابی می‌کنه و بهتون فیدبک می‌ده؟ آیا منتور دارید؟ چقدر در صورت تمایل به یادگرفتن موضوعات جدید از طرف شرکت پشتیبانی می‌شوید؟چقدر کارها گروهی یا فردی انجام می‌شن: آیا شما فقط در کنار چند برنامه‌نویس دیگه قرار خواهید گرفت و یک پروژه رو به تنهایی انجام خواهید داد یا یک تیم هستید که روی یک محصول به صورت گروهی کار می‌کنید.شما چه تعهداتی نسبت به شرکت دارید و بالعکس: ممکنه که قراردادهای منصفانه‌ای از سمت شرکت برای شما تنظیم نشه و خوبه که با دقت قراردادها رو قبل از امضا مطالعه بکنید. چیزهایی از قبیل کارکردن در محصولات رقیب به مدت چند سال در این قراردادها رایج هستش اما ممکنه موضوعات دیگری هم در قرارداد ذکر شده باشه که ادامه‌ی کار شما رو سخت بکنه.استارتاپ یا شرکت بزرگ؟دوراهی که ممکنه برای خیلی از افراد پیش بیاد اینه که به یک تیم کوچیک که تازه شروع شده ملحق بشن یا به یک شرکت بزرگ که موفقتیش رو اثبات کرده و پایدارتر هستش و یا حتی شرکت خودشون رو تاسیس کنن! من با قاطعیت می‌گم که شروع به کار در یک شرکت بزرگ مفیدتر از یک استارتاپ نوپا هستش. بذارید فضای یک استارتاپ رو براتون ترسیم کنم:شما عضو یک شرکت ۱۰ نفره‌ی نرم‌افزاری شدید که در حال توسعه وبسایت beststartup.com هستند. تیم فنی ۶ نفر هستش و ۴ نفر دیگه درگیر بازاریابی و فروش محصول و تبلیغات و پشتیبانی هستند. با توجه به این که محصول هنوز پایدار نشده و مشتری خوبی نداره، اهمیت زیادی به کیفیت کد داده نمی‌شه و اولویت اول رسوندن feature های بیشتر به مشتریان و جذب مشتری هست. محصول بعد از یک ماه تغییر استراتژی می‌ده و باید feature هایی که نصفه زده شده رو رها کرد و بریم سراغ توسعه یه سری feature دیگه. چون تیم توسعه کوچیک هستش و نیازهای مشتریان زیاد، اکثر افراد تمام وقتشون رو روی توسعه‌ی وبسایت می‌ذارن و به ندرت پیش میاد که روی فرایندها و نحوه‌ی بهبود روند توسعه بحث بشه. چون هنوز مشتریان خیلی کمی دارید،‌ شما دغدغه‌ی مقیاس‌پذیر بودن کدتون رو نخواهید داشت و اولین راه‌حلی که به ذهنتون می‌رسه راه حل مناسبی خواهد بود. چون که کلاینت کارتون از تیم خدافظی کرده شما مجبور می‌شید نصفه و نیمه اندروید یاد بگیرید و یه سری امکانات رو به اپلیکیشن اندرویدتون اضافه کنید. یه خورده جلوتر برای بهبود وضعیت SEO وبسایتتون کمی هم SEO یاد می‌گیرید تا رتبه‌ی سایتتون در موتورهای جستجو بهتر بشه. بعد از ۶ ماه یک نفر میاد پیشتون و می‌گه که دمت گرم بابت این مدت و زحماتی که کشیدی و حقوقت ۱۰ درصد افزایش پیدا کرده اما شما نمی‌فهمید چه کاری رو خوب انجام دادید و کجا جای بهبود دارید.تبریک! شما در این مدت موضوعات متنوع و زیادی رو با کیفیت پایینی یاد گرفتید، چیزهایی که اکثرشون از جنس تکنولوژی بودند و نه فرایند و شاید بدون مشغول به کار شدن در شرکت و به صورت خودآموز هم می‌تونستید یادشون بگیرید. شما در این مدت یاد گرفتید که چطوری باید در یک استارتاپ ۱۰ نفره کار کرد. کیفیت کد شما متناسب با یک شرکت چند صد نفره نیست و خیلی از چیزهایی که یاد گرفتید در یک شرکت بزرگتر به کار نخواهند اومد. و اما فضای یک شرکت بزرگتر:شما عضو یک شرکت چندصد نفره شدید و در یک تیم ۱۰ نفره‌ی نرم‌افزاری که در حال توسعه موتور جستجوی وبسایت beststartup.com هستند مشغول به کار شدید. تیم back-end شش نفر هستش و ۴ نفر دیگه درگیر UI/UX، کلاینت و front-end هستند. در ابتدا شما wiki های پروژه رو می‌خونید و با پروژه و تکنولوژی‌ها آشنا می‌شید. چون که تمرکز این تیم روی موتور جستجو هستش شما باید کامل روی تکنولوژی‌هایی که این تیم استفاده می‌کنه عمیق بشید و با تک تک جزییاتش آشنا بشید. این تیم ۶ ماهی هستش که تشکیل شده و فرایند‌های نسبتاً پخته‌ای داره که شما طبق همون جلو می‌رید. فرایندهایی مثل code-review و deployment توی تیم جاافتاده هستش و شما به کمک اونها کدتون رو توسعه می‌دید. لیدر اون تیم در ابتدا منتور شما هستش و بعدش با شما جلسات منظم ست می‌کنه و بهتون در مورد عملکردتون بازخورد می‌ده. چون که beststartup.com در حال حاضر ۵ میلیون مشتری داره، شما باید حتماً مقایس‌پذیری، امنیت و کیفیت کد رو از همون ابتدا مد نظر قرار بدید. بعد از ۶ ماه فرایند ارزیابی افراد در کل شرکت اتفاق می‌افته و شما از همکارانتون فیدبک‌های مثبت و منفی می‌گیرید و در نهایت این فیدبک‌ها جمع‌بندی می‌شه و حقوقتون ۱۰ درصد زیاد می‌شه و نتیجه‌ی زحماتتون رو می‌بینید.تبریک! شما در این مدت، به خوبی با بعضی از فرایندهای مهندسی نرم‌افزار آشنا شدید، یک یا چند تکنولوژی رو به صورت عمیق و کاربردی یاد گرفتید و تجربیاتی کسب کردید که تنها در همچین محیطی می‌تونستید داشته باشید. شما در این مدت یاد گرفتید که چطوری باید در یک شرکت چند صدنفره کار کرد. چیزهایی که یاد گرفتید رو می‌تونید در صورت نیاز و اقتضای وقت در یک استارتاپ کوچیکتر استفاده کنید و احتمالاً در سایر شرکت‌های با مقیاس مشابه به دردتون می‌خوره.البته شما با این تجربیات فنی نمی‌تونید یک استارتاپ جدید بزنید و رشدش بدید. scale کردن یک شرکت در هر مرحله مهارت‌های به شدت متفاوتی نیاز داره که لزوماً یک فرد ثابت انجامش نخواهد داد. اگر شما تجربه‌ی scale کردن یک شرکت از ۱۰۰ به ۱۰۰۰ نفر رو داشتید... شما می‌تونید یک شرکت دیگر رو هم از ۱۰۰ به ۱۰۰۰ نفر بزرگ بکنید اما نمی‌تونید یک شرکت ۱۰ نفره رو ۱۰۰ نفره کنید و یا یک شرکت ۱۰۰۰ نفره رو ۱۰هزار نفره بکنید.آقای Reid Hoffman که یکی از co-founder های LinkedIn هستند و حرف‌های زیادی برای Scale کردن استارتاپ در پادکست و کتابشون می‌زنن تشبیه جالبی در این مورد دارند: وقتی که در یک استارتاپ کار می‌کنید شما شبیه دزدان دریایی کار می‌کنید؛ قانون‌ها رو راحت زیر پا می‌ذارید، خیلی سریع تغییر مسیر می‌دید و حاضرید ریسک بالایی رو بپذیرید تا بتونید از رقبا کاربر بدزدید و رشد کنید اما وقتی در یک شرکت بزرگتر مشغول به کار هستید مثل یک ناوگان عمل می‌کنید؛ از قوانین پیروی می‌کنید، در راستای استراتژی‌های بلندمدت شرکت کار می‌کنید و سعی می‌کنید کاربرهایی که جذب کردید رو حفظ کنید. حالا شما باید انتخاب کنید که در ابتدا یک دزد دریایی باشید یا سرباز ناوگان. به نظر من تبدیل شدن از یک سرباز ناوگان به دزد دریایی راحت‌تر از برعکسش هست و برای شروع می‌تونه موقعیت مناسب‌تری باشه.حرف آخرچند تا توصیه‌ی کلی که خوبه تو ذهنتون باشه:سعی کنید احساس تعلّق به پروژه و کارتون داشته باشید. فکر نکنید که من دارم برای یکی دیگه کد می‌زنم تا اون پول دربیاره و من یه کارمند ساده‌ام. پروژه‌تون هر چقدر هم مزخرف باشه و کار گل داشته باشه، باز هم تجربه‌ی ارزشمندی براتون خواهد بود.سعی کنید مسئولیت‌های جدید قبول کنید و ایده‌های مختلف رو تو کارتون تست کنید تا بتونید تجربه‌های مختلفی کسب کنید.منتظر نباشید تا کسی به شما راه و چاه رو نشون بده، اگر خودتون به صورت فعالانه دنبال پیشرفت نباشید خیلی آهسته پیشرفت خواهید کرد.به فکر پیشرفت خودتون باشید و نه پیشرفتتون توی شرکت. به جای فکر کردن به ارتقاء و افزایش حقوق به فکر بهبود مهارت‌های مهندسی و تاثیرگذاریتون باشید. با فرض این که مدیران محل کارتون از شعور کافی برخوردار هستند، پیشرفت خودتون همواره با پیشرفتتون در شرکت همراه خواهد شد و شما مطمئن هستید که در شرکت‌های دیگر هم می‌تونید کار خوبی پیدا کنید.