شبیه سازی توسعه نرم افزار » سادگی کد

گاهی اوقات مجبور می شوم توسعه نرم افزار را برای افرادی که توسعه دهنده نرم افزار نیستند توضیح دهم. در طول سالها، من به تشبیهی رسیدهام که توضیح میدهد توسعه نرمافزار چیست و فرآیندهای آن چیست. من با موفقیت از آن برای توضیح توسعه نرم افزار به یک کودک 9 ساله، از جمله مفاهیم پیشرفته مانند امنیت سایبری و غیره استفاده کرده ام. من حدس میزنم که دیگران ممکن است از آن بهره ببرند، بنابراین اینجاست:
تصور کنید در دنیایی بدون کامپیوتر زندگی می کنید. شما صاحب یک کارخانه ماشین سازی سفارشی هستید که در آن مردم می توانند هر ماشینی را که در دنیا می خواهند روی کاغذ بنویسند و کارخانه شما آن را برای آنها بسازد. با این حال، این خودروها توسط انسان ساخته نمی شوند. در عوض، آنها توسط روباتهای خاصی ساخته شدهاند که میتوانند دستورالعملها را بخوانند و دنبال کنند (اما خودشان فکر نمیکنند).
روشی که روباتها میدانند چگونه ماشین را بسازند این است که یک کتاب دستورالعمل ویژه وجود دارد که نحوه ساخت هر قطعه و نحوه مونتاژ آن قطعات را در هر ماشینی که هر کسی میخواهد توضیح میدهد. این کتاب بسیار بزرگ است – 100000 صفحه دستورالعمل دقیق برای مراحل دقیقی که روباتها باید بردارند، با در نظر گرفتن هر موقعیتی که روباتها میتوانند در حین ساخت ماشین در آن قرار بگیرند. (به عنوان مثال، اگر یکی از روبات ها در حین ساخت یک قطعه خراب شود، چه می شود؟ اگر مواد کارخانه برای قطعه ای که در حال ساخت آن هستند تمام شود چه می شود؟ اگر مشتری بخواهد دو قسمتی را که تا به حال هیچ مشتری نمی خواسته است مونتاژ کند، و دستورالعمل نحوه انجام آن در کتاب نیست؟ و غیره – هر شرایط ممکنی که می توانید تصور کنید. به همین دلیل است که کتاب طولانی است.)
واضح است که برای یک نفر غیرممکن است که دستورالعمل ها را در یک کتاب 100000 صفحه ای ایجاد کند. بنابراین این کتاب توسط 1000 نفر نوشته شده است که همه با هم روی یک کتاب کار می کنند. برخی از افراد دستورالعمل ساخت موتور خودرو را می نویسند. افراد دیگر دستورالعمل هایی را در مورد نحوه ساخت درب خودرو می نویسند. و به همین ترتیب، برای هر قسمت از ماشین و هر روش ترکیب آنها. تمام دستورالعمل های کتاب باید با یکدیگر “همراه شوند” – برای مثال، اگر من دری بسازم، باید بتواند به بدنه ماشین متصل شود. اگر لاستیک بسازم باید روی چرخ ها جا بیفتد. بنابراین همه نویسندگان این کتاب به طور مداوم با هم کار می کنند تا مطمئن شوند که تمام دستورالعمل های کتاب به درستی با هم کار می کنند.
همانطور که انواع جدیدی از قطعات خودرو ظاهر می شود، دستورالعمل های جدید باید نوشته شود. از آنجایی که نویسندگان این کتاب موقعیتهای جدیدی را کشف میکنند که روباتها میتوانند وارد آن شوند (“اوه، ما نمیدانستیم که وقتی باران میبارد، برخی از قطعات ممکن است زنگ بزنند!”)، آنها باید دستورالعملهای کتاب را بهروزرسانی کنند. به عبارت دیگر، نه تنها کتاب باید یک بار نوشته شود، بلکه دائماً در حال تغییر است. در واقع، تقریباً همیشه برای به روز نگه داشتن یک کتاب، کار بیشتری نسبت به نوشتن دستورالعمل های جدید نیاز است.
حال، اگر حل این مشکل غیرممکن به نظر می رسد، نگران نباشید. هیچ انسانی نمی توانست کل کتاب را بفهمد. بنابراین اگر احساس میکنید که در این مشکل غرق شدهاید، طبیعی است! هر انسانی در جهان این احساس را نسبت به مشکل دارد. این 100000 صفحه دستورالعمل همیشه در حال تغییر است. پس چگونه آن را انجام دهیم؟ ما قوانینی را برای نحوه نگارش کتاب تعیین می کنیم. به عنوان مثال می گوییم “درها همیشه به همین ترتیب به بدنه خودرو می چسبند”. به عنوان مثال، درها همیشه یک نوع قلاب دارند که آنها را به بدنه متصل می کند، و بدنه ها همیشه مکان یکسانی برای قرار دادن آن قلاب ها دارند. به این ترتیب، مهم نیست که چه دری میسازید یا چه بدنهای میسازید، همیشه در کنار هم قرار میگیرند. حالا دیگر نباید به این مشکل فکر کنیم. ما قوانین زیادی از این قبیل وضع کردیم تا هر فردی که کتاب را می نویسد بتواند با خیال راحت روی قسمتی از کتاب کار کند بدون اینکه نگران شکستن کل ماشین فقط با تغییر یک چرخ یا دستورالعمل موتور باشد. تا زمانی که هر نویسنده رعایت کندقوانین، او می تواند هر چیزی را در کتاب تغییر دهد و کل ماشین همچنان کار می کند. این امر انواع خودروهایی را که می توانیم تولید کنیم محدود می کند، اما حل مشکل را در جایی که غیرممکن بود امکان پذیر می کند.
این نویسندگان، افرادی که این کتاب را می نویسند و نگهداری می کنند، توسعه دهندگان نرم افزار هستند. مشکلاتی که آنها با آن روبرو هستند تقریباً مشابه مشکلات توسعه دهندگان نرم افزار و تیم های توسعه است. به عنوان مثال، چگونه می دانید که دستورالعمل هایی نوشته اید که واقعاً کار می کنند؟ وقتی فردی جدید شروع به کار روی کتاب می کند چه اتفاقی می افتد، چگونه قوانین را یاد می گیرد؟ چه اتفاقی می افتد وقتی قوانین زیادی وجود دارد که نویسندگان نمی توانند آنها را به خاطر بسپارند؟ چگونه نویسندگان در مورد خودروهای جدید و قطعات خودروهای جدیدی که مشتریان می خواهند تولید کنند یاد می گیرند؟ شما می توانید اساساً تمام فرآیندها، مشکلات و اصول توسعه نرم افزار را برای هر کسی که از این قیاس استفاده می کند توضیح دهید.
امیدوارم کمک کند!
-حداکثر




