در سال 2003 من شرکت DCSL Software را تاسیس کردم که بعداً به One Beyond تبدیل شد. در سال 2023 پس از بینالمللی کردن شرکت و رشد آن به بیش از 300 نفر از آن خارج شدم. از آن زمان، یک استارتآپ رباتیک تاسیس کردهام و بیش از 4 میلیون پوند سرمایه اولیه جمعآوری کردهام.
هرگز انتظار نداشتم که دوباره در حال نوشتن نرمافزار تولیدی باشم. من در سال 2014 کدنویسی روزانه را متوقف کردم، نه به این دلیل که نمیتوانستم این کار را انجام دهم، بلکه به این دلیل که این چیزی است که وقتی یک شرکت مقیاسپذیری پیدا میکند اتفاق میافتد. شما افرادی را استخدام میکنید که در اجرا بهتر از شما هستند، بر رهبری تمرکز میکنید و به تدریج صفحه کلید دورتر میشود. برای نزدیک به یک دهه، این کاملاً طبیعی به نظر میرسید.
چیزی که انتظار نداشتم این بود که، تقریباً ده سال بعد، خودم را دوباره در جایگاه توسعهدهنده بیابم — نه به صورت نوستالژیک، بلکه به صورت عملی. نه به صورت سطحی بلکه ساخت یک پلتفرم رباتیک واقعاً پیچیده. و نه با یادگیری مجدد هر فریمورک یا زبانی که از کنارم گذشته بود، بلکه با کار کردن به روشی اساساً متفاوت.
این تغییر شخصی واضحترین سیگنالی است که دیدهام که چیزی ساختاری در توسعه نرمافزار تغییر کرده است.
وقتی شروع کردم، ما کاملاً در دوران آبشاری بودیم. این ایدئولوژی نبود، اقتصاد بود. نرمافزار ساخت آن کند و گران بود، بنابراین تنها رویکرد منطقی این بود که از قبل بسیار سخت فکر کنیم.
ما مشخصات دقیق مینوشتیم چون مجبور بودیم. قراردادها به آنها بستگی داشتند. تحویل به آنها بستگی داشت. نوشتن یک مشخصات خوب یک مهارت تخصصی بود، و من اتفاقاً در آن نسبتاً خوب بودم. میتوانستم تجسم کنم که محصول نهایی قبل از وجودش چگونه به نظر میرسد، حوزههای پیچیدگی را پیشبینی کنم، و رفتار را با دقت کافی توصیف کنم که یک تیم بتواند در برابر آن بسازد.
این توانایی نادر بود و آموزش آن دشوار بود. بسیاری از مردم با آن دست و پنجه نرم میکردند زیرا تصور یک سیستم پیچیده که هنوز وجود ندارد واقعاً سخت است. اما مهم بود، زیرا اشتباه کردن در مراحل پایانی فرآیند دردناک و گران بود.
با گذشت زمان، صنعت به سمت Agile حرکت کرد. علناً، این به عنوان راهی بهتر برای پاسخ به تغییر معرفی شد. بیسر و صدا، این همچنین پذیرش این واقعیت بود که برای سیستمهای بزرگ و طولانیمدت، هیچ مشخصاتی دست نخورده باقی نمیماند. کسبوکارها تغییر میکنند، کاربران تغییر میکنند، فناوری تغییر میکند، و تظاهر به خلاف آن اغلب ضرر بیشتری نسبت به نفع داشت.
Agile عملگرا بود، اما با هزینه همراه بود. ما تا حد زیادی طراحی عمیق پیش از شروع را رها کردیم و آن را با کشف تدریجی جایگزین کردیم. این کار کرد، اما همچنین ذهنیتی را عادی کرد که در آن فکر کردن خیلی جلوتر به عنوان غیرضروری یا حتی پرخطر دیده میشد.
دلیل اینکه توانستهام به توسعه عملی برگردم این نیست که ناگهان وقت یا میل به یادگیری مجدد ابزارهای یک دهه را پیدا کردم. این به این دلیل است که هوش مصنوعی به طور اساسی هزینه آزمایش را تغییر داده است.
این بخشی است که اغلب اشتباه درک میشود. تغییر واقعی این نیست که کد سریعتر نوشته میشود. این است که امتحان کردن چیزها اکنون ارزان، سریع و عمدتاً قابل برگشت است.
چیزهایی که زمانی هفتههای توسعهدهنده طول میکشید اکنون میتوانند در دقایق امتحان شوند. میتوانید یک رویکرد را کاوش کنید، ببینید چه احساسی دارد، آن را به طور کامل کنار بگذارید و جهت متفاوتی را با جریمه بسیار کم امتحان کنید. این قبلاً به سادگی امکانپذیر نبود.
در گذشته، وابستگی عاطفی و مالی قوی به کد وجود داشت. اگر چیزی سه هفته طول میکشید که دو توسعهدهنده آن را بسازند، قابل درک بود که تمایلی به دور انداختن آن نداشته باشید. تصمیمات زود سخت میشدند، نه همیشه به این دلیل که درست بودند، بلکه به این دلیل که برگرداندن آنها بسیار پرهزینه بود.
این محدودیت از بین رفته است و این چیزی است که مرا به داخل کشید. اکنون میتوانم در سطحی که در آن قویترم عمل کنم — درک مسئله، شکلدهی سیستم، تشخیص زمانی که پیچیدگی در حال نفوذ است — در حالی که هوش مصنوعی مکانیک را مدیریت میکند. من کد نمینویسم به روشی که در بیست سالگی مینوشتم. من آن را هدایت میکنم، اصلاح میکنم، تصحیح میکنم، و گاهی اوقات آن را از رفتن در جهت کاملاً اشتباه متوقف میکنم. در عمل، این احساس بسیار نزدیکتری به رهبری یک تیم دارد تا نوشتن کد. شما عملاً رئیس هستید — تعیین جهت، بررسی خروجی، تشخیص میانبرهای تنبل، و مقاومت در برابر زمانی که چیزی احساس درستی ندارد.
فرض کردن اینکه این آزادی جدید طراحی را کماهمیتتر میکند آسان است. در واقعیت، آن را مهمتر میکند.
داشتن یک ایده واضح و دقیق از آنچه سعی دارید بسازید هنوز بسیار ارزشمند است. در واقع، به طور فعال خروجی هوش مصنوعی را بهبود میبخشد. هرچه قدر قصد واضحتر باشد، نتایج بهتر است. تفکر مبهم به سادگی سیستمهای مبهم را سریعتر تولید میکند. چیزی که مهم است درک این است که هوش مصنوعی بسیار شبیه یک شخص رفتار میکند. میخواهد مفید باشد. میخواهد به شما پاسخ دهد. اگر مبهم باشید، شکافها را پر میکند. اگر بیدقت باشید، فرضیات میسازد. اگر آن را به چالش نکشید، با اطمینان در مسیر اشتباه ادامه میدهد.
تفاوت این است که طراحی دیگر یک مصنوع شکننده و یکبار مصرف نیست که باید برای سالها بدون تغییر باقی بماند. به راهنمایی برای آزمایش تبدیل شده است نه محدودیتی برای آن. میتوانید چشمانداز قوی از جایی که به سمت آن میروید داشته باشید در حالی که هنوز مایل به امتحان، کنار گذاشتن و تکامل مسیری که شما را به آنجا میرساند هستید.
مهارت جدید دانستن زمانی است که کاوش مولد است و زمانی که فقط سر و صدا است. هوش مصنوعی با خوشحالی ساختار تولید میکند مدتها پس از اینکه باید ساده شده باشد. نمیداند که چه زمانی یک فایل خیلی بزرگ شده است، چه زمانی یک انتزاع در حال نشت است، یا چه زمانی چیزی که امروز "کار میکند" بعداً درد ایجاد میکند. این غرایز هنوز از تجربه میآیند.
وقتی آزمایش ارزان میشود، بسیاری از فرضیات دیرینه متوقف میشوند. برنامهریزی دیگر در مورد قفل کردن همه چیز از قبل نیست. در مورد تعیین قصد، محدودیتها و مرزها است.
تخمین کمتر در مورد پیشبینی تلاش و بیشتر در مورد درک فضایی است که در حال کاوش هستید.
و رابطه ما با کد به طور کامل تغییر میکند. وابستگی بسیار کمتری به پیادهسازیهای خاص و تمرکز بسیار بیشتری بر رفتار، ساختار و نتایج وجود دارد.
به همین دلیل است که صنعت توسعه نرمافزار ناآرام احساس میکند. بسیاری از مردم سعی میکنند مدلهای ذهنی قدیمی را به ابزارهای جدید اعمال کنند. این برای مدتی کار میکند، اما نکته را از دست میدهد.
دلیل اطمینان من از اینکه این تغییر دائمی است ساده است: در غیر این صورت دوباره در حال ساختن نبودم.
تنها دلیلی که میتوانم به طور معتبر پس از یک دهه به توسعه عملی برگردم این است که محدودیتهایی که در وهله اول مرا بیرون راندند دیگر اعمال نمیشوند. نرمافزار اکنون میتواند از طریق آزمایش هدایت شده تکامل یابد به روشی که قبلاً به سادگی امکانپذیر نبود.
این به این معنا نیست که تجربه اهمیت کمتری دارد. به این معنی است که به طور متفاوتی اهمیت دارد. ارزش دیگر در به خاطر سپردن نحو یا فریمورکها نیست. در قضاوت، ساختار و دانستن زمان توقف است.
این پایان توسعه نرمافزار نیست. اما پایان مدل قدیمی است. و وقتی به این روش کار کردهاید، راهی برای بازگشت وجود ندارد.


