در ابتدا لازم است تذکر دهیم که فریب مقالاتی که به معرفی بهترین شرکت های برنامه نویسی می پردازند را نخورید. این مقالات در واقع توسط خود شرکت های برنامه نویسی تولید شده اند تا خودشان را بعنوان بهترین شرکت معرفی کنند. ولی در این مقاله ما سعی می کنیم کاملاً بی طرفانه ماهیگیری به شما یاد بدهیم تا خودتان بتوانید به این قدرت تشخیص برسید. البته در مقاله دیگری توضیح دادیم که چرا در پروژهای برنامه نویسی استفاده از فریلنسرها ریسک بزرگی است.
از کجا شروع کنیم؟
گشتی در اینترنت بزنید، از دوستان بپرسید و یک لیست از شرکت های برنامه نویسی ای تهیه کنید که شاید بتوانند نیاز شما را برآورده سازند. شما قرار است هزینه زیادی بر روی پروژه خود انجام دهید. پس باید مطمئن شوید که بهترین شرکت برنامه نویسی را به درستی انتخاب می کنید. ما تقریباً هر هفته با مشتریانی برخورد می کنیم که محصول مورد نظرشان توسط یک شرکت طراحی و تولید شده، ولی از خروجی کار راضی نیستند. حال یا به خاطر کیفیت یا به خاطر پشتیبانی و توسعه. در هر صورت، برای مراجعه به شرکت دیگر، باید کل پروژه را دور ریخته و دوباره همان هزینه را انجام دهند. پس منطقی است که قبل از شروع به خوبی تحقیق کنید.
پس از تهیه این لیست که شاید حدود 10 شرکت شده باشند، باید شروع به تماس و برگزاری جلسات با آنها بکنید. نه با این هدف که پروژه را به انجام برسانید؛ بلکه با این هدف که شرکت برنامه نویسی را خوب بشناسید.
معمولاً شرکت های برنامه نویسی نمایانگر دیدگاه مدیرعامل آن هستند. هرطور که مدیر عامل شرکت برنامه نویسی تفکر کند، کارمندان نیز از همان روش پیروی خواهند کرد. فارغ از اینکه آن روش به خوبی نتیجه می دهد یا خیر. اگر مدیر عامل در رشته هوش مصنوعی درس خوانده باشد، پروژه به سمت هوش مصنوعی خواهد رفت. اگر برنامه نویس باشد، از همان جلسات اول وارد مباحث الگوریتم و کد نویسی خواهید شد و اگر تحلیل گر یا طراح محصول باشد، خواهید دید که تمرکز شرکت در جلسات اول به سمت شناخت دقیق نیازمندی خواهد رفت.
پس جلسات اول بسیار مهم بوده و مسیر آینده پروژه را مشخص خواهد کرد.
چه چیزی معیار انتخاب بهترین شرکت برنامه نویسی نیست!
شرکت ها تلاش زیادی برای به دست آوردن پروژه شما می کنند. پس ابتدا مواردی را مطرح می کنیم که نمی توانند معیار خوبی برای انتخاب باشند؛ هرچند در نگاه اول اینطور به نظر نیایند.
قیمت اعلامی
تولید یک نرم افزار ساده، کاری زمانبر و هزینه بر است. اگر شما کار را به یک شرکت بسپارید و نه فریلنسرها، حداقل 3 نفر بر روی پروژه درگیر خواهند شد. اگر حقوق هر نفر را 20 میلیون تومان در نظر بگیریم (که معمولاً خیلی بیشتر است!) ماهی 60 میلیون تومان فقط دستمزد افراد دخیل در پروژه است. پس اگر پروژه شما 3 ماه زمان لازم داشته باشد احتمالاً قیمت محصول نهایی حداقل 180 میلیون تومان خواهد شد. پس اگر شرکتی مبلغ بسیار پایین تری به شما پیشنهاد می دهد، می توانید همان ابتدا به آن شک کنید.
البته شرکت ها برای کاهش هزینه ها روش های مختلفی را به کار می بندند که ممکن است هزینه پروژه برایشان کمی کمتر باشد. ولی اگر مثلا برای پروژه 3 ماهه مذکور به شما مبلغ 90 میلیون تومان پیشنهاد داده شد حتماً به خروجی کار شک کنید.
تعداد پرسنل شرکت برنامه نویسی
تعداد نفرات مشغول در شرکت برنامه نویسی بستگی به سابقه و سرمایه شرکت دارد. این که چقدر شرکت مذکور بزرگ است و حساب های بانکی اش پر است، برای شما مزیتی محسوب نخواهد شد. شاید در سایر صنایع تعداد پرسنل و سرمایه شرکت مزیت بزرگی باشد، ولی در صنعت برنامه نویسی، کیفیت نهایی را دید اعضای تیم و روش های کنترل پروژه تعیین می کنند. پس فریب ظاهر و ابعاد شرکت را نخورید.
موقعیت جغرافیایی
برخی از شرکت ها برای جذب مشتریان، تمایل به اجاره یا خرید ساختمان های مجلل در نقاط معروف شهر را دارند. ولی مثل مورد قبل، مراقب باشید که به جای اینکه به فرآیندهای شرکت تمرکز کنید، مدهوش تجهیزات و بناهای آنها نشوید. شاید شرکت های بزرگ اصلا دغدغه ای برای تمرکز روی پروژه شما نداشته باشند.
البته اینکه شرکت برنامه نویسی در شهر شما مستقر هست یا خیر شاید برای شما مهم باشد. چرا که رفت آمد ممکن است هزینه هایی را به شما تحمیل کند.
رتبه شورای عالی انفورماتیک
شورای عالی انفورماتیک یکی از مراکزی است که قرار است برای شرکت ها اقدام به رتبه بندی نماید تا مشتریان ساده تر بتوانند کیفیت کار را بسنجند. ولی در واقع شرکت ها بیشتر برای کار با سازمان های دولتی به دنبال کسب رتبه بالاتر هستند. ولی در نهایت حتی به نفع سازمان های دولتی هم نشده است و آنها که پول و ارتباطات بهتری داشته اند، رتبه های بهتری دریافت کرده اند.
رتبه بندی انفورماتیک به صورت ۱ تا ۷ بوده که در آن رتبه ۷ پایین ترین و رتبه ۱ بالاترین درجه را دارد و معیارهای مورد استفاده برای این سنجش موارد زیر است:
- مدرک تحصیلی هیئت مدیره
- میزان حقوق و دستمزد پرداختی شرکت ها به کارکنان
- میانگین درآمد مشمول مالیاتی شرکت ها
- رضایت مشتری
مورد اول که به سادگی در بازار خرید و فروش می شود و 2 مورد بعدی نیز موید سرمایه سهامداران شرکت است. ولی نکته جالب در مورد نحوه سنجش رضایت مشتری است. اگر شکایتی علیه شرکت در دادگاه ثبت نشده باشد شرکت تمام امتیاز این بخش را دریافت می کند! پس در واقع رتبه بالاتر یعنی پول بیشتر سهامداران. آیا این برای شما کافی است؟
عضویت در نظام صنفی رایانه ای
هر شرکتی با رعایت الزامات قانونی کار (ثبت و مالیات) و پرداخت حق عضویت، به سادگی به عضویت در نظام صنفی رایانه ای در می آید. آیا این برایتان کافی است؟!
تعداد پروژه انجام شده توسط شرکت
شاید در نگاه اول تعداد پروژه های انجام شده معیار خوبی برای سنجش تجربه کاری شرکت برنامه نویس باشد، ولی نمی تواند همه چیز باشد، اگر شرکتی جزو اولین شرکت های برنامه نویسی تأسیس شده باشد، مسلماً تعداد پروژه های انجام شده زیادی دارد. خیلی خوب است ولی مراقب باشید که کیفیت از کمیت بسیار مهم تر است.
قول انجام هرآنچه شما می خواهید
این یکی از ابزارهای دقیقی است که می خواهیم به شما بدهیم. معمولا کارفرماها به علت عدم تخصص در حوزه برنامه نویسی، اطلاعات کاملی از نحوه انجام کار یا مواردی که موجب موفقیت یا شکست پروژه می شود ندارند. لذا وظیفه کارشناسان شرکت برنامه نویسی است که اشکالات هر ایده و پروژه را به کارفرما گوشزد کنند و مانع وقوع آن شوند.
پیشنهاد می کنیم در میان صحبت در مورد ایده خود، موردی را مطرح کنید که خودتان هم قبول ندارید ولی آن را عنوان کنید تا ببینید نحوه برخورد کارشناسان آن شرکت با موضوع به چه صورت است. اگر خیلی ساده گفتند که بله حتما انجام می شود، همانجا مطمئن شوید که پروژه شما را به شکست منجر خواهند کرد. ولی اگر منطقی دلایل اشتباه بودن ایده را به شما گوشزد کردند، همانجا به فکر عقد قرارداد باشید. آنها امانتدار خوبی برای سرمایه های شما خواهند بود.
زیبا بودن طراحی محصولات قبلی
زیبایی طراحی چیزی نیست که نتوان آن را در سایر شرکت ها پیدا کرد. پس به دنبال معیارهای قوی تری باشید. تجربه کاربری به نظر معیار بهتری خواهد بود که تشخیص آن کمی دشوارتر است و حتی گاهی مجبور به فدا کردن زیبایی هستیم.
معیارهای تشخیص بهترین شرکت برنامه نویسی
حال در این بخش برایتان شرح خواهیم داد که چه معیارهایی را برای سنجش در نظر بگیرید تا انتخاب درستی داشته باشید.
چه اسنادی را به شما تحویل می دهند؟
اولین پرسش پس از معارفه اولیه با شرکت برنامه نویسی همین سوال است. خیلی صریح بپرسید که چه اسنادی به شما تحویل خواهند داد. مراقب باشید که شما اسناد را نام نبرید. اجازه دهید خودشان صحبت کنند و هرچه گفتند را یادداشت کنید. این اسناد همان چیزی است که منجر به تولید محصول مورد نظر شما خواهد شد. اگر شرکتی به تولید این اسناد پایبند باشد، می تواند مشاور خوبی در طول پروژه برای شما باشد. در ضمن فراموش نکنید که این اسناد پس از تولید محصول، توسعه پذیری آن را تضمین خواهند کرد. در بخش انتهایی این مقاله اسناد را برایتان شرح داده ایم.
برای طراحی محصول چه جایگاهی قائل هستند؟
طراحی محصول چیزی فراتر از کدنویسی است. شرکت برنامه نویسی ای که به این بلوغ رسیده است مسلماً بسیار ارزشمند خواهد بود. دقت کنید که چه کسی با شما در جلسات صحبت می کند. او یک برنامه نویس است یا تحلیگر و طراح. یک تحلیلگر خوب، خوب گوش می دهد و به دنبال نیازهای پنهان شماست. برخلاف برنامه نویس که در جلسات در فکر این است که برای فلان فرم از Text Box استفاده کند یا Combo Box. اطلاعات را در دیتابیس ذخیره کند یا از Enumeration استفاده کند.
این یک خطر بالقوه است. چرا که برنامه نویس و مشتری معمولاً زبان یکدیگر را متوجه نمی شوند و اگر مدیر پروژه نتواند به خوبی مدیریت کند، به اختلاف های بسیار بزرگ در فرآیند توسعه محصول منجر خواهد شد.
تحلیلگر و طراح سامانه که معمولاً مهندسان صنایع و یا افرادی هستند که دوره های تحلیل و طراحی را گذرانده اند، به خوبی زبان مشتری را می دانند و نیاز او را به زبان قابل فهم به برنامه نویس منتقل خواهند کرد. نگران نباشید، تحلیلگر نیاز شما را به خوبی درک می کند. فقط باید به او اجازه دهید که بتواند ایده هایش را پیاده سازی کند. البته ناگفته نماند که تجربه تحلیلگر هم در کیفیت پروژه نهایی بسیار دخیل است.
تعداد نفرات مستقر روی پروژه شما
برخلاف تعداد پرسنل شرکت که هیچ مزیتی محسوب نمی شود، تعداد نفراتی که بر روی پروژه شما فعالیت خواهند کرد، اهمیت خواهد داشت. البته این موضوع بیشتر بیانگر موقعیت های شغلی است که شرکت برای پروژه شما در نظر می گیرد. مثل: تحلیلگر، مدیر پروژه، طراح UI/UX، برنامه نویس، تست و استقرار.
چه دیدگاهی نسبت به UX دارند؟
UX یا همان تجربه کاربری (User Experience) چیزی فراتر از ظاهر نرم افزار است. اگر قرار بود فقط به ظاهر اکتفا شود که مبحث UI سال ها بود که در دانشگاه ها تدریس می شد. ولی تجربه کاربری قرار است موفقیت یک محصول را تضمین کند.
یکی از مواردی که برای انتخاب بهترین شرکت برنامه نویسی حتما باید به آن توجه کنید، دیدگاه شرکت نسبت به UX است. البته که شما در مذاکرات خود، به هیچ شرکت برنامه نویسی بر نخواهید خورد که بگوید من به تجربه کاربری اعتقادی ندارم. ولی این هنر شماست که متوجه بشوید که آن شرکت چقدر توانایی در اجرای UX دارد. ولی اگر سطح تفکر شرکت نرم افزاری از تجربه کاربری تنها به رنگ و ظاهر محصول منعطف می شود، بدانید که آن شرکت هیچ موفقیتی در این موضوع نخواهد داشت.
بخشی از تجربه کاربری به فرآیندها بر می گردد. اینکه کاربر برای انجام یک کار چه مراحلی را باید طی کند و این مراحل چقدر قرار است برای او خوش آیند یا ناخوش آیند باشد. پس دقت کنید که آیا در طراحی UX صحبتی از فرآیندها به میان می آورند و یا سطح آن را به خروجی یک طراح گرافیست پایین می آورند.
برنامه نویس طراحی سیستم را بر عهده دارد یا تیم تحلیل و طراحی؟
برنامه نویس ها ذهنی ساختار یافته دارند ولی مشتریان، تصوری انتزاعی از محصول. لذا مشتریان برای توضیح نیاز خود برای برنامه نویس دچار مشکل است و برنامه نویس در شرح روش های کاری خود برای مشتری عاجز است. لذا در پروژه های بزرگ پس از چند ماه که بخشی از پروژه برای مشتری قابل لمس می شود، کم کم اختلافات بین آنها ظاهر می شود.
این اختلاف آنجا ظاهر می شود که برنامه نویس از سنتی بودن مشتری و عدم درک تکنولوژی گلایه می کند و مشتری از عدم توجه به خواسته ها، برآورده نشدن نیازها و عدم تطابق محصول طراحی شده با درخواست های مطرح شده.
اما غافل از اینکه هیچ یک از طرفین مشکلی ندارند. تنها زبان شان برای یکدیگر قابل درک نیست.
تحلیلگر و طراح که در پروژه های نرم افزاری وظیفه شناخت دقیق نیازمندی مشتری و طراحی محصول و ارائه به برنامه نویس با زبان او را به عهده دارد، این گپ را پر کرده و مانع از شکست پروژه می شود. تحلیلگر معمولا مهندسان صنایع و یا مهندسان IT هستند که به خوبی با روش های تحلیل و طراحی آشنا هستند و می توانند مستندات پروژه را آماده کنند. در مقاله مراحل تولید نرم افزار به تفصیل در این مورد صحبت کرده ایم.
آیا اسناد را خودشان آماده می کنند و یا از شما درخواست می کنند؟
اگر شرکت برنامه نویسی از شما درخواست RFP دقیق کرد تا عین آن را دقیقا اجرا کند، همانجا جلسه را ترک کنید.
درست است که مشتری باید RFP دقیق را به شرکت برنامه نویس ارائه کند و شرکت در قبال آن پروپوزال ارائه کند. ولی به دلیل عدم آشنایی مشتریان با تکنولوژی های حوزه IT بسیار پیش می آید که در این بخش ضعیف باشند. لذا شرکت برنامه نویس موظف است متعهدانه در کنار مشتری باشد و اگر این ضعف را حس کرد، خود وارد عمل شده و اسناد را آماده کند. عدم توانایی شرکت در تهیه این اسناد، نشانگر ضعف آنها در تحلیل و طراحی سامانه است.
وظیفه تست بر عهده چه کسی است؟
کم نیستند شرکت هایی که پس از کد نویسی محصول، به مشتری می گویند که محصول آماده است. برو تست کن و اگر اشکالی بود به ما بگو تا رفع کنیم. حتی بسیار جسورانه تر، به مشتری مدت زمان اعلام می کنند که تنها در آن زمان مهلت دارند اشکالات را اعلام کنند. در غیر اینصورت شرکت، مسئولیتی در قبال مشکلات نخواهد داشت.
وظیفه تست و دیباگ هر محصولی بر عهده شرکت طراح است و پس از انجام دقیق این مرحله، مشتری تنها باید موارد خاص را چک کند. مشتری فرصت ندارد تا تمام احتمالات ممکن در کار با سامانه را بررسی کند. پس چطور این وظیفه را بر عهده مشتری می گذارند!
آیا بر روی کیفیت و زمان تضمین می دهند؟
پروژه های برنامه نویسی هم اکنون با پیشرفت روش های مدیریت پروژه به سطحی از بلوغ رسیده اند که به سادگی می توان کیفیت و زمان انجام پروژه را تضمین کرد. اگر شرکت برنامه نویسی برای تضمین این موارد زیاد قاطعانه سخن نمی گوید، احتمالا پروژه های قبلی اش نیز با شکست مواجه شده اند.
البته اگر پروژه شما لبه تکنولوژی محسوب می شود، طبیعی است که نتوان هیچ ضمانتی بر روی آن ارائه کرد. ولی پروژه های عادی نرم افزاری کاملاً قابل تخمین هستند.
چه اسنادی را مطالبه کنیم؟
از اولین جلسات شناخت پروژه تا مراحل پایانی پروژه اسناد مختلفی باید تولید و به شما تحویل داده شوند. البته نه اینکه اصرار داشته باشید تا تمام این اسناد تحویل شود. ولی هرچه شرکتی به تحویل این اسناد پایبندتر باشد، به احتمال بالا بسیار حرفه ای تر از سایر شرکت ها است.
صورتجلسات
پایبندی شرکت برنامه نویسی به ثبت صورت جلسات و ارائه آنها به شما، نشان تعهد آن شرکت به توافقات انجام شده و عدم تمایل به خروج از تعهدات است.
Product Backlog
این سند، یک سند مختصر 1 یا 2 صفحه ای است که کلیات امکانات پروژه را تعیین می کند و به نوعی تعیین و توفق طرفین بر روی ابعاد پروژه است که شرکت برنامه نویسی پس از شناخت پروژه به مشتری تحویل می دهد.
BPMN
نمودار Business Process Model and Notation به نمایش از نحوه انجام فرآیندهای درون پروژه است. قبل از طراحی محصول تمام فرآیندها توسط مهندسین صنایع به صورت نمودار در می آیند. این نمودار هم توافقی بین مشتری و شرکت برنامه نویسی است و هم کمکی برای تحلیل درست پروژه و فهم بهتر اعضای پروژه
ERD
این سند مهم ترین سندی است که باید تولید شود. اصلا از تولید آن کوتاه نیایید.
نمودار ارتباط موجودیت ها (Entity Relationship Diagram) یک مدل سازی تصویری از موجودیت های درون پروژه و ارتباطات بین آنها می باشد. این مدل در واقع مقدمه طراحی ساختار اطلاعات درون برنامه است. اگر این مرحله به خوبی به انجام برسد، در آینده توسعه سامانه به خوبی قابل انجام خواهد بود.
این سند کمک می کند که اطلاعات به صورت شفاف، تفکیک شده و منظم ذخیره شوند. به نحوی که هر نوع گزارش گیری و تغییر در آینده ممکن باشد.
البته شاید شرکت برنامه نویسی این سند را قبل از تسویه کامل به شما تحویل ندهد، ولی حتماً مطمئن شوید که این سند تولید شده است و از آنها بخواهید که آن را به شما نشان دهند.
Class Diagram
این نمودار (Class Diagram) در واقع ساختار اطلاعات را درون بانک اطلاعاتی مشخص می کند و توسط برنامه نویس به سادگی قابل فهم است. کلاس دیاگرام طراحی کلاس ها در برنامه نویسی شیئ گرا است که توسط تیم تحلیل طراحی، طراحی می شود و برنامه نویس آن را پیاده سازی می کند.
Prototype
پروتوتایپ (Prototype) در واقع یک نمونه کوچک از محصول نهایی است. در برخی مواقع که مشتری تمایل دارد محصول را قبل از تولید ببینید، نمونه ای کوچک از آن توسط نرم افزارهای خاص تولید می شود که به ظاهر کار می کند. ولی در واقع هیچ کدی در پشت آن نوشته نشده است.
تهیه این نمونه در پروژه ها الزامی نیست. ولی بدانید که چنین نمونه ای هم از شرکت ها در قبال پرداخت هزینه قابل دریافت است.
گانت اجرایی پروژه
گانت اجرایی (Gant Chart) مشخص کننده مدت زمان هر بخش از پروژه و ترتیب و توالی اقدامات روی پروژه است که حتماً باید داخل پیوست فنی قرارداد آورده شود.
قرارداد شفاف
در نهایت حتما یک قرارداد شفاف با بهترین شرکت برنامه نویسی که انتخاب کرده اید ببندید.