ورود

View Full Version : مدیریت پروژه های نرم افزاری توسط تیم برنامه نویسی



mosi_asgari
پنج شنبه 10 دی 1388, 15:32 عصر
سلام

فرض کنید یک پروژه Deskop Application داریم ( فرض کنید نرم افزاری مانند Microsoft Word یا یک IDE مانند Visual Stadioیا هر نرم افزار دیگه که دوست دارین ).

فرض کنید که حداقل 3 برنامه نویس هم دارید ( بیشتر هم می تونه باشه) و شما هم مدیر پروژه این نرم افزار هستید و باید این پروژه رو توسط تیم خودتون که شامل اون برنامه نویس ها است انجام بدید.

فرض هم بر این است که نیاز های نرم افزار کامل بیان شده و الان وقت پیاده سازی و کدنویسی است.

خوب روش مدیریت شما چگونه است؟؟؟ تقسیم وظایف این برنامه نویس ها برای کد نویسی چگونه است؟؟؟ اگر شما مدیر پروژه بودید به هر برنامه نویس می گفتید که روی چه بخشی از برنامه کار کنه؟

آیا برای این کار ابتدا شما که مدیر پروژه هستید باید کل نرم افزار را در قالب نمودارهای UML طراحی کنید بعد به هر برنامه نویس بگید که فلان قسمت از نمودار UML که شامل طراحی کلاس ها است را برنامه نویسی کند یا طوری دیگر عمل می کردید؟

در کل این بحث که شروع شده است مبحث مهمی است. امیدوارم همه دوستان در این بحث شرکت کنند.

Asad.Safari
شنبه 12 دی 1388, 17:58 عصر
سلام

فرض کنید یک پروژه Deskop Application داریم ( فرض کنید نرم افزاری مانند Microsoft Word یا یک IDE مانند Visual Stadioیا هر نرم افزار دیگه که دوست دارین ).

فرض کنید که حداقل 3 برنامه نویس هم دارید ( بیشتر هم می تونه باشه) و شما هم مدیر پروژه این نرم افزار هستید و باید این پروژه رو توسط تیم خودتون که شامل اون برنامه نویس ها است انجام بدید.

فرض هم بر این است که نیاز های نرم افزار کامل بیان شده و الان وقت پیاده سازی و کدنویسی است.

خوب روش مدیریت شما چگونه است؟؟؟ تقسیم وظایف این برنامه نویس ها برای کد نویسی چگونه است؟؟؟ اگر شما مدیر پروژه بودید به هر برنامه نویس می گفتید که روی چه بخشی از برنامه کار کنه؟

آیا برای این کار ابتدا شما که مدیر پروژه هستید باید کل نرم افزار را در قالب نمودارهای UML طراحی کنید بعد به هر برنامه نویس بگید که فلان قسمت از نمودار UML که شامل طراحی کلاس ها است را برنامه نویسی کند یا طوری دیگر عمل می کردید؟

در کل این بحث که شروع شده است مبحث مهمی است. امیدوارم همه دوستان در این بحث شرکت کنند.

نمی خواهم یه تعریف کلاسیک از مدیریت پروژه کنم ... چونکه در ایران مدیریت بر رو پروژه های نرم افزاری با پروژه های دیگه فرق میکنه چونکه اعضای تیم تولید نرم افزار همیشه به تعداد نیاز نیستند مثلا در یک پروژه ساختمانی ما همیشه یک مهندس ارشد داریم این مهندس نقشه میکشه اون نقشه رو میده به مهندس ناظر . بعد اون ناظر به بنا { برنامه نویس ارشد } دستور ساخت یک دیوار رو میده و بعد بنا با مدیریت کارگرها { برنامه نویس ها} که هر کارگر باید چی کار کنه شروع به ساخت دیوار می کنند و دیگه مهندس ناظر کار نداره که اون کارگر X چی کار داره انجام میده و براش مهمه که دیوار درست ساخته بشه و به دیوار های دیگه درست Join بشه و مهندس ارشد هم کار نداره مهندس ناظر چی کار داره میکنه فقط براش این مهمه که پروژه در محدوده بودجه و زمان پروژه در حرکت است.

معمولا شما خودت هم جزوی از برنامه نویس ها و گروه تحلیل هستید . برای اینکه پروژت با شکست روبرو نشه باید خودت Guru (معلم و لیدر) تیمت باشی . یعنی باید کل پروژت دستت باشه اعم از تحلیل و کد ها و همه چی . باید خودت بتونی هر جور کدی بنویسی . اصلا در پروژه ها نمیشه به هیچ کس اعتماد کرد ... تقریبا پروژه تکی نوشته می شه و بقیه اعضا سیاهی لشکر هستند .

موفق باشید

JaguarXF
شنبه 12 دی 1388, 18:59 عصر
درسته.
هر پروژه ای یک Initial Release داره که اون رو معمولا Team Lead و اگر کمی ساده تر باشه Software Architect انجام میده .
بقیه اعضا که Software Eng یا حتی Senior Software eng هستند پس از اینکه نسخه اولیه پروژه منتشر شد میتوانند وارد پروژه شوند مثلا برای برطرف کردن یک سری باگها . نوشتن یک سری enhancement های ساده تر و ...

mosi_asgari
شنبه 12 دی 1388, 20:05 عصر
ممنون از JaguarXF و SIR_asad

دقیقا درسته.

تو ایران باید کد رو یک نفر بنویسه و بقیه تیم هم نقش چندان زیادی ندارند چون معمولا اکثر افراد تیم برنامه نویسی تجربه برنامه نویسی زیادی ندارند و فقط به بهانه اینکه مثلا syntax یک زبان را یاد گرفته اند و چندتا مثال ساده با این زبان نوشته اند فکر می کنند که دیگر خدای برنامه نویسی شده اند و آمده اند در یک شرکت تا کار کنند.

مدیر پروژه بدبخت هم باید با این برنامه نویس های تازه کار یک پروژه انجام بده.همه هم انتظار دارند که پروژه خوب از آب در بیاد و این رو از مدیر پروژه می خواهند.

پس حرف شما دوستان اینه که در ابتدای شروع کدنویسی یک پروژه ، یک نفر خاص شروع به کدنویسی می کند. در واقع Base کار را یک نفر انجام می دهد و دیگر برنامه نویسان روی این Base شروع به کد نویسی می کنند؟؟؟ درسته؟؟؟

خوب در این صورت باید کسی هم باشد که این Base رو به برنامه نویسان آموزش بده و متدها ، کلاس ها و ارتباط این کلاس ها رو به اون ها بگه درسته؟؟؟

Asad.Safari
یک شنبه 13 دی 1388, 03:17 صبح
پس حرف شما دوستان اینه که در ابتدای شروع کدنویسی یک پروژه ، یک نفر خاص شروع به کدنویسی می کند. در واقع Base کار را یک نفر انجام می دهد و دیگر برنامه نویسان روی این Base شروع به کد نویسی می کنند؟؟؟ درسته؟؟؟


نه !

باید یه نفری رو داشته باشی که کل سیستم دستشه , منظور از کل سیستم همون Big Picture پروژه . این نفر پروژه رو Initiate میکنه و این نفر است که Task ها رو تقسیم می کنه . البته لازم نیست این نفر خودش هم کد بنویسه . این نفر می تونه خودش تحلیل کنه بعد تحلیل رو بده یکی براش دیتابیس بسازه بعد هر قسمت مثلا یک فرم رو میده به یه برنامه نویس البته با توضیحات تکمیل .

اگر به یه برنامه نویس ساده بیای کل سیستم رو تشریح بکنی مطمئن باش که همه چیز رو قاطی خواهد کرد . ظرفیت یه برنامه نویس یه فرم است وقتی اون فرم تکمیل شد فرم بعدی با توضیحات مربوطه . کل سیستم باید دست همون Guru تیم باشه .

موفق باشید

