سلام،
این سوال رو خیلی از من پرسیده میشه، به خاطر همین تصمیم گرفتم با اجازه فرستنده سوال، یک بار پاسخ بهش بدم.
از نظر من، داشتن دانش توی هر زمینه ای بد نیست و حتما توی پیدا کردن کار کمک ما خواهد کرد. ولی نکته مهمی که دارم اینه که بیایم و یک تقسیم بندی خوب داشته باشیم.
تقسیم بندی ای که من پیشنهاد میدم شامل دو بخش کلی هست :
1. مفاهیم و ابزار های بنیادی.
این دسته از مفاهیم و ابزار ها مثل حروف الفبا، برای یادگیری هستند، بدون اونها توسعه دانش نه اینکه ممکن نباشه، ولی قطعا سخت خواهد بود. مثلا شما برای یادگیری ریاضیات مستقیما به زبان فارسی نیاز ندارید، ولی برای یادگیری بهتر مجبورید بخونید، پس به صورت غیر مستقیم به الفبای فارسی نیاز دارید. بخشی از مفاهیم و ابزار های که ما استفاده می کنیم از همین دسته هستند. مثلا :مفاهیم برنامه نویسی، OOP، git، الگوریتم ها، ساختمان داده ها، اصول اولیه پایگاه داده، اصول اولیه وب، اصول اولیه سیستم عامل و ... . به اعتقاد من هرچه قدر به این مفاهیم بیشتر مسلط بشید با تغییر تکنولوژی و ابزار ها غافلگیر نخواهید شد و به سرعت می تونید اونها رو یاد بگیرید.
2. ابزار ها، مفاهیم و فریم ورک های جانبی.
این دسته از ابزار ها و مفاهیم روی مفاهیم پایه و بنیادی شکل میگیرند و برای بهبود مشکلی راه حل جدیدی ارائه میدن، مثلا DDD برای حل آدرس کردن پیچیدگی در دامین پیچیده راه حل ارائه میده، یا Microservice ها، یکی از مشکلاتی رو که پاسخ میدن برای حل مقیاس پذیری هست.
دسته دوم خیلی تغییرات در اونها زیاده و همیشه یکی جدیدش داره میاد. مثلا فریم ورک ها و یا لایبرری هایی که روی JS معرفی میشن.
حالا بخوام جواب این دوستمون رو بدم، میگم که تلاش کنید تا بیشتر تایمتون رو روی مفاهیم و ابزار های بنیادی صرف کنید ولی از ابزار ها و مفایم جانبی هم غافل نشید. برای پیدا کردن کار توی شرکت های کوچک و متوسط شما کافیه نیاز رو درست درک کنید و با همون ابزار ها و مفایم پایه بهش پاسخ بدید.
آخرین نکته هم این که خبر خوب اینه که توی شرکت های بزرگ ها هم همین کار رو باید بکنید ! فقط درصدی هم ابزار ها و مفاهیم جانبی لازم میشه.
به صورت کلی منطقی هم هست، توی شرکت های کوچک اندازه محصول طوری نیست که لازم باشه شما با k8s به صورت حرفه ای کار کنید، شاید کلا اصلا وجود هم نداشته باشه. یا انقدر محصول بزرگ باشه که مقیاس پذیری مساله مهمی باشه.
راستش خودم بیشتر فکر می کنم که توی شرکت های بزرگ، مهندس نرم افزار خوب باید تمرکزش روی تولید محصولی باشه که در طول زمان قابل نگهداری باشه و بشه بهبودش داد، برای همین شاید تمرکز روی سادگی- هم در فکر کردن، هم در طراحی، هم در عملیات- یکی از مهمترین حوزه هایی هست که میتونید براش وقت خوبی صرف کنید.
ارادت.
پ.ن : شاید عنوان " ابزار ها، مفاهیم و فریم ورک های جانبی" خیلی دقیق و مناسب نباشه، ولی کلمه بهتری پیدا نکردم. اگر پیشنهادی داشتید خوشحال میشم مطرح کنید.
Post #32
1.36K
- ❤ 11