تو این پست میخوام در مورد نکاتی که خوبه موقع انتخاب محل کار و شروع به کار حواستون بهش باشه صحبت کنم. در مورد این که چرا کار خوبه؟ و چرا تحصیل کنارش هم ضروریه توی دو تا پست قبلی صحبت کردم. صحبتهایی که میکنم در مورد کار در یک شرکت نرمافزاری هستش و لزوماً در حوزههای دیگر صادق نیست.
اولین چیزی که باید بهش فکر کنید اینه که چقدر میخواید روی کارتون وقت بذارید. منظور از ساعتهایی که در ادامه ذکر شده ساعت مفید هستش که شامل مواردی مثل جلسه، صحبت با افراد مختلف در مورد مسائل کاری و کد زدن میشه و شامل مواردی مثل ناهار و نماز و استراحت نمیشه.
افراد زیادی هستند که بعد از شروع به کار، کمکم از فضای دانشگاه فاصله میگیرند و درسشون به شدت افت پیدا میکنه و کامل غرق در کار شرکت میشن. این حالت بسیار خطرناک هستش، چون ممکنه از نظر دانش فنی رشد پیدا نکنند و اگر به هر دلیلی از شرکت جدا بشن، به پوچی برسند و هیچ سرمایهی مادی یا معنوی برای ادامه نداشته باشند.
اولین محل کار و اولین تیمی که توش قرار خواهید گرفت یکی از مهمترین عوامل در مسیر رشدتون خواهد بود. شما برای اولین بار تعاملات کاری و فرایندهای مهندسی نرمافزار رو در این تیم تجربه خواهید کرد. کیفیت کدتون در بهترین حالت برابر با کیفیت کد تیمتون میشه و تصویر شما از یک تیم نرمافزاری ایدهآل در همون تیم شکل میگیره. اگر تیمتون فیکس کردن باگ روی سرور رو یک فرایند عادی و روتین ببینه، این ذهنیت برای شما هم ایجاد میشه و اگر تیمتون هیچ مستندسازی انجام نده، شما هم مستندسازی رو کاری بیهوده تلقی میکنید. برای همین خیلی مهمه که انتخاب هوشمندانه و درستی داشته باشید. پارامترهایی که خوبه بهشون توجه کنید:
دوراهی که ممکنه برای خیلی از افراد پیش بیاد اینه که به یک تیم کوچیک که تازه شروع شده ملحق بشن یا به یک شرکت بزرگ که موفقتیش رو اثبات کرده و پایدارتر هستش و یا حتی شرکت خودشون رو تاسیس کنن! من با قاطعیت میگم که شروع به کار در یک شرکت بزرگ مفیدتر از یک استارتاپ نوپا هستش. بذارید فضای یک استارتاپ رو براتون ترسیم کنم:
شما عضو یک شرکت ۱۰ نفرهی نرمافزاری شدید که در حال توسعه وبسایت 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 کردن استارتاپ در پادکست و کتابشون میزنن تشبیه جالبی در این مورد دارند: وقتی که در یک استارتاپ کار میکنید شما شبیه دزدان دریایی کار میکنید؛ قانونها رو راحت زیر پا میذارید، خیلی سریع تغییر مسیر میدید و حاضرید ریسک بالایی رو بپذیرید تا بتونید از رقبا کاربر بدزدید و رشد کنید اما وقتی در یک شرکت بزرگتر مشغول به کار هستید مثل یک ناوگان عمل میکنید؛ از قوانین پیروی میکنید، در راستای استراتژیهای بلندمدت شرکت کار میکنید و سعی میکنید کاربرهایی که جذب کردید رو حفظ کنید. حالا شما باید انتخاب کنید که در ابتدا یک دزد دریایی باشید یا سرباز ناوگان. به نظر من تبدیل شدن از یک سرباز ناوگان به دزد دریایی راحتتر از برعکسش هست و برای شروع میتونه موقعیت مناسبتری باشه.
چند تا توصیهی کلی که خوبه تو ذهنتون باشه: