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

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

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

با هر شغلی، روزهای خوب و روزهای بد وجود دارد. من دوست دارم بگویم که اگر از کار خود لذت می برید حداقل 70 درصد مواقع، یک کنسرت عالی خواهید داشت. من شخصا عاشق توسعه هستم. نمی‌توانستم خوشحالتر از این باشم، اما این نباید مرا از پرداختن به 30 درصد دیگر بازدارد… آن روزهای بد، آن مشکلات تکراری، آن لحظه‌های سر به سر.

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

1. مشکلات اشکال زدایی در پایگاه کدی که کنترل مستقیم روی آن ندارید

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

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

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

2. حفظ یک پروژه قدیمی، بدون هیچ گونه دانش زمینه ای

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

برای اینکه یک بازمانده موفق باشید باید بدانید به کجا می روید، آنجا چگونه است و شاید حتی برخی از روش ها برای موفقیت. باید بدانید که چرا می‌خواهید اقلام خاصی را بیاورید، چگونه می‌توانند مفید باشند، و شاید حتی با برخی از دوستان بقا که قبلاً در چنین محیطی بوده‌اند صحبت کنید. چه چیزی موثر بود، چه چیزی کار نکرد، و شاید برخی از ترفندهای تجارت که در این محیط منحصر به فرد هستند. اما نه، این فصل از “Alone+” قرار است مهارت های شما را به حداکثر برساند.

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

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

متأسفانه این نوع پروژه‌ها می‌توانند بسیاری از توسعه‌دهندگان را به سرانجام برسانند و باعث شوند برخی افراد از شغل خود متنفر شوند. این پروژه ها به کندی شروع می شوند و به نظر می رسد تلاش برای حرکت کورکورانه در یک میدان مین است. به همین دلیل است که کد و کد خوب نوشته شده با مستندات به روز بسیار مهم است.

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

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

3. زمانی که افرادی که توسعه نرم افزار را درک نمی کنند، تصمیم می گیرند

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

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

به‌عنوان یک برنامه‌نویس، یافتن تیمی که رابطه‌ای متوازن و کاری بین مدیران پروژه/صاحبان محصول داشته باشد، نه تنها برای موفقیت یک محصول، بلکه برای شادی برنامه‌نویس در نقششان مهم است.

4. نداشتن زمان کافی بدون وقفه در روز

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

یکی دیگر از بخش های واقعا شگفت انگیز را فقط می توان به عنوان “جریان” توصیف کرد. این حس غوطه وری تقریباً کاملی است که فرد هنگام عمیق شدن در کار و فرآیند فکر خود تجربه می کند. این یک بخش واقعاً رایج ورود به مکانی با بهره وری و پیشرفت عمیق و بخشی از برنامه نویسی است که بسیاری از توسعه دهندگان برای مؤثر بودن به آن نیاز دارند.

با این حال، در دنیای کار مدرن، آسان است که دائماً به جلسات اضافه شود یا به طور ناهمزمان با سؤالات / نگرانی ها در طول روز پیام ارسال شود. نکته بی ثبات در مورد “جریان” این است که ورود به آن چالش برانگیز است، اما بیرون کشیدن از آن آسان است.

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

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

5. سندرم ایمپوستر

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

خلاصه

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

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