چرا کد زدن دیگه کافی نیست؟! (قسمت هفتم)

پیش‌نوشت: در صورتی که هنوز قسمتهای قبلی رو نخوندید، به انتهای قسمت اول مراجعه کنید.قسمت هفتم: شرکت کوچک، شرکت متوسط، یا شرکت بزرگ؟تجربه شما به عنوان برنامه‌نویس به شدت وابسته به نوع شرکتیه که در اون کار می‌کنید. شرکتهای کوچک، متوسط و بزرگ برای شما تجربه کاری خیلی متفاوتی به جا می‌ذارند. بنابراین لازمه که آگاهانه تصمیم بگیرید که دوست دارید توی چه نوع شرکتی کار کنید.نه تنها اندازه شرکت بر روی تجربه کاری شما اثر می‌ذاره، بلکه هر شرکت هم فرهنگ کاری منحصر به خودشو داره که می‌تونه تاثیر شدیدی روی میزان رضایت شغلی شما بذاره. بنابراین مهمه که قبل از شروع به کار با دید باز در این مورد تصمیم بگیرید. شاید در ابتدا همه آدمها حقوق و مزایا رو به عنوان مهمترین عامل انتخاب یک شغل در نظر بگیرند اما در بلندمدت محیط کاری تاثیر به مراتب بیشتری از حقوق، روی رضایت شما می‌ذاره.در این قسمت شرکتهای کوچک،‌ متوسط و بزرگ رو با هم مقایسه می‌کنیم و در مورد مزایا و معایب هر کدوم حرف می‌زنیم.شرکتهای کوچکبیشتر شرکتهای کوچک استارتاپ هستند و ذهنیت استارتاپی دارند. این ذهنیت شامل تلاش برای رشد سریع و انجام هر کاری که از دست هر کسی بر میاد برای به سود رسوندن شرکته.برنامه‌نویسی برای شرکتهای کوچک مستلزم اینه که بر حسب لزوم شما به هر لباسی در بیایید و مسئولیتهای مختلفی رو بر عهده بگیرید. چون تعداد کارکنان کمه، هر کارمند باید مسئولیتهای بیشتری رو به عهده بگیره. شما احتمالا فقط کد نمی‌زنید بلکه در صورت لزوم ممکنه لازم باشه که یه سرور راه بندازید یا اینکه توی تست پروژه مشارکت کنید. اگه آدمی هستید که اهل چالشید و از کارهای متنوع استقبال می‌کنید احتمالا چنین محیط کاری براتون هیجان‌انگیز باشه.توی یه شرکت کوچک، اثر کار شما بیشتر دیده میشه. این می‌تونه هم خوب باشه هم بد. اگه آدمی هستید که دوست داره توی جمعیت گم بشه و به جز کار خودش به چیز دیگه‌ای کار نداشته باشه، احتمالا کار کردن توی یه شرکت کوچیک برای شما جذاب نیست چون پنهان شدن از نگاه دیگران غیرممکنه. اما اگه کسی هستید که دوست دارید کارتون دیده بشه و تو چشم باشید، احتمالا شرکت کوچیک بهترین جا برای شماست. وقتی تعداد کارکنان کمه، کار هر کس اثر مستقیم و واضحی روی محصول نهایی شرکت می‌ذاره. بنابراین موفقیتهای شما خیلی خوب دیده میشه اما شکست‌هاتون هم همینطور!شرکتهای کوچک پایداری و امنیت شغلی کمتری دارند اما در بلند مدت پاداش بیشتری به همراه دارند. احتمال زیادی وجود داره که یه شرکت کوچک شکست بخوره و نتونه به موفقیت برسه و یا منحل بشه اما در صورتی که بتونه بر مشکلات غلبه کنه و به سودآوری برسه شما به عنوان یکی از کارمندان اولیه که شرکت رو به موفقیت رسوندید احتمالا جایگاه خیلی بالاتری خواهید داشت. مسیر دستیابی به ارتقا شغلی در یک شرکت بزرگ خیلی سخت‌تره.گاهی برنامه‌نویس‌ها بدون دریافت دستمزد یا با دستمزد خیلی کم وارد همکاری با یه استارتاپ میشن و به جای دستمزدشون سهام شرکت رو دریافت می‌کنند به امید روزی که شرکت رشد کنه و سهام‌شون ارزشمند بشه اما چنین معامله‌ای خیلی ریسکیه و توصیه نمیشه. تنها در صورتی وارد یه استارتاپ کوچک بشین که به چالشهای درون اون استارتاپ علاقه‌مند هستید و دوست دارید محصولی رو از ابتدا بسازید و رشدش رو ببینید.شرکتهای متوسطبیشتر شرکتها اندازه متوسط هستند. بنابراین احتمالش زیاده که همین الان توی یکی از این شرکتها باشید یا در آینده وارد یکی‌شون بشید. شرکت متوسط، شرکتیه که مدتی از تاسیسش می‌گذره و در حال حاضر کسب و کار سودآوری داره و می‌تونه امور خودش رو اداره کنه اما در عین حال تکانه لازم برای تبدیل شدن به یکی از غولهای دنیا رو نداره.در شرکتهای متوسط معمولا ساز و کارها کمی مشخص‌تر تعیین شده و حدود وظایف هر کس معلومه. پایداری و امنیت شغلی بیشتری هم وجود داره. من حتی معتقدم پایداری شغلی توی شرکتهای متوسط از شرکتهای بزرگ هم بیشتره چون شرکتهای بزرگ معمولا گاه به گاه درگیر تعدیل نیروی گسترده میشن یا اینکه ساختارهای سازمانی رو به شکل کلی تغییر میدن. اتفاقی که در شرکتهای متوسط کمتر می‌افته. اگه امنیت شغلی براتون مهمه، احتمالا کار کردن توی یه شرکت متوسط براتون بهترین انتخابه.توی یه شرکت متوسط معمولا همه چیز کندتره، با این وجود اینجا هم کمی سخته که خودتون رو لای جمعیت پنهان کنید. کارهای شما احتمالا نه باعث میشه شرکت اوج بگیره و نه اینکه ورشکست بشه، اما احتمالا مورد توجه قرار می‌گیره. در یه شرکت متوسط معمولا آهسته و پیوسته بودن باعث برد میشه. در استارتاپها و شرکتهای کوچک آهنگ سریع رشد شرکت، باعث تصمیمات سریع و استفاده از لبه تکنولوژی میشه اما شرکتهای متوسط معمولا با ریسک کردن بیش از حد مخالفند. بنابراین معمولا فرایندها کندتره. اگه شما آدمی هستید که دوست دارید همیشه از جدیدترین تکنولوژی‌ها استفاده کنید، احتمالا راضی کردن رئیس‌تون به این کار خیلی سخت خواهد بود چون توی شرکتهای متوسط مدیریت ریسک سختگیرانه تره.شرکتهای بزرگشرکتهای بزرگ خیلی جالبند. همه‌شون قوانین و سازوکارهای به شدت مشخص و از پیش تعیین شده‌ای دارند اما هر کدوم به شیوه خودشون که با شرکتهای دیگه متفاوته. شرکتهای بزرگ معمولا فرهنگ سازمانی خیلی عمیقی دارند که روی همه جنبه‌های کار تاثیر می‌ذاره و مدیرعاملی که شما به عنوان یه کارمند رده پایین ممکنه هیچ‌وقت باهاش ملاقات نکنید.احتمالا اولین چیزی که توجه شما رو بعد از شروع به کار در یک شرکت بزرگ به خودش جلب می‌کنه، میزان سازوکارها و بوروکراسی برای انجام همه کارهاست. شما به عنوان یه کارمند در یک شرکت بزرگ موظفید از قواعد و دستورالعمل‌های زیادی پیروی کنید. به همین دلیل آدمهای ماجراجو و شورشی در شرکتهای بزرگ مورد استقبال قرار نمی‌گیرند. اما اگه آدمی هستید که با دستورالعمل‌ها و رویه‌ها راحتید، احتمالا از کار کردن توی یه شرکت بزرگ لذت می‌برید.یه چیز خوب در مورد کار کردن در یک شرکت بزرگ، فرصتهای کاری خیلی خوبیه که باهاش مواجه میشید. هم از نظر بزرگی پروژه‌ها که در جای دیگه‌ای بعیده باهاشون مواجه بشید و هم از نظر فرصتهای آموزشی که شرکتهای بزرگ معمولا برای کارکنانشون فراهم می‌کنند. شرکتهای بزرگ معمولا پروژه‌های بزرگ و پر سر و صدایی رو انجام میدن که فرصت کار کردن توی چنین پروژه‌هایی در شرکتهای کوچک و متوسط معمولا پیش نمیاد. البته شما به عنوان یک نفر احتمالا تاثیر کوچکی توی محصول نهایی دارید اما فرصت حضور در تیمی رو دارید که محصول بزرگی رو به جهان عرضه می‌کنه.برای بعضی از برنامه‌نویسان کار کردن توی یه شرکت بزرگ به شدت فرساینده و حوصله‌سر بره چون تاثیرشون توی محصول نهایی خیلی کمه. اگه از اون برنامه‌نویسانی هستید که می‌خواهید روی تمام جنبه‌های محصول نظارت مستقیم داشته باشید احتمالا کار کردن توی یه شرکت بزرگ براتون چندان جذاب نیست.توی یه شرکت بزرگ خیلی ساده میشه از نگاه‌ها پنهان شد. من همکاران زیادی توی شرکتهای بزرگ داشتم که برای روزهای متوالی هیچ کار مهمی برای انجام دادن نداشتند تا زمانی که شرکت یه تعدیل نیروی سراسری انجام داد. البته بعضی‌ها چنین وضعیتی رو دوست دارند چون بهشون فرصت میده روی پروژه‌های مورد علاقه‌شون کار کنند و کاری رو که براشون مهمه انجام بدن.نکته آخر در مورد شرکتهای بزرگ: سیاست! خوشتون بیاد یا نه بسیاری از روابط توی شرکتهای بزرگ بر اساس بازی‌های سیاسی پیش میره. درست مشابه یه دولت بزرگ. شاید شما آدمی باشید که سرتون توی کار خودتونه و از سیاست بازی فاصله بگیرید اما هیچ تضمینی وجود نداره که همکارانتون هم جدا از این سیاست‌بازی‌ها باشند و به همین علت شما از اثرات سیاست مصون نیستید. همچنین اگه دوست دارید که پله‌های ترقی رو توی یه شرکت بزرگ طی کنید باید بدونید که چاره‌ای جز یادگیری اصول سیاست ندارید. اما اگه آدمی هستید که سیاسی بازی رو دوست ندارید احتمالا بهتره که قید کار کردن توی یه شرکت بزرگ رو بزنید و توی یه شرکت کوچک یا متوسط با ساختار مدیریتی تخت (flat) کار کنید.شرکتهای نرم‌افزاری در مقابل شرکتهایی با توسعه دهندگان نرم‌افزارفاکتور مهم دیگه‌ای که علاوه بر اندازه شرکت باید در نظر بگیرید اینه که آیا اون شرکت اساسا یه شرکت نرم‌افزاریه که کسب و کارش بر روی تولید نرم‌افزار بنا شده یا یه شرکته که فقط بخشی از سرویسش وابسته به نرم‌افزاره و کسب و کار اصلی شرکت توسعه نرم‌افزار نیست.شرکتهایی که کسب و کار اصلی‌شون تولید نرم‌افزار نیست و فقط برای قسمتی از سیستم‌شون نیازمند برنامه‌نویس هستند رفتار خیلی متفاوتی با برنامه‌نویسان‌شون نسبت به شرکتهایی دارند که اساسا کار تولید نرم‌افزار انجام میدن. وقتی کسب و کار اصلی شرکت تولید نرم‌افزار نیست احتمالا برنامه‌نویسان در اون مجموعه جایگاه و احترام بالایی ندارند و صرفا بخش کوچکی از سازمان هستند. در ضمن احتمالا الگوها و قواعد برنامه‌نویسی سفت و سختی هم در این شرکتها وجود نداره.از طرف دیگه شرکتهایی که کسب و کارشون تولید نرم‌افزاره احترام و جایگاه بالاتری برای برنامه‌نویسان‌شون قائل هستند و ارزش بالاتری برای نیروهایی که استخدام می‌کنند قائل هستند. البته این به اون معنا نیست که محیط کار این شرکتها حتما بهتره اما معمولا خیلی متفاوته.همچنین شرکتهای نرم‌افزاری احتمالا از تکنولوژی‌های نرم‌افزاری جدیدتر و به‌روزتری نسبت به سایر شرکتها استفاده می‌کنند. اگه براتون مهمه که روی جدیدترین فناوری‌ها کار کنید، شاید بهتر باشه شرکتی رو انتخاب کنید که کارش تولید نرم‌افزاره.چنین تفاوتی معمولا وقتی خودش رو خیلی نشون میده که بخواهید از الگوهای چابک (Agile) در توسعه نرم‌افزار استفاده کنید. در شرکتهای نرم‌افزاری معمولا چنین الگوهایی ساده‌تر پذیرفته میشن اما در شرکتهایی با تنها یک تیم نرم‌افزار، معمولا پیاده‌سازی این الگوها خیلی سخت‌تره چون باید از بالا به پایین اعمال بشن اما ممکنه سایر بخشهای شرکت دوست نداشته باشند (صرفا چون برنامه‌نویسان اینجوری می‌پسندند) خودشون رو با این الگوها وفق بدن.با دقت انتخاب کنیداینها فقط یه سری توصیه کلی بودند که به شما کمک کنند انتخاب درستی داشته باشید اما در نهایت به یاد داشته باشید که هر شرکتی فرهنگ و راه و روش خودش رو داره و خیلی از چیزها رو نمیشه به صورت کلی بیان کرد. ایده خوبیه که همیشه قبل از کار کردن توی یه شرکت با یکی از نیروهایی که در اون شرکت مشغول به کاره صحبت کنید و سوالاتتون رو ازش بپرسید تا درک درست‌تری نسبت به فرهنگ کاری اون شرکت به دست بیارید.اگه مایل به دنبال کردن ادامه این مجموعه هستید، من رو دنبال کنید. مشتاقانه منتظر نظرات شما هستم.قسمت بعدی: چطور از نردبان ترقی بالا بریم؟