نمی دانم که بحث را از کجا شروع کنم ؟ فقط این را بدانید که در این نوشته نظم و ترتیبی رعایت نشده است و این نوشته بیانی از تجربیات خودم می باشد. 


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

خوب تعریف از کیفیت نرم افزار را می توان از کتاب های خیلی زیادی پیدا کرد و در اینجا کپی کرد . اما دوست ندارم که همان ها را به انگلیسی بنویسم . دوست دارم همان چند کتابی را که درباره کیفیت نرم افزار خوانده ام را همین جا به صورت خلاصه وار بنویسم . 
کیفیت های نرم افزار شامل قسمت های مختلفی از نرم افزار می شود . از کد گرفته تا پیاده سازی ، از تست گرفته تا استقرار سیستم ، از نیاز سنجی گرفته تا طراحی ، از طراحی گرفته تا مدیریت پروژه ، و خیلی چیزهای دیگری که بهتر از من می توانید تصور کنید . 
خلاصه وار بگویم که کیفیت در هر مرحله بدین معناست که؛ 
 اگر به یک نفر  که سواد کمی در رشته نرم افزار دارد ، قسمت های مختلفی از پروژه را نشان دهیم ، بدون اینکه از جزئیات خبر داشته باشد ، بتواند برای ما توضیح دهد که در هر قسمت از نرم افزار چه اتفاقی خواهد افتاد . 
جمله معروف مارتین فاولر اینست که : 
هر ابلهی می تواند کدی بنویسد که کامپیوتر آن را بفهمد . برنامه نویس خوب کسی است که کدی بنویسد که هر شخصی بتواند آن را بخواند و درک کند . (منظور از شخص فرد سواد دار است نه بی سواد و نامربوط به کامیپوتر و دنیای نرم افزار ) 
خب با این اوضاع و تفاسیر چه کنیم ؟ یعنی چه میتوانیم بکنیم ؟ 
اکثر شرکت هایی که برای مشتریان خود برنامه می نویسند ، این لفظ را به کار می برند 
" یه چیزی بنویس که کار کنه . دیگه بقیه اش مهم نیست . گور باباش . مگه چقدر پول میده تا من این کارها رو براش انجام بدم ؟ " 
در طول 9 الی ده سالی که در شرکت ها و سازمان های مختلف کار کرده ام ، این را به وضوح هر چه تمام تر شنیده ام و بعضی اوقات هم وضع و اوضاع از این بدتر هم شده است . بگذریم . 
در اولین قدم ( البته نظر شخصی من است ) ، متوجه میشوم که فرد صاحب سرمایه یا مدیر مسئول سواد کمی در نرم افزار و توسعه آن دارد . 
اگر این افراد بدانند که در آینده چه ضررهایی می کنند و در قبال آن چه هزینه هایی را باید پرداخت کنند ، دیگر از این غلط ها نمی کنند . 
بیشتر هزینه هایی که شرکت ها برای توسعه نرم افزار خرج می کنند ، برای رفع خطاهای ناشی از بی دقتی است . 
بی دقتی هایی که در اول ناچیز پنداشته می شود و یواش یواش در ادامه پروژه این مشکل دامن خود را گسترده تر می کند و عاقبت گریبان همه را می گیرد . این دامن پروراندن باعث می شود که مدیر پروژه دستور دهد همه چیز را از اول بنویسند . 
حال خودتان می توانید حساب پول هایی را که صرف حقوق کارمندان و سایر افراد شده است را، تخمین بزنید . البته این افزایش مقدار نسبت مستقیمی با بزرگی پروژه و تعداد کارمندان آن دارد . 
چه میشود که در اول این مشکل ها ، جزئی  و ناچیز پنداشته می شود و در جایی از کار مشخص می شود که ، نه خیر جزئی نبوده و یک مشکل اساسی است . 
حال منشاء این دسته از مشکلات چیست  ؟
با توجه به تجربیات خودم و مطالعاتم در این زمینه ( که کاملا می تواند ناقص باشد ) ، به این نتیجه میرسم که  عوامل زیادی وجود دارد که دوست دارم مهمترین آن ها را بیان کنم  و در ادامه بحث ها در آینده به تحلیل و بررسی هر چه بهتر و بیشتر آن ها خواهم پرداخت . 
 
مهمترین عامل عدم مطالعه و عدم آشنایی با تکنولوژی ها جدید است . 
به طوری که در توسعه نرم افزار در پیشرفته ترین  و بزرگترین شرکت نرم افزاری ایران ، از قواعد توسعه نرم افزار دهه 90 میلادی استفاده می شود . 
اگر مدیران لایق سازمان مطالعات خودشان را افزایش دهند، متوجه تکنولوژی های جدیدی خواهند شد که مشکلات قواعد دهه 90 میلادی را نه تنها حل کرده است بلکه به طور کل آن ها را از رده خارج کرده است . 
بعد خیلی جالب است که گله های این مدیران را می شنوی که می گویند " کار کن در بازار نیست  " اخه احمق جان تو خودت و تکنولوژیت مربوط به بیست سال پیشه . چطور انتظار داری کسانی پیدا بشن که با همون تکنولوژی عهد بوق جناب عالی کار کنند  ؟ 

این بحث ها ادامه دارد ...