4 مهارتی که باید برای تبدیل شدن به یک توسعه‌دهنده برجسته بدانید

یکشنبه 9 آذر 1399

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

4 مهارتی که باید برای تبدیل شدن به یک توسعه‌دهنده برجسته بدانید

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

چگونه می‌توانم ویژگی‌های این فرد را به دست آورم و نتایج را با حفظ و ایجاد هویت منحصربه‌فرد خودم در روند کار تقویت کنم؟

ما هر روز در حال تحول هستیم، بنابراین هر روز به دنبال بهتر شدن هستیم، با این حال با تلاش برای درک عمیق حوزه‌های زیر، می‌توانید از یک مهندس معمولی به یک مهندس برجسته تبدیل شوید.

1. طراحی معماری سیستم

برای بسیاری از مهندسان در اوایل حرفه‌یشان، این یکی از زمینه‌های دانش است که بسیار مورد غفلت قرار گرفته است. از طرف دیگر، این اتفاق یکی از عوامل اصلی تعیین موفقیت هر پلت‌فرم است زیرا تصمیماتی که در این مرحله گرفته می‌شود در طولانی مدت بر کل سیستم تأثیر می‌گذارد.

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

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

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

2. مهارت‌های کافی DevOps

من می‌خواهم روی کلمه "کافی" در این جمله تاکید کنم زیرا نمی‌خواهم مفهوم تسلط بر همه فنون را به یک باره داشته باشید. بیاید صادق باشیم، مهندسان با صلاحیت DevOps با درک عمیق زیرساخت‌ها مایل به پذیرش چالش‌ها هستند، و مبلغ بالایی را در قبال این کار دریافت می‌کنند.

مهارت‌های DevOps بسیار ارزشمند هستند و در بازار بسیار مطلوب می‌باشند. به عنوان یک توسعه‌دهنده، قطعا نیازی نیست که استاد زیرساخت باشید، اما شناخت زیرساخت‌های خود به اندازه کافی و مناسب ارزشمند است.

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

دانستن پیشاپیش این جزئیات می‌تواند به شما این امکان را بدهد که بتوانید فرضیات خوبی داشته باشید و کد خود را مطابق با آن بهنیه کنید تا آخرین عملکرد را از زیرساخت خود خارج کنید بدون اینکه آن را بلااستفاده ارسال کنید.

شناخت زیرساخت‌ها این امکان را به شما می‌دهد تا مشکلات ترسناکی که ممکن است شما یا تیم‌تان در هر زمان و مکان مشخصی متحمل شوید را برطرف کنید بدون اینکه ساعت‌های زیادی را برای تلاش جهت کشف آنچه رخ می‌دهد صرف کنید.

دانستن اشکالات، سبک سنگین کردن‌ها، و اخطارهای پلت‌فرم مورد نظر خود و سرویس‌های متنوع ارائه‌شده به شما امکان می‌دهد از قبل طراحی و معماری سیستم بهتری داشته باشید.

نیازی نیست که یک مهندس DevOps ماهر باشید، بلکه فقط اطلاعات کافی در اختیار داشته باشید که به شما این امکان را می‌دهد کارهایی را تولید کنید که با کارایی بیشتری اجرا می‌شوند و مدیریت آن در طولانی مدت برای شما دردناک نیست.

3. دانش فنی قوی

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

این بدان معنا نیست که شما باید بتوانید مقدار زیادی اطلاعات را تقریبا به طور کامل در هر لحظه به خاطر بیاورید. برای تصمیم‌گیری در مورد اینکه می‌خواهید چه اطلاعاتی را نگه دارید و کدام یک را کنار بگذارید، می‌توانید یک رویکرد استراتژیک را در پیش بگیرید:

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

از کدام یک از پلت‌فرم‌ها هر روز استفاده می‌کنم؟

جزئیات نه چندان مهم و اصلی که مربوط به ابزارها و پلت‌فرم‌های مورد استفاده من هستند کدامند؟

این جزئیات چطور با اثری که من تولید می‌کنم ارتباط دارند؟

اگر پاسخ قابل قبولی برای این 4 مورد دارید، پس باید این اطلاعات خاص را در جایی که مفید باشد و در آینده در دسترس باشد بنویسید.

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

4. مهارت‌های ارتباطی

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

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

داشتن مهارت‌های فنی و کلامی در کنار هم باعث می‌شود در مدت زمان کوتاهی رشد چشم‌گیری داشته باشید و به نتایج عالی برسید.

ایمان مدائنی

نویسنده 1299 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید