درس‌هاي يك بر پا سازي نرم افزاري


متن حاضر داستان مختصري از بر پا سازيِ سامانه ارزي شعب در يك بانك بزرگ تجاري است كه مسؤليت آن بر عهده من بود. توليد پروژه، به صورت برون سپاري به شركتي ديگر محول شده و مديريت آن را شركت من عهده دار شده بود. مدتي بعد از شروع كارِ توليد نرم افزار، توسط شركت پيمانكار و در زمانيكه در شعبه‌ي مركزي بانك قسمتي از نرم افزار در حال بر پاسازي بود، به عنوان هماهنگ كننده گروه فني به پروژه ملحق شدم.

سامانه از چندين بخش تشكيل شده است كه صحبت از بر پاسازي بخش حساب داري آن در ابتداي كار بود و در آن زمان هنوز هيچ ساختار و چارت سازماني مشخص براي گروه بر پا سازي وجود نداشت. اين نرم افزار در بخش ستاد بانك قبلا فعال بوده و با تغييرات خيلي جزيي در بخش صف بانك (شعب) قرار بود نصب شود. متاسفانه اين نرم افزار با طراحي عالي ولي با پياده سازي خيلي بد انجام گرديده بود كه در طي ماه‌هاي بعد با زحمات زياد ما رفع گرديد. در هر فرم متاسفانه، خطاهاي زيادي وجود داشت و براي آشنايي با سيستم، نه مستندات طراحي بوده و نه راهنماي كاربران و نه از لحاظ كاربري و طراحي صفحات تصوير، كاربر فهم بود. مستندات طراحي و راهنماي كاربران تا مدت زيادي بعد از زمان لازم براي كاربرد نيز تحويل نگرديد و تمام زحمات آن را ما متحمل شديم.

تغييرات نرم افزار به اطلاع من و همكارانم، به صورت مرتب و منظم و بر طبق يك متدولوژي توافق شده نمي‌رسيد. براي آشنايي با سيستم بايد از افراد بدون مسوليت (در صورتيكه وقت داشتند) سئوال مي‌كرديم و به صورت غير اصولي بايد آموزش مي‌ديديم. امكاناتي نيز براي تست و يادگيري وجود نداشت. انگار كه شركت پيمانكار اولين پروژه نرم افزاري را تجربه مي‌كند. براي من مثل يك جهنم بود كه بايد  نابساماني‌ها را تحمل مي‌كردم. چون خود من و شركت ما در زمينه توليد نرم‌افزار حداقل از شركت پيمانكار تجربه بهتري داشتيم. حال چرا اين شركت برنده اجراي اين پروژه گرديد نمي‌خواهيم وارد اين مقوله بشويم. هدف از اين مقاله بيان مشكلات عمده‌اي است كه موفقيت برپاسازي به حل آنها وابسته است و ما با وجود اين مشكلات، كار خود را شروع نموديم. برپاسازي دو شعبه اول بانك بر عهده شركت پيمانكار بود كه هركدام بطور متوسط سه ماه طول كشيد تا بر پاسازي گردند. بقيه شعب كه حدود 58 شعبه مي‌شد بر عهده ما بود.

قبل از شروع بر پاسازي آزمايش و رفع عيوب نرم افزار را شروع نموديم (با توجه به محدوديت هاي مختلف) تا بتوانيم پشتيباني راحتي داشته باشيم. بعد از رفع عيوب تا حد امكان، شروع به تهيه‌ي يك پايگاه داده پايه نموديم تا اطلاعات مشتركي كه بين شعب مي‌باشد را در آن وارد نموده تا براي بر پاسازي شعب از آن استفاده نماييم. فقط اطلاعات خاص هر شعبه را در زمان بر پاسازي به آن اضافه مي‌كرديم.

با توجه به اينكه بانك به شركت فشار مي‌آورد تا هر چه سريعتر سامانه نرم افزاري راه اندازي گردد، مراحل مقدماتي را سريعتر انجام داديم. براي شروع به مديرم پيشنهاد كردم تا يك برنامه‌ي كامپيوتري جهت تبديل اطلاعات كامپيوتري از نرم افزار‌هاي موجود در شعب بانك و انتقال به اين نرم افزار جديد توليد نما‌ييم. متاسفانه اين پيشنهاد رد گرديد و گفته شد كه از تايپيست‌ها استفاده كنيم. البته اين خواسته بخاطر آن بود كه شركت پيمانكار در زمان بر پاسازي دو شعبه نتوانسته بود اين كار را انجام دهد و به نظر مي‌آمد كه هر چه آنها بگويند حرف نهايي است. اما براي قانع كردن مدير خود نياز به زمان داشتم. ما كار را شروع كرديم و اطلاعات 15 شعبه را بصورت كاغذي و فايل آورديم تا توسط تايپيست‌ها وارد شوند. براي تسريع در ورود اطلاعات، گزارشي توليد كرديم كه به ترتيب ورود اطلاعات در سامانه جديد، مرتب شده بود تا كار ورود اطلاعات راحت گردد. سياست ما اين بود كه اول شعب كوچكتر و با حجم اطلاعات كمتر را بر پا كنيم، بعد به شعب بزرگ مراجعه نماييم.

بعد از اين كار به اولين شعبه مراجعه نموديم تا سيستم را بر پا كنيم. حدود سه روز طول كشيد. متاسفانه انتقال دستي، به دليل اشتباهات در ورود اطلاعات، اين معايب را نيز به همراه دارد. سپس آموزش را در حالي شروع كرديم كه هنوز راهنماي كاربران توليد نگرديده و هنوز ليست مواردي كه بايدآموزش داده شود تهيه نكرده بوديم و چندين روز به اتفاق همكاران (سه نفر) در آن شعبه جهت آموزش مستقر شده بوديم. متاسفانه چون شعبه علاوه بر يادگيري سيستم جديد بايد به مشتريان خود نيز سرويس مي‌داد، امكان جمع كردن كارمندان به صورت يكجا و آموزش دسته جمعي فراهم نبود. بعضي از كارمندان به دليل اينكه اصلا با كامپيوتر كار نكرده بودند اول مقاومت مي‌كردند و در زمان كار نيز، به تسلط و اعتماد به نفس مورد نياز نرسيده بودند. براي اينكه ترس را از وجود اين كاربران بيرون ببريم، قول ‌داديم كه مدت بيشتري در كنار آنها بمانيم. البته خود اين قول باعث مي‌شد كه كاربران در ياد گيري جدي نباشند. كاربران سامانه جديد به دليل تغييرات اساسي در روش كارها و مهندسي سيستم و تغيير وظايف،  اطلاع كاملي از عمليات و حسابداري ارزي جديد نداشتند و اين مشكلات را با آموزش و كار عملي بايد مرتفع مي‌كرديم.

بعد از حدود 13 روز، سراغ يك شعبه كوچك رفتيم. چند شعبه ديگر نيز با همين روش تمام شد تا اينكه به يك شعبه متوسط رسيديم كه اين شعبه با توجه به تجربياتي كه از شعب قبل داشتيم از ابتداي روز تا ساعت 12  شب و به كمك كارمندان شعبه تمام شد. براي فائق آمدن به مشكل انتقال دستي اطلاعات، از پرسنل خود بانك كمك ‌گرفتيم.

براي تسريع در امر آموزش، بعد از آموزش‌هاي كلي، آموزش جزيي و پشتيباني را به صورت تلفني و ايجاد ميز كمك ادامه داديم. باز هم مشكلات حل نگرديد. بر اساس آماري كه جمع آوري نموديم، حدود 80 درصد از كاربران از كتاب "راهنماي كاربران" و CD آموزشي مالتي مديا استفاده نمي‌گردند. دوباره مجبور شديم به فكر آموزش قوي حضوري باشيم.
اگر چه تدوين دستورالعمل‌ها،  راهنمايي‌ها و چاپ راه كارها (آموزش غير حضوري) مي‌توانند در انتقال مهارت و دانش مفيد واقع شوند،  اما كافي نيستند، شركت ها شايد به دليل هزينه زياد جمع آوري اشخاص، و يا بدليل اعتقاد به اين كه تكنولوژي مي‌تواند جاي انسان را بگيرد، اين راه را انتخاب كنند. ولي در عمل هيچ يك از روش هاي خشك و بي روح مهندسي براي انتقال دانش مورد نظر مؤثر واقع نمي‌شود و پيمانكار يا شركتها به ناگزير و پس از اتلاف مدتي وقت، مجبور به انتقال حضوري تجربه و دانش خود مي شوند. مهارت‌ها يا توانمندي‌هاي نهفته در دانش، به كسي اجازه نمي دهد تا آنها را در قالبهاي خشك و كدهاي قابل درك بگنجاند. اين واقعيت را بايد بپذيريم كه مهارت و دانش خيلي وقت ها ظريفتر و پيچيده تر از آن است كه با كلمات بيان شود. بايد از طريق ديدارهاي خصوصي، رابطه اي نزديك و اعتمادي متقابل به وجود آورده شود. تمايل غريزي به مقاومت در برابر دگرگوني و نياز به اعتماد، در قابليت انتقال مهارت وآموزش دخالت بسياري دارد. از سوي ديگر چرا بايد پذيرفت كه چند ورق كاغذ تهيه شده، مي‌تواند راهنماي بهتري براي كارهايي باشد كه طي چندين سال و كسب تجربيات ارزنده آموخته شده است؟ در بسياري از موارد، اصولا جايگزيني براي ارتباط مستقيم وجود ندارد. ما آموزش حضوري را تقويت نموديم ولي در اين راه با مشكلات زيادي روبرو بوديم كه بعضي از آنها به قرار زير است:

1- جمع آوري همه كاربران در يك محل و يك زمان
2- اختلاف سن، سطح دانش و مشاغل كاربران
3- جوان بودن مدرسين
4- محدوديت زماني
5- عدم وجود رغبت كاربران به يادگيري
6- عدم وجود مهارت‌هاي پيش نياز.

مشگل گرد‌آوري كاربران به دليل اينكه بعضي از سرويس‌ها را بايد به مشتريان ارائه مي‌كردند هم چنان باقي ماند.
مشگل اختلاف سطح كاربران را با افزايش تعداد آموزش دهندگان و تفكيك كاربران، تا حدودي حل نموديم. به اين معنا كه براي هر سطح از كاربران يك نفر بطور مجزا و به طور موازي آموزش مي‌داد.
براي مشگل پايين بودن سن مدرسين كه باعث عدم اعتمادكاربران مي‌گرديد سعي كرديم قبل از شروع به آموزش، بعضي از مواردي كه حكايت از سابقه خوب آموزش دهنده بود مطرح نماييم تا اعتماد كاربران جلب گردد.
براي غلبه بر محدوديت زماني، قبل از شروع به آموزش، محدوديت زماني را مشخص نموديم و مطرح كرديم كه در صورتيكه در اين محدوده زماني عمل يادگيري تمام نگردد، ناشي از ضعف كاربر مي‌باشد.
براي ايجاد رغبت و تمايل در كاربران، آن بخش از مزيت‌هاي سيستم را كه مشكلات عمده كاربران را حل مي‌نمود در شروع مطرح مي‌نموديم.
با وجود اينها مواردي داشتيم كه واقعا كاربران مقاومت نشان مي دادند و از يادگيري سيستم جديد سر باز مي‌زدند، در شعبه كرمان به كاربران اعلام كرديم كه در انتهاي آموزش، امتحان برگزار خواهيم نمود و نتايج در پرونده شما درج گرديده و بر اساس اين نمرات، تشويق و يا تنبيه انجام خواهد شد. نتايج بدست آمده فوق العاده بود. كاربران بطور متوسط بالاي 18 از 20 گرفتند و كمترين تلفن را به ميز كمك از اين شعبه جهت رفع اشكال داشتيم. بايد مكانيزمي جهت تشويق و تنبيه وجود داشته باشد. متاسفانه ما امكان تشويق و تنبيه را نداشتيم و اين مورد را واقعا جهت تحقيق و بررسي نتايج حاصله، بدون كسب اجازه از مقامات انجام داديم. ضروري است كه اگر آموزش دهنده از يك ارگان و آموزش گيرنده از ارگان ديگري باشد، بايد امكان تشويق و تنبيه را در قرارداد بصورت رسمي گنجاند. چون هيچ روش آموزشي بدون وجود اين امكان موفق نخواهد شد.
متاسفانه عدم وجود مهارت‌هاي پيش نياز در كاربران، هزينه‌هاي زيادي را بر ما تحميل كرد. قبل از شروع بر پا سازي مهارتهاي حسابداري ارزي و اپراتوري رايانه بايد از طريق برگزاري دوره‌هاي آموزشي و سمينارها به كاربران انتقال داده مي‌شد. موفقيت دوره‌هاي آموزشي بدون گذراندن دوره‌هاي قبلي امكان پذير نيست. پس بايد در متن قرارداد، مهارت‌هاي پيش نياز را ذكر نمود.

معضل انتقال دستي:

بعد از اينكه در شعب كوچك اول كه براي بر پاسازي انتخاب شده بود مشكلاتي بروز كرد، به فكر توليد برنامه‌ايي براي انتقال اطلاعات از سيستم‌هاي قبلي به سيستم جديد بطور اتوماتيك افتاديم. به شركت پيمان كار سفارش داديم كه برنامه مربوطه را توليد نمايد. متاسفانه حدود يك ماه طول كشيد و با توجه به اينكه اطلاعات قبلي به صورت‌هاي غيريكسان (در هر شعبه) و به شكل‌هاي مختلف ذخيره گرديده بود، تصميم گرفتيم كه بجاي توليد يك برنامه كلي، برنامه‌ايي توليد كنيم كه تمام حالت‌ها را با تغييرات جزيي جوابگو باشد. با اين كار انتقال دستي برايمان خيلي هم گران تمام نمي‌شد. اين برنامه‌ها بايد به قدري ساده مي‌شدند كه توسط كاربران معمولي قابل استفاده باشند. توليد برنامه‌ها دو روز طول كشيد ولي قابل استفاده توسط كاربران ساده با تخصص جزيي براي تغيير پاره‌ايي از برنامه‌ها بود. به اين معنا كه در زمان انتقال اطلاعات با توجه به شرايط مختلف، اين برنامه‌ها را دستكاري نموده و بعد استفاده نماييم. با اين روش، انتقال و بر پا سازي داده‌اي سيستم در بعضي مواقع در شعب بزرگ حتي 2 ساعت نيز طول نمي‌كشيد.

