آیا تا به حال مجبور شده‌اید یک وکیل استخدام کنید؟ اولین کاری که انجام دادید چه بود؟ اگر هرگز وکیلی استخدام نکرده‌اید، فکر می‌کنید اولین قدم شما چه خواهد بود؟ اگر حدس زده‌اید که ابتدا باید نوع وکیل مورد نیازتان را مشخص کنید، درست حدس زده‌اید. شما نمی‌خواهید به‌طور تصادفی هر وکیلی را انتخاب کنید؛ بلکه باید وکیلی را بیابید که در زمینه‌ی مشکل شما تخصص داشته باشد. وکلا در حوزه‌ی کاری خود تخصص دارند و معمولاً از همان ابتدا این موضوع را روشن می‌کنند. وکلای کیفری، وکلای تصادفات، وکلای املاک و مستغلات و بسیاری دیگر وجود دارند. شما برای یک مشکل مالیاتی یا ملکی به سراغ یک وکیل طلاق نخواهید رفت، بنابراین تخصص بسیار مهم است. یک وکیل پس از فارغ‌التحصیلی از دانشکده‌ی حقوق تصمیم نمی‌گیرد که صرفاً “وکیل” باشد، اما متأسفانه بسیاری از توسعه‌دهندگان نرم‌افزار دقیقاً همین کار را در حرفه‌ی خود انجام می‌دهند.

اهمیت تخصص‌گرایی

توسعه‌دهندگان نرم‌افزار زیادی وجود دارند که هیچ تخصص مشخصی ندارند. در واقع، بیشتر توسعه‌دهندگان نرم‌افزار تخصص خود را تنها با زبانی که در آن برنامه‌نویسی می‌کنند، تعریف می‌کنند. شما اغلب می‌شنوید که کسی می‌گوید: “من یک توسعه‌دهنده‌ی C# هستم” یا “من یک توسعه‌دهنده‌ی Java هستم.” این نوع تخصص خیلی کلی است و اطلاعات کافی درباره‌ی نوع کاری که می‌توانید انجام دهید ارائه نمی‌دهد. یک زبان برنامه‌نویسی فقط ابزاری است که شما برای انجام کار خود استفاده می‌کنید.

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

تعریف تخصص‌های مشخص‌تر

اگر معرفی خود به‌عنوان یک توسعه‌دهنده‌ی C# یا Java کافی نیست، پس چه چیزی مناسب‌تر است؟ پاسخ این پرسش ساده نیست، زیرا بستگی به این دارد که چه هدفی دارید و اندازه‌ی بازار در آن حوزه چقدر است. برای مثال، در اوایل دوران حرفه‌ای خود، من به‌عنوان توسعه‌دهنده‌ی نرم‌افزاری که در زمینه‌ی چاپگرها و زبان‌های چاپگر تخصص دارد، معرفی می‌کردم. این یک تخصص بسیار خاص بود و تنها تعداد معدودی از کارفرمایان بزرگ وجود داشتند که می‌توانستم در آنجا مشغول به کار شوم. اما تصور کنید که یک شرکت تولیدکننده‌ی چاپگر چقدر سخت می‌توانست توسعه‌دهنده‌ای را پیدا کند که در این زمینه تخصص داشته باشد. همین موضوع باعث شده بود که من برای تعداد کمی از کارفرمایان بالقوه بسیار ارزشمند باشم.

قانون تخصص‌گرایی

هرچه در یک حوزه‌ی خاص تخصص بیشتری پیدا کنید، فرصت‌های بالقوه‌ی کمتری خواهید داشت، اما احتمال دستیابی به همان فرصت‌ها بسیار بیشتر خواهد شد. برای مثال، فرض کنید که در یک شهر بزرگ به دنبال شغل هستید و یک توسعه‌دهنده‌ی Java هستید. به‌طور کلی، تقاضای بالایی برای توسعه‌دهندگان Java وجود دارد. حال اگر تصمیم بگیرید که در توسعه‌ی وب با Java تخصص پیدا کنید، ممکن است ۵۰ درصد از فرصت‌ها را از دست بدهید، اما هنوز هم فرصت‌های زیادی خواهید داشت. با تخصصی‌تر شدن، تعداد فرصت‌ها کاهش می‌یابد، اما احتمال دستیابی شما به آن فرصت‌ها افزایش پیدا می‌کند.

انواع تخصص‌های موجود برای توسعه‌دهندگان نرم‌افزار

انواع مختلفی از تخصص‌های توسعه‌ی نرم‌افزار وجود دارد. برخی از متداول‌ترین حوزه‌های تخصصی عبارت‌اند از:

  • توسعه‌ی وب: متخصص در یک فریم‌ورک یا استک خاص مانند ASP.NET MVC یا Spring Boot.
  • سیستم‌های توکار (Embedded Systems): توسعه‌ی نرم‌افزار برای دستگاه‌های سخت‌افزاری خاص.
  • سیستم‌عامل خاص: توسعه‌ی نرم‌افزار برای سیستم‌عامل‌هایی مانند Windows، Linux یا macOS.
  • توسعه‌ی موبایل: توسعه‌ی اپلیکیشن برای iOS یا Android.
  • فریم‌ورک‌های خاص: مانند توسعه با React، Angular یا Vue.js.
  • سیستم‌های نرم‌افزاری خاص: مانند SAP، Salesforce، یا سایر سیستم‌های سازمانی پیچیده.

چگونه تخصص خود را انتخاب کنیم؟

انتخاب یک تخصص می‌تواند دلهره‌آور باشد. برای انتخاب یک حوزه‌ی تخصصی، این نکات را در نظر بگیرید:

  • مشکلات رایج در شرکت شما: آیا مشکلی وجود دارد که بتوانید در حل آن تخصص پیدا کنید؟
  • کارهای کم‌طرفدار: آیا حوزه‌ای وجود دارد که کمتر کسی به آن وارد شده باشد و تقاضای بالایی داشته باشد؟
  • موضوعات پرتکرار در کنفرانس‌ها و انجمن‌ها: چه مباحثی بیشتر مورد بحث قرار می‌گیرند؟

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

برنامه‌نویس چندمهارته ؟

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

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