۳۰ شهریور ۱۴۰۳

Techboy

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

ساخت یا خرید: آیا واقعاً یک انتخاب است؟

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

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

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

جانیس دریغ نمی کند. «هی—من می بینم که پروژه جدید ما به مقداری رمزگذاری نیاز دارد. من می‌خواهم در نوشتن کتابخانه رمزگذاری پروژه تلاش کنم. اخیراً به الگوریتم‌های مختلفی نگاه می‌کنم، و می‌خواهم آن را امتحان کنم.»

چارلی، البته، این شور و شوق را تحسین می کند، اما بلافاصله می داند که این اتفاق نخواهد افتاد.

«جانیس، از پیشنهادت متشکرم، اما من در این مورد به تو نهی قاطع می دهم. و به همین دلیل است: رمزگذاری واقعاً سخت است. رمزگذاری مملو از خطر است. رمزگذاری انواع بازیگران بد را جذب می کند که سعی می کنند هر چیزی را که ما محافظت می کنیم رمزگشایی کنند. هر سوراخ، هر اشکال، هر مشکلی می‌تواند ما را در معرض خطرات امنیتی بزرگی قرار دهد.»

“خوب—پس چرا نمی توانم این کار را انجام دهم؟ من آماده چالش هستم!»

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

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

اما شور و شوق جانیس چارلی را برانگیخت و او ایده‌ای گرفت. به سمت دفتر رئیسش رفت و نشست. او به او نگاه کرد و گفت: «چه خبر؟»

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

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

چارلی به کنایه درونی لبخند زد.

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

چارلی آگاهانه سرش را تکان داد و به خودش اعتراف کرد که حق با اوست.

«و سپس، هنگامی که یک باگ پیدا شد، باید آن را برطرف کنیم. این گران است و مجهولات ناشناخته انجام آن، خوب، ناشناخته هستند، درست است؟ اگر با Kafka یا RabbitMQ یا یک راه حل تجاری برویم، می دانیم که در اولین بار درست کار خواهد کرد. آنها اشکالات را برطرف می کنند و قبل از اینکه ما بدانیم وجود دارند، نشت را متوقف می کنند. من ترجیح می دهم وقت خود را صرف کار با برنامه ما کنید. شما ۱۴ سال است که اینجا هستید و از کسب و کار ما و پایه کد ما آگاه هستید. من می دانم که شما دوست دارید این کار را انجام دهید، اما نمی توانم به شما اجازه بدهم که این زمان را صرف کنید. و من فکر می‌کنم حتی شما هم می‌پذیرید که ریسک و هزینه‌های پایین دستی بسیار زیاد است.»

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

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

حتی اشتراک گران قیمت یک راه حل نوشته شده توسط تیمی که دامنه مشکل را در داخل و خارج می داند و دارای شایستگی و انگیزه اصلی برای ارائه یک راه حل کامل است، تقریباً همیشه در دراز مدت هزینه کمتری نسبت به هزینه ناشناخته دارد. از ساخت و نگهداری راه حل خود

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