۶ اردیبهشت ۱۴۰۴

Techboy

اخبار و اطلاعات روز تکنولوژی

۵ چیز که توسعه دهندگان در مورد کارشان دوست دارند و ۵ چیز که دوست ندارند

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

هیچ شغلی کامل نیست، حتی در توسعه نرم افزار. ما از ۱۳ توسعه دهنده پرسیدیم که آنها چه چیزی را در مورد کدنویسی برای امرار معاش دوست دارند و از آنها متنفرند. این چیزی است که آنها به ما گفتند.

بیشتر توسعه دهندگان نرم افزار سناریویی را که جان مکفرسون، توسعه دهنده اصلی شرکت طراحی وب اسکاتلندی Media Surgery، به عنوان یکی از اوج های واقعی شغل خود توصیف می کند، تشخیص می دهند: آن احساس “وقتی بخشی را که روزها روی آن کار کرده اید آزمایش می کنید. یا ساعت‌ها – و کار می‌کند! شما احساس می‌کنید که یک ابرقدرت غیرقابل توقف هستید که می‌توانید هر کاری انجام دهید. یک احساس واقعی سرخوشی.” آنها همچنین جنبه منفی را تشخیص می دهند: “وقتی روزها و ساعت ها کار می کنید و این کار کار نمی کند. احساس بی ارزشی می کنید و می پرسید که چرا اصلاً شاغل هستید. احساس تقلب می کنید. یا سرخوشی یا سندرم فریبنده. این یک شغل قدیمی عجیب است، اما لذت بخش – در بیشتر موارد.”

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

حل مشکلات در مقابل اختراع مجدد چرخ

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

Percy Grunwald، مهندس نرم‌افزار فول استک و یکی از بنیان‌گذاران میزبان وب مستقر در بریتانیا، آن را خلاصه کرد: “اگر عاشق حل مشکلات نباشید، از توسعه نرم‌افزار لذت نخواهید برد.” Jacob Mages-Haskins، مهندس نرم‌افزار کارکنان Contrast Security نیز توسعه نرم‌افزار را به حل معما تشبیه می‌کند: «به‌عنوان یک توسعه‌دهنده، من عاشق چالش پیاده‌سازی ویژگی‌های جدید در کد هستم. مثل این است که هر روز یک پازل جدید برای حل کردن دارم. “

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

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

کاردستی در مقابل فرآیند

بیشتر توسعه دهندگان نیز از روند ایجاد نرم افزار احساس رضایت داشتند. همانطور که عارف از ویزپول می گوید، “من عاشق این هستم که بتوانم چیزی ایجاد کنم که دیگران بتوانند از آن استفاده کنند. این مانند یک صنعتگر است، اما با کد.” الکسی سوتیاژین، که ۱۰ سال تجربه به عنوان توسعه دهنده و مدیر مهندسی دارد، از استعاره حتی قدرتمندتری استفاده کرد. او می‌گوید: «پربارترین بخش توسعه‌دهنده نرم‌افزار بودن، احساس سحر و جادو است، زمانی که چیزی جدید از فکر ناب خلق می‌کنید. “من در کودکی می خواستم جادوگر باشم و توسعه دهندگان تقریباً شبیه جادوگران دنیای مدرن هستند.”

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

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

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

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

به طور کلی، محیط‌های شرکتی بیشتر شامل فرآیندهای بیشتر و ناامیدی بیشتر برای توسعه‌دهندگان است. کیشان پاتل، مشاور اجرایی شرکت استخدام فین‌تک EC1 Partners گفت: «کار در یک شرکت شرکتی گاهی اوقات می‌تواند بر استقلال نقش آن‌ها تأثیر بگذارد. نوار قرمز بی پایان به توسعه دهنده آزادی کمتری برای بیان کد خود و همچنین انعطاف پذیری کمتری می دهد. برنت اسپیلسون از Nexient خاطرنشان کرد که وقتی تیم‌ها را می‌بینم که بیشتر با خط مشی‌ها دست و پنجه نرم می‌کنند تا کد، ناامید می‌شود.

Rafał Gatkowski، توسعه‌دهنده ارشد در شرکت توسعه Python STX Next، تعادل را ایجاد کرد: “همه فرآیندها مانع از توسعه می‌شوند، اما برای ایجاد نرم‌افزار خوب، سطحی از فرآیند لازم است.” نکته کلیدی در ذهن او این بود که اجازه نمی داد فرآیندها از کنترل خارج شوند و زمان زیادی را از توسعه دهندگان بگیرند. او گفت: «تبدیل یک استندآپ روزانه ۱۵ دقیقه‌ای تیم به یک جلسه وضعیت متقابل یک ساعته (یا طولانی‌تر) رایج‌ترین مثال» از یک فرآیند معیوب است.

لذت کار تیمی در مقابل کار گروهی

بیشتر جنبه‌های «فرایندی» کار در چارچوب کار تیمی و همکاری ایجاد می‌شود. برای بسیاری از توسعه دهندگانی که با آنها صحبت کردم، رفاقت کار با دیگران یکی از بهترین چیزها در مورد شغل آنها بود. به عنوان مثال، Caleb Chandzamarda Junior، توسعه‌دهنده پایتون و مهندس امنیت سایبری، گفت که برخی از بخش‌های مورد علاقه‌اش در کارش «فکر کردن و صحبت کردن در مورد طراحی و سنجش مزایا/معایب در مورد هر یک برای یافتن پاسخ مناسب و کار بر روی محصولات جالب بود. که هرگز به تنهایی قادر به انجام آن نخواهم بود.”

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

گفته شد، واقعیت روز به روز همکاری می تواند انرژی زیادی را مصرف کند که بیشتر توسعه دهندگان ترجیح می دهند برای کدنویسی صرف کنند. Mages-Haskins از Contrast Security می‌گوید: «به‌عنوان یک توسعه‌دهنده شرکتی، من از اینکه چگونه هزینه‌های ارتباط و هماهنگی به سرعت افزایش می‌یابد، وقتی حتی چند تیم با هم همکاری می‌کنند، متنفرم. همانطور که فرد بروکس فقید در ماه مرد اسطوره‌ای اشاره کرد، با افزایش تعداد افراد درگیر در یک پروژه، تعداد راه‌های ارتباطی بین آن افراد منفجر می‌شود – و مطمئناً این تجربه من بوده است. هر پروژه غیر پیش پا افتاده.” با این حال، او اضافه کرد، “هرچند برای اطمینان از مفید بودن ویژگی ها و ارائه ارزش به مشتریان ما به همه نیاز داریم.”

در بدترین سناریو، آنچه که باید همکاری باشد در عوض به یک رابطه خصمانه‌تر بین همکاران تبدیل می‌شود. سوتیاژین گفت: «در شرکت‌های بزرگ، کار سخت برای کل سال امری عادی است، اما در نهایت، پروژه شما به‌عنوان بی‌اهمیت بسته می‌شود، یا به دلیل اینکه تأثیر شما بسیار کم است، تبلیغی دریافت نمی‌کنید». “بنابراین شما باید پروژه ها را با دقت انتخاب کنید. اگر رقیبی در تیم خود دارید، باید او را متقاعد کنید که چیز دیگری را انتخاب کند. می توانیم بگوییم که دنیا اینگونه است. اما به این دلیل نیست که ما مهندس نرم افزار می شویم.”

تعادل بین کار و زندگی در مقابل عدم تعادل

در مورد توسعه نرم افزار چه می خواهید بگویید، اما مانند کار روی خط مونتاژ نیست. گواراسیو از Toptal می گوید: «توسعه نرم افزار به خوبی به مشاغل آزاد و همچنین کار از راه دور کمک می کند. “آزادی کار بر روی پروژه های مختلف، از هر مکانی در جهان، برای بسیاری از استعدادهای ما بسیار جذاب است.”

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

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

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

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

شغل رویایی فناوری در مقابل شغل واقعی

در پایان، بسیاری از تجربیاتی که به‌عنوان یک توسعه‌دهنده خواهید داشت نه با کلیات، بلکه بر اساس ویژگی‌های مکانی که در آن فرود می‌آیید تعیین می‌شود – و این می‌تواند تأثیر زیادی بر شادی و رفاه شما داشته باشد. جرد لدبتر، مدیر عامل طراحی وب و شرکت سئو Carbon Digital، گفت: “همه سازمان ها یا بخش ها یکسان ایجاد نمی شوند.”

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

با این حال، توسعه نرم افزار یک مهارت با تقاضای بالا است، و همانطور که Gatkowski از STX Next می گوید، “مزیت غیرقابل انکار این واقعیت است که یافتن شغل بسیار آسان است.” همانطور که Patel از EC1 اشاره کرد، مشاغل در فن آوری نیز بسیار خوب پرداخت می کنند، “پاداش مالی و پیشرفت شغلی کار در توسعه نرم افزار بی نظیر است.” با کمی زمان و تلاش، بیشتر توسعه‌دهندگان می‌توانند شغلی پیدا کنند که به آنها اجازه دهد کارهایی را که دوست دارند بیشتر انجام دهند و کارهایی را که دوست ندارند کمتر انجام دهند.