اصلاح مغايرت‌ها از مشكلات هميشگي برپاسازي است. بزرگي يا كوچكي شعبه مشكل عمده ما نبود. مشكل زماني بروز مي‌كرد كه كارمندان شعبه از توانايي، تجربه و دانش كافي براي انجام كار قبلي بر خوردار نبودند. در پاره‌ايي ‌از شعب و به دليل مغايرت‌هاي بوجود آمده از كارهاي سال‌هاي قبل، برپاسازي طول مي‌كشيد. اگر گروهي از جانب كارفرما و قبل از شروع كار برپاسازي به شعبه برود و تمام وظايف، كارها و تشكيلات را سامان بدهد، برپاسازي با موفقيت بيشتري همراه خواهد بود.

نحوه دسته بندي گروه‌ها براي بر پا سازي:

همانگونه كه در ابتدا اشاره نمودم، چارت سازماني مشخصي در زمان شروع به بر پا سازي وجود نداشت. به مرور كه پيش رفتيم، چند نفر نيروي جوان براي كمك به امر بر پا سازي استخدام نموديم. با توجه به اينكه اين اشخاص جوان بودند و تجربه‌اي از بر پاسازي نداشتند، شروع به آموزش اين افراد و ايجاد كارگاه آموزشي كوچك و در حد امكان نموديم تا بصورت عملي در آن اندازه‌اي كه براي مهارت‌هاي مختلف نياز داريم، كار نموده وتجربه كسب نمايند.

بعد از شروع به كار نيز، به مرور براي كارهايي كه انجام مي‌شد چك ليست‌ها و مستنداتي تهيه گرديد تا همكاران با داشتن آنها كارهايي كه بايد انجام دهند مشخص باشد و از بعضي از تخصص‌هايي كه بصورت كوتاه مدت نياز بود، بي نياز گرديم و از ريسك وابستگي كار به افراد بكاهيم. از لحاظ ايجاد گروه‌هاي كاري هماهنگ، سعي مي‌كرديم كه اختلاف را از بين برده و اصول و شعارهاي كار گروهي را حاكم نماييم كه با وجود اين شعارها، كارها راحت‌تر گرديده بود، به طوري كه همكاران، خود را تنظيم و كنترل مي‌نمودند و من نيز دايم نظارت مي‌نمودم كه اين افراد از اين اصول خارج نگردند.

ما گروه‌هاي خود را بر اساس خصوصيات و شناختي كه از همكاران داشتيم به نحوي تنظيم نموديم كه اعضا بصورت ثابت باشند. بعد از مدتي متوجه شديم كه ثابت بودن گروه‌ها، مشكل زيادي برايمان ايجاد نموده چون افراد معمولا مشكلات زندگي خود را داشتند و جمع شدن گروه در يك جا و انجام ماموريت‌ها معمولا با مشكل مواجه مي‌شد. با ثابت بودن گروه‌ها، بطور متوسط 2 الي 3 شعبه در 10 روز بر پا مي‌گرديد. بعد به فكر چاره افتاديم و گروه‌ها را متغير نموديم. يعني اينكه با انجام ماموريت توسط گروه‌ها و برگشت به محل شركت، گروه ها دوباره با توجه به آمادگي افراد از ابتدا و با توجه به تخصص افراد مرتب شده و از تكرار افراد با تخصص‌هاي يكسان خود داري مي‌نموديم. در اواخر كار و با اين روش و بكار بردن تمام تجربياتي كه ذكر شد، بطور متوسط روزي 1 شعبه بر پا سازي گرديد، يعني هفته اي 7 شعبه.

راه راست: متن حاضر توسط آقاي صفري از كارشناسان خوب شركت بهسازان ملت نوشته شده و مقداري از آن تغيير داده شده است. مواردي كه در اين مقاله ذكر شد، از بارزترين مشكلات حوزه نرم‌افزار بوده و فايق آمدن برآنها باعث موفقيت پروژه مي‌شود. موفقيت پويندگان اين راه‌هاي خطير را از خداوند خواهانيم.