mahan8204
یک شنبه 13 دی 1388, 17:08 عصر
به نظر من وجود یک استاندارد در پیش برد پروژه برای مدیر اون پروژه خیلی می تونه مهم باشه.مدیر پروژه غیر از تحلیل تولید و پیاده سازی سیستم هدف های دیگه ای رو هم باید در حاشیه داشته باشه.مثل پایین اوردن هزینه های پشتیبانی، کنترل جابه جایی برنامه نویس ها یا خروج برنامه نویسها و ورود برنامه نویسهای جدید به پروژه و ... .که بعضی از این موارد اگه درست و به موقع بهشون رسیدگی نشه می تونه روند تولید و اجرای پروژه رو دچاره مخاطره کنه.وجود یک استاندارد واحد در پروژه چه برای تولید و چرا برای توسعه و پشتیبانی می تونه در روند تولید و اجرای پروژه مفید باشد.
به عنوان مثال: من در پروژه هام از معماری چند لایه استفاده می کنم.من کل پروژه رو به 3 لایه اصلی تقسیم می کنم.
UI: که همون محیطی که کاربر می بینه و باهش در ارتباطه.(فرمهای نرم افزار)
Biz Role:این لایه همون قواعد و قوانین برنامه منه که عملا کلیه پردازشی که روی داده ها انجام میشه در این لایه قرار داره که نتیجه این پردازشها یا برای نمایش به سمت UI فرستاده می شه یا برای ذخیره به لایه DataAccess.
DataAccess: این لایه ای که مسئول دریافت و ارسال داده ها و اطلاعات از/به دیتابیسه.من تمام عملیات Insert, Update, Delete, Select رو به عهده این لایه گذاشتم.
با این توضیحاتی که دادم من به جایی که نرم افزارم رو بین برنامه نویسهام به صورت ستونی تقسیم کنم به صورت سطری تقسیم می کنم.
کسی که با سلیقه تره می شه مسئول طراحی UI بدون اینکه خبر داشته باشه تو بقیه لایه ها دیگر اعضای تیم دارن چیکار می کنن.کسی که قدرت تحلیل بیشتری داره و با قوانین خاص نرم افزار آشناست می تونه به سراغ طراحی Biz Role و با محاسبات و فرومولهای مختلف سروکله بزنه.در مورد لایه DataAccess هم من خودم یه بار تولیدش کردم طوری که روی همه پروژه هام طبق استانداردی که دارم کار کنه.
با این روال تو چند تا پروژه ای که انجام دادم جواب گرفتم.چون همه در یک ساختار و به یک شکل کد میزنن با عوض شدن نیرو ها افراد جدید به راحتی و در مدت زمان کم جای نفرات قبلی رو میگیرن.از طرفی برنامه نویسی که میاد تو پروژه نیاز نیست حرفه ای باشه.همین قدر که بلد باشه کد بزنه کافیه.تو این روش هزینه پشتیبانی و توسعه هم به شدت کاهش پیدا می کنه.
در ضمن با صحبت دوست خوبم که گفت پروژه باید توسط نفر اصلی تیم انجام شه و بعد به دیگر برای کامل کردن و بر طرف کردن باگ واگذار شه مخالفم.وظیفه مدیر مدیریت نه کار اجرایی.وقتی مدیر وارد کار اجرایی میشه نه میتونه درست مدیریت کنه نه درست کار اجرایی رو انجام بده که این برای یک پروژه سالم اصلا جالب نیست.مدیر باید کاملا مشرف به کل پروژه و زوایای کور اون باشه ولی هیچوقت نیاید درگیر اجرا بشه.
خلاصه کلام: به نظر بنده دوستانی که دنبال مدیریت پروژه هستن بگردن اول یه استاندارد درست درمون پیدا کنن که البته نیاز به تجربه فراوان داره.
از دوستانی که این مطلب رو میخونن و ایراداتش رو بهم میگن قبلا کمال تشکر رو دارم.
aminnaderi.public@yahoo.com

JaguarXF
یک شنبه 13 دی 1388, 19:19 عصر
کسی که با سلیقه تره می شه مسئول طراحی UI بدون اینکه خبر داشته باشه تو بقیه لایه ها دیگر اعضای تیم دارن چیکار می کنن

نه!
کاردستی که درست نمیکنیم! نرم افزاره .
نرم افزار هم معولا داره کاری انجام میده که این کار یک work flow داره .
طراحی UI هم دقیقا باید منطبق بر اون باشه و منطبق بر یوز کیس ها.
همونطور که یوز کیس ها داکیومنت میشوند UI هم داکیومنت میشود و برنامه نویس به اون مراجعه میکند.
یکی از مواردی که باید در طراحی UI مدنظر قرار بگیره سرعت انجام یک کار هست که مثلا از ابتدای ورک فلو تا انتها مثلا برای ثبت یک سفارش . کاربر چند تا کلیک انجام میدهد ؟ چند بار ماوس رو جابجا میکند ؟ چند بار TAB لازم هست زده بشه و ... چگونه میشه این رو کاهش داد ؟

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

mahan8204
دوشنبه 14 دی 1388, 09:43 صبح
ممنونم دوست عزیز بابت نکته ای اهش اشاره کردی.حق با شماست.من به این نکته دقت نکرده بودم.
و در مورد سلیقه طراح UI باید بگم که این یک مثال بود.من می خواستم توانایی های خاص افراد رو در کاری که قرار انجام بدن مشخص کنم.بیشتر هدف من مطرح کردن این ساختار بود.

mosi_asgari
دوشنبه 14 دی 1388, 16:24 عصر
بعد هر قسمت مثلا یک فرم رو میده به یه برنامه نویس البته با توضیحات تکمیل .

اگر به یه برنامه نویس ساده بیای کل سیستم رو تشریح بکنی مطمئن باش که همه چیز رو قاطی خواهد کرد . ظرفیت یه برنامه نویس یه فرم است وقتی اون فرم تکمیل شد فرم بعدی با توضیحات مربوطه . کل سیستم باید دست همون Guru تیم باشه .

موفق باشید


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

خوب وقتی Base برنامه طراحی نشده به برنامه نویست می خوای بگی برو فرم طراحی کن؟

اگر بر فرض مثال تمامی فرم ها باید از یک کلاس پایه ارث بری کنند تا وقتی که این کلاس طراحی نشده است که نمی شود شروع به کد نویسی فرم کرد؟؟؟ می شود؟




به عنوان مثال: من در پروژه هام از معماری چند لایه استفاده می کنم.من کل پروژه رو به 3 لایه اصلی تقسیم می کنم.
UI: که همون محیطی که کاربر می بینه و باهش در ارتباطه.(فرمهای نرم افزار)
Biz Role:این لایه همون قواعد و قوانین برنامه منه که عملا کلیه پردازشی که روی داده ها انجام میشه در این لایه قرار داره که نتیجه این پردازشها یا برای نمایش به سمت UI فرستاده می شه یا برای ذخیره به لایه DataAccess.
DataAccess: این لایه ای که مسئول دریافت و ارسال داده ها و اطلاعات از/به دیتابیسه.من تمام عملیات Insert, Update, Delete, Select رو به عهده این لایه گذاشتم.
با این توضیحاتی که دادم من به جایی که نرم افزارم رو بین برنامه نویسهام به صورت ستونی تقسیم کنم به صورت سطری تقسیم می کنم.
کسی که با سلیقه تره می شه مسئول طراحی UI بدون اینکه خبر داشته باشه تو بقیه لایه ها دیگر اعضای تیم دارن چیکار می کنن.کسی که قدرت تحلیل بیشتری داره و با قوانین خاص نرم افزار آشناست می تونه به سراغ طراحی Biz Role و با محاسبات و فرومولهای مختلف سروکله بزنه.در مورد لایه DataAccess هم من خودم یه بار تولیدش کردم طوری که روی همه پروژه هام طبق استانداردی که دارم کار کنه.

aminnaderi.public@yahoo.com

درسته ، ولی Biz Role شما باید از کلاس ها و متد های DataAccess استفاده کند. وقتی که هنوز DataAccess به اتمام نرسیده است و مشخص نیست که چه کلاس ها و چه متدهایی دارد Biz Role شما می خواهد کدام متدها را برای دسترسی به Data Store فراخوانی کند؟؟؟؟

در UI هم احتیاج به این است که متد ها و کلاس های Biz Role شما فراخوانی شود و وقتی که Business Layer شما آماده نیست برنامه نویس UI چه کاری می تونه بکنه به غیر از اینکه یکسری کنترل روی فرم Drag and Drop کنه؟؟؟

----------------------------------------------------------------------------------------------
دوستان ، حرف من اصلا بحث از پروژه های روزانه ای که همه ما قادر به نوشتن آن هستیم نیست. اگر به پست ابتدایی نگاهی دوباره بکنید می بینید که من پروژه هایی مانند Microsoft Word ، Visual Studio ، Photoshop ، Corel ، AutoCad و هر نرم افزار دیگه ای که شما باهاش روزانه کار می کنید رو می گم.

اصلا بحث من پروژه هایی نیست که 30 تا فرم ورود اطلاعات دارند و تمامی کار آنها این است که در DataBase ذخیره کنند و نمایش بدهند. که هر فرم را بدی به یه برنامه نویس.

اصلا مگه تو نرم افزار های بالا که نام بردم چندتا فرم پیدا می شه؟ یا تو کدوم یک از انها دسترسی به DB کار اصلی آنها می باشد که شما لایه DataAccess رو مثال می زنید؟؟؟

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

mosi_asgari
چهارشنبه 16 دی 1388, 21:17 عصر
کسی نبود که دو کلام حرف علمی و حساب شده داشته باشه؟

JaguarXF
پنج شنبه 17 دی 1388, 06:43 صبح
بهت گفتیم که !

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

علتش هم این هست که وقتی پروژه ای شروع میشه ابتدا صدها API و اسکریپت واسش نوشته میشه که به مرور زمان هم ممکنه بهشون اضفه بشه یا نشه . اینها رو هیچ کسی غیر از معمار نرم افزار پروژه نباید و نمیتونه بنویسه . سایر برنامه نویس ها وقتی به پروژه می پیوندند و ویژگی جدیدی به پروژه اضافه میکنند در اکثر موارد دارند از همون توابع از قبل موجود استفاده میکنند و حتی باید از معمار نرم افزار اجازه کسب کنند تا تابع جدیدی به core اضافه کنند .

برای مثال همین IDE که مثال زدی . این در کل دو بخشه . یکی طرف reference side یکی هم طرف activity side . عاقلانه ترین کار اینه که دو نفر شروع به نوشتنش بکنند . یکی طرف دیزاین رو بنویسه . ( طرفی که Layout داره و کنترلها روش قرار میگیرند و فرم طراحی میشه ) . طرف دیگرش هم طرف ران تایم هست .
اگر تحلیل و طراحی شی گرای خوب و دقیقی صورت گرفته باشه و در کد نویسی هم به خوبی اینترفیس ها و ابتسترکشن تعریف شده باشه و بر طبق Design By Contract (http://en.wikipedia.org/wiki/Design_by_contract) هم عمل کرده باشند هیچ مشکلی برای تقسیم کردن این بخشها بین چند معمار نرم افزار پیش نمیاد .

hamed_fn
پنج شنبه 08 بهمن 1388, 19:40 عصر
با سلام بر دوستان
من تو شرکتم چند تا برنامه نویس دارم که هرکدوم به زبانهای مختلف کار می کنند
وقتی یه پروژه ای رو قرارداد می بندم اول از همه تو یه جلسه با همه کارکنان مشورت کرده بعد روی پروژه کار می کنیم .
با تشکر

SAASTN
پنج شنبه 06 اسفند 1388, 20:06 عصر
فرض کنید می خواهید یه برنامه گرافیکی Vector Base مانند Corel طراحی کنید قدم اول شما به عنوان مدیر پروژه چیه؟؟؟ به شما یه تعدادی هم برنامه نویس دادن که باید با آنها این پروژه رو به اتمام برسونید.
از کجا شررع می کنید. به هر برنامه نویس چی می گید؟

با سلام
ببخشید که با فاصله زمانی زیاد بحث رو ادامه می دهم.
دوست عزیز بنده دقیقا یک همچین پروژه ای دستم هست!! یک نرم افزار در حوزه مهندسی عمران که اطلاعات ساختمان رو از یک نرم افزار دیگه میگیره یک سری محاسبات روش انجام میده و نقشه اجرایی ساختمان رو تهیه میکنه و در AutoCad تحویل میده. فضای نرم افزار کاملا گرافیکیه، یک موتور سه بعدی بر اساس OpenGL نوشتیم که ساختمان رو توش نشون بدیم و ویرایش کنیم و ...
البته من تنها 6 ماهه که مدیر این پروژه هستم و 2 سال و نیم قبل از اون به مدت یک سال تک برنامه نویسش و 1 سال و نیم هم یه چیزی تو مایه های برنامه نویس ارشدش بودم.
کار بسیار سخته و بسیار هم کند پیش میره، دلیل اون هم فقط و فقط یک چیزه و اون اینکه در ایران تنها به نرم افزار های اتوماسیون و درگیر با DB اهمیت داده می شه که اون هم بر میگرده به این که کپی رایت نداریم و تنها نوشتن برنامه های uniq توجیه اقتصادی دارند و ................... هزار تا بدبختی دیگه.

بدون که برای نوشتن یک همچین برنامه هایی قبل از نحوه تقسیم وظائف بین نیرو هات هزار تا مشکل دیگه داری مثل:
1- جذب نیرو هات: میان مساحبه کنن می پرسن دیتابیستون چیه؟ چرا تو اگهی اشاره نکردین؟ جواب میدی برنامه دیتا بیس نداره، کلی هنگ میکنه پیغام خطا میده و ... بعد براش توضیح میدی که با photoshop و 3dmax که کار تراکنشی نمی کنن و دیتابیس ندارن، یک کم میره تو فکر و تازه فصل نوینی از دنیای نرم افزار جلوی چشماش باز میشه.
2- آموزش نیرو هات: تو دانشگاه کاری که غیر از برقراری connection به sql به دانشجو ها یاد نمی دن. تو بازار کار هم که اینجور کارا انجام نمیشه و وقتی که یکی پیداش میشه که می دونه فرق raster با vector چیه معمولا یک ادمه همه فن حریفه که حداقل ساعتی 6-7 هزار تومن میخواد. پس شما همون تازه کاره رو میگیری که از همه بهتر بود ( چون میدونست canvas چیه! ای وای بر ما!) و با صبرو حوصله لا یتناهیت براش توضیح میدی که RGB چیه و دوباره مباحث پایه ریاضی رو براش باز میکنی و .... . برنامه نویست هم تا 1 ماه و نیم فقط تو صورتت نگاه میکنه و لاغیر!!
3- نگهداری نیروهات: شش ماه میگذره و تازه داری به یک زبان واحد با نیروت میرسی ( توجه داشته باش که هنوز کاری برات نکرده!!!!!!) که یکباره نیروت متوجه میشه رفیقش توی یک شرکت دیگه بقول دوستمون داره کنترل درگ میکنه رو فرم و همین حقوق رو میگیره، بعد این اینجا داره با خط و چند ضلعی و انتگرال و فولاد و بتن و ... ور میره. این میشه که 50% نیروهات رو قبل ازین که یک خط کد درست و درمون بنویسن توی 6 ماه اول از دست میدی. خوشبختانه هنوز 33.75% برنامه نویسا به اخلاقیات پایبندن و تا آخر مدت قرارداد سال اولشون باقی می مونن! :چشمک:
4- نبود منابع علمی: چون کاری که میکنی کار خاصی و کم پیش میاد که کسی کرده باشه و کسایی هم که کردن خوب قدر دانسته هاشونو میدونن!! و عموما شیعه علی هم نیستند که دنبال پرداخت ذکات و این چیزا باشن!!، غیر از سایت های کفار دستت به هیچ کجا بند نیست. نه یک کتابی نه یک استاد دانشگاهی .. هیچی. آقا من برای پیدا کردن یک الگوریتم که تشخیص بده یک نقطه توی یک چند ضلعی هست یا نه پدرم در اومد. الگوریتم هایی هم که کفار ارائه کرده بودند در بعضی شرایط جواب غیر قطعی می دادن و قابل استفاده نبودند. قشنگ یک هفته در IDE رو تخته کردیم نشستیم با مدیر پروژه وقت به مکاشفات ریاضی و هندسی.... حالا تازه از ذکر مکاشفات ریاضیات سه بعدی و هندسه فضایی و خصوصا مکاشفات عمرانیم در اینجا خودداری می کنم چون سینه سنگ رو پاره میکنه و برای دوستانی که از مونیتور های CRT استفاده می کنند خطرناکه.
5- مشکلات مالی: آخرشم مشتریت فلان سازمان و اداره دولتی که نیستش، افراد و شرکت های خاص هستند که باید بیان تک نسخه بخرن. مشتریت یه مهندس بیچاره دور از جون مثل خودته. آقای مهندس عمران میاد میشینه وقتی میگی 800 هزار تومن یه نگاه میکنه انگار بد ترین فحش بی تربیتی (البته فکر بد نکنیدا منظورم یه چیزی تو مایه های نفهم و اینچیزاست) رو بهش دادی. میگه eeeeeeeetaaaaabssss با اون عظمتش هزار تومن بعد این برنامه 800 هزار. CDشم که 120 تومن بیشتر پولش نیست و ....

و هزاران که نه ولی ده ها مورد اینچنینی.

اینه که در نهایت با نهایت تاسف طبق گفته یکی از دوستان میرسی به این نقطه که باید کل کار رو در خودت جمع بکنی و به نیرو هات کارهای با وسعت مشخص بدی. البته با توجه به سابقه نیروهات (البته توی همین پروژه رو عرض می کنم) و جنس کارت می تونی کارای بزرگتری به نیروهات بدی. مثلا توی کار ما همون موتور سه بعدی که اشاره کردم رو کلا یکی از همکارا نوشت که یک کار بزرگی بود و خودش یه 5-6 ماهی طول کشید و من فقط نظارت داشتم.

البته دوباره بگم که این مسائل مربوط به کشور عزیزمون می شه که پا میشی میری چهار اره ولی عصر 3DMax کبیر وAutoCad قابل احترام و PhotoShop دوست داشتنی رو رو هم 15000 (ریال عرض می کنم) میخری میای خونه!!!

امید وارم مفید بوده باشه
موفق باشید