واقعيت امر اين است که فرآيندها و متدولوژیهای توليد نرمافزار هر يک دارای نکات مثبت و منفی خاص خود هستند و هر کدام با شرايطی، میتوانند تجارب ديگران به ما منتقل نمايند تا ما چرخ را دوباره اختراع نکنيم و از ياد نبريم که نبايد مسخ آنها شويم و خلاقيتمان را ناديده گرفته و خودباوریمان را از دست بدهيم. اما مشکل عمده ما در ايران اين است که خيلی مدگرا هستيم و دانستههای ما "ناشی از شنيدهها و برداشتهای شخصی است"[اين جمله مال من نيست] و نه بر اساس تجربه و مطالعه.
من در معرفی يکی از دورههايم متنی را آماده کردم که فکر کنم بد نباشد آن را اينجا بياورم:
"در جامعه نرمافزاری، هر از چند گاهی، تکنولوژی يا روشی مد روز میشود و اين جامعة ذاتاً نوگرا را چون جاذبههای عجيب به سمت خود میکشاند، بدون آن که لزوم استفاده و مفاهيم بنيادی آن به اين جامعه منتقل گردد، مدتی به کار گرفته میشود و پس از مدتی به دلايل مختلف از مد خارج شده و با مدی ديگر چايگزين میگردد. يکی از مهمترين دلايلی که باعث از مد خارج شدن اين ابزارها میگردد، برداشت نادرستی است که علاقمندان و استفادهکنندگان از آنها دارند و دليل ديگر، کاربری نادرست آنها در کنار بیتجربگی استفادهکنندگان و مهمتر از همه عدم وجود توانمندی لازم جهت سادهسازی و بومیسازی آنها میباشد.
RUP نيز از اين قاعده مستثنی نيست. فرآيند توليد يکپارچه شرکت IBM به دلايل مختلفی در جامعه نرمافزاری مد شد و به دلايلی که بخشی از آن را برشمرديم، از مد روز خارج شد، بدون آن که فلسفه و نگرش اين فرآيند به کاربران آن منتقل شود.
هدف اين نيست که از اين فرآيند دفاع نماييم و آن را معجزه قرن بيست و يکم بناميم، بلکه نکتهای که بدان پافشاری مینماييم اين است که فلسفه و نگرش درون RUP نشأت گرفته از تمامی روشهايی بوده است که تا آن زمان ظهور کردهاند و هر يک به طريقی سعی در حل مشکلات توليد نرمافزار داشتهاند. فارغ از اين که اين نام چه باشد – FDD،RUP، ICONIX، Agile، XP – آن چه که جامعه نرمافزاری بايد فرابگيرد، فلسفه و نگرش و تکنيکهايی است که در اين روشها به صورت ضمنی وجود دارد."
به عنوان مثال مفهوم معماری. در روشهای مدرن، معماری به عنوان يکی از مبانی اصلی شمرده میشود (the architecture is first). با اين که همه در کوی و برزن اين نام را بر سر زبان میآورند، واقعاً به اندازه انگشتان يک دست نمیتوانيد متخصصينی را پيدا کنيد که اين مفهوم را لمس کرده باشند و نه آن که جملات کتابها را از بر برايتان بخوانند.
من جايی درس میدادم (اين موضوع مربوط به خيلی سال پيش است) و شروع به تدریس مفهوم معماری، اهميت و کاربردهايش کردم. انتهای جلسه، يکی از حاضران گفت: استاد ببخشيد، من تا قبل از جلسه امروز میخواستم يک طراح شوم، از همين الان تصميم گرفتهام که يک معمار شوم
ما بيشتر به اسامی و القاب علاقمنديم تا کنه مطلب.
يا مفهوم روشهای تکراری-افزايشی. يکی از دوستان عزيزم که ديگر اکنون در ايران نيست، میگفت من پس از سالها پروژه خراب کردن! فهميدم که مفهوم و هدف از روشهای تکراری-افزايشی چيست. بعد همه ادعای استفاده از اين تکنيک را دارند و وقتی خوب دقت میکنيد میبينيد روشهای آبشاری را تحت نامهای مدرن در حال انجام هستند. وحشتناکتر آن که بیدانشی و بیتجربگی باعث شده خيلیها فکر کنند که RUP مجموعه مستندات است و آن را با کتابهای آيين نگارش اشتباه میگيرند.
سخن قشنگ ديگری که از همه میشنويد اين است که RUP برای پروژههای بزرگ است. حتی اين جمله هم ناشی از مطالعه نکردن و بیاطلاعی و تحت تأثير شنيدهها بودن است.
هفته پيش من جايی بودم و در مورد پروژهای مشاوره میدادم. تأکيد من بر اين بود که میشود سيستم را بدون بازنويسی، با Refactoring در سطح مطلوبی بازسازی کرد. يکی از دوستان که در جلسه بود گفت: فکر میکردم که شما به جای RUP متمايل به XP method شدهايد و من هم هاج واج نگاه به همکارم کردم. تأکيد من برگرفته از تجربه و نيز تکنيکی بود که در يکی از روشها تجربه کرده بودم و نه اينکه علاقهای به اسامی داشته باشم.
سالها علاقه من بررسی و به کارگيری تکنيکهايی است که در متدولوژیهای مختلف وجود داشته و هميشه اين موضوع ناراحتم میکند که چرا ما که درياهاي به عمق يک سانت (شايد کمتر) هستيم، درباره اين موضوعات مطالعه نمیکنيم و چرا بدون مطالعه به خودمان اجازه اظهار نظرهای عجيب و غريب میدهيم.
سخن آخر:بر اساس خصوصيات پروژه، محيط انجام، تيم توليد و چندين پارامتر ديگر شما روش انجام کارتان را بايد انتخاب کنيد، مهم نيست که اسمش چه باشد. با مطالعه از تجربه ديگران در حوزه متدولوژی آشنا شويد و اين مطالعات کمک میکند تا تفکرتان را نسبت به توليد نرمافزار عوض کنيد.
اگر به موضوع تفاوت متدولوژی از ديدگاه کاربردی علاقمند هستيد پيشنهاد میکنيم که حتما مقاله The New Methodoloyرا از آقای مارتین فولر مطالعه نمایید.