ویرگول
ورودثبت نام
علیرضا صبوئی
علیرضا صبوئی
علیرضا صبوئی
علیرضا صبوئی
خواندن ۵ دقیقه·۳ ماه پیش

تجربه هایی که از خراب کردن یک پروژه و اعتماد یک دوست کسب کردم!

متاسفانه لینکداین تبدیل شده به عرصه اظهار فضل و بزرگنمایی تمام دست آوردهای آدم ها.

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

چرا گند میزنیم؟

واقعیت این است که همه ما با چنگ و دندان دنبال گرفتن پروژه هستیم تا درآمدمان را بیشتر کنیم. این وسط، گاهی پروژه هایی هم میگیریم. بزرگ یا کوچک. بعضی ها را به پایان میرسانیم اما در مسیر ساخت بعضی از آنها شکست میخوریم و بدتر از آن گاهی گند میزنیم. به نظر من، در بیشتر مواقع، مشکل ضعف فنی نیست. اتفاقا معمولا آدم هایی بیشتر بدقول میشوند که بنیه فنی خوبی دارند. من احساس میکنم همین بنیه فنی معمولا قاتل اعتبار ما میشود. دلایلی که به ذهن من میرسند را در ادامه میگویم. هر کدامشان قابل بحث هستند و خوشحال میشوم اگر بتوانیم باهم درباره آنها صحبت کنیم و نظرات شما را هم بدانم.

قصه از کجا شروع شد؟

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

شروع قوی - ادامه ضعیف

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

ندادن بازخورد (فیدبک)

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

برش های عرضی!

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

قانون 80/20

این قانون لعنتی همه جا کاربرد دارد! معمولا ما برنامه نویس ها، به بهانه اینکه میخواهیم شالوده کار را قوی پیاده سازی کنیم، 80 درصد از وقتمان را روی قسمت هایی میگذاریم که شاید 20 درصد از زمان کاربرد نرم افزار را به خودشان اختصاص میدهند. مثلا اول کار فرم های اطلاعات پایه را میسازیم و فرم های اصلی نرم افزار را میگذاریم برای آخر پروژه!

کد کثیف

دوست من! تا امروز که بیشتر از 12 سال برنامه نویس بوده ام، حتی یک مورد سورس کد را سراغ ندارم که قسمت هایی از آن کثیف نبوده یا بد پیاده سازی نشده باشد. این موضوع خصوصا در مواقعی پررنگ میشود که پروژه ای نیمه کاره را به دست میگیریم یا اینکه نیاز داریم یک پروژه را بازنویسی کنیم. پس کد کثیف همیشه وجود دارد. به نظر من به جای اینکه در این باتلاق گیر کنیم و زمانمان را از دست بدهیم تا با این کثیفی ها بجنگیم (که گاهی در این جنگ شکست میخوریم) باید یاد بگیریم با این کدها هم زیستی مسالمت آمیز داشته باشیم! روش ها و الگوهایی را یاد بگیریم که به ما اجازه میدهند جلوی این کدها یک دیوار بکشیم، از آنها استفاده کنیم اما اجازه ندهیم سایر قسمت ها را آلوده کنند.


محصول کاربردی لزوما عالی و حرفه ای نیست!

هرچه زودتر درباره این موضوع با خودمان به صلح درونی برسیم، زندگی بهتری را تجربه میکنیم! یک محصول، قبل از هرچیز باید یک ارزش خلق کند و این ارزش معمولا وقتی نمود پیدا میکند که از محصول استفاده بشود. باور کنید هییییچ کسی اهمیت نمیدهد که محصول من و شما، دیتاها را به جای 1 میلی ثانیه در 1 ثانیه نمایش میدهد. دست کم هیچ وقت در فاز اولیه تولید، چنین توقعی وجود ندارد.

و یک عالمه چیزهای دیگر که الان به ذهنم نمیرسد.

صادقانه بگویم. من این پست را مینویسم با این امید که دوستم بخواند و متوجه شرمندگی و عذرخواهی من بشود. در کنارش، شاید دانستن این موضوعات، برای شما هم مفید باشد. اگر به دردتان خورد، سعی کنید مثل من نباشید و بهتر از من عمل کنید. به عنوان آخرین جمله، میخواهم نقل قول مورد علاقه ام را بنویسم:
First Do It - Then Do It Right - Then Do It Better

ایده آل گرایینرم افزارپروژه
۳
۱
علیرضا صبوئی
علیرضا صبوئی
شاید از این پست‌ها خوشتان بیاید