صفحه شخصی سید علا سبزپوش

برنامه نویس دات نت و sql_server --ریاضیات

صفحه شخصی سید علا سبزپوش

برنامه نویس دات نت و sql_server --ریاضیات

کار برنامه نویسی

راستش نمی خواستم در مورد مسایل غیر فنی مطلب بنویسم اما اخیرا بدلیل شرایط کاری مجبور شدم که چند مطلبی بنویسم

حقیقتش هر برنامه نویس برای انتخاب شغل و ورود به بازار کا ر 3 راه  در پیش دارد1-دوست و آشنا 2-از طریق آگاهی 3-گرفتن پرو‍‍ژه

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

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

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

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

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

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

البته در گرفتن پروژه اگر شما گروهی داشته باشید مسلما فشار ، خواهد شکست و شما مجبور نخواهید شد که همه کار را خود انجام دهید

شدیدا توصیه می کنم در گرفتن پروژه ها دور اندیشی کنید و آینده را ببییند ، شاید برخی پروژه ها از نظر مالی نظر شما را جلب کند اما در دراز مدت زمان و وقت شما را تلف کند و جز پشیمانی چیز دیگری عاید شما نخواهد کرد

اما بخش دیگر سخن من با شرکتها و سازمانهایی است که برنامه نویسان را استخدا م می کنند

1-سازمانها و ادرات غیر کامپیوتری : در اینگونه سازمانها معمولا واحدی به نام رایانه و شاید فناوری اطلاعات وجود داشته باشد

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

اگر شبکه یا سرور مشکل دارد باید برطرف کنید و در نهایت سایت شرکت را راه اندازی کنید و پشتیبان باشید

به عبارتی دیگر در این جور مکانها شما تکنیسین سخت افزار و شبکه و پشتیبان نرم افزار و سایت هستید خوب شما تصور کنید شاید هم از شما بخواهند ،آبدارچی هم باشید ، بعید نیست !!!!!!!!!!!!!!!!!!!!!!!!!!

2-شرکتهای کامپیوتری

 اغلب این شرکتها خصوصی هستند ، برخی بزرگ و بعضی کوچک ، بستگی به تواناییهای مدیریت و سرمایه و غیره دارد

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

این شرکتها  اگرچه فکر می کنند که شرایط خوبی برای برنامه نویس فراهم کرده اند اما در واقع برنامه نویس، خود را در جهنم می بیند لذا در اولین فرصت به فکر فرار کردن است

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

با تشکر

مدیریت افراد

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

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

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

آبراهام مازلو ، دانشمندی است که نام او با نظریه ای پیرامون طبقه بندی سلسله مراتبی نیازهای بشری پیوندی گسست ناپذیر یافته است و طبقه بندی او که از مهمترین طبقه بندیها از این سنخ به شمار می رود.
نظریه مازلو بیان می دارد که رفتار آدمیان را سلسله مراتبی از نیازها هدایت می کند که به ترتیب اهمیت و اولویت عبارتند از :
1-نیازهای فیزیولوژیک (جسمانی یا اولیه)
2-نیازهای ایمنی یا تامین  یا امنیت
3-نیازهای اجتماعی یا نیاز به عشق و محبت و تعلق
4-نیاز به عزت نفس یا نیازهای من یا صیانت ذات
5-نیاز به احترام
6-نیاز به خود شکوفایی یا تحقق نفس یا خود کاوی یا خود یابی
این نیازها جزء ذات بالقوه فرد محسوب می شود و انگیزه های رفتاری شخص به شمار می آید . بدین ترتیب تا زمانی که نیاز سطوح پایین تر که نیازهای اساسی تری به شمار می آید ارضا نشوند . نیازهای عالی تر تاثیر کمتری بر رفتار شخص خواهند داشت.

خوب یه انسان برای چه کار می کند ، جواب مشخص است برای تامین نیازها ، پس وقتی نیازهای انسان را بخوبی تعریف نکنیم نمی توانیم ، انسان را مدیریت کنیم 


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


آموزش تحلیل نرم افزار بخش دوم

بخش دوم

مشتری چه می خواهد؟

همه ما می دانیم سخت ترین بخش تحلیل دانستن و شناخت نیازهای مشتری است . در این بخش به برخی روشهای می پردازیم

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

1-سیستمی تحت وب که در اینترنت کار کند

2-معاملات و سفارشات را بتوانیم پی گیری کنیم

3-کاربران بتوانند یصورت آنلاین تور ثبت نام کنند

4-کاربران بتوانند هتل مورد نظرشان را انتخاب کنند

 

شما آنالیزور سیستم  هستید و باید در ابتدا با مدیر عامل شرکت صحبت کنید مرحله اول با مدیر یک جلسه کاری خواهید داشت ، قبل از جلسه فرمهای جمع آوری اطلاعات به شکل زیر آماده کنید


در بخش عنوان شما باید سرفصل را بنویسید ودر بخش description  توضیحات مربوط به آن عمل را تا حد امکان یادداشت کنید ، دقت کنید که در هر برگه فقط و فقط یک عمل را بنویسید این نکته بسیار مهمی است ،

تمام افکار مدیر عامل را عنوان بندی به همران توضیحات یادداشت کنید و همانطور که گفتم و دوباره تاکید می کنم هر عنوان برگه فقط و فقط یک عمل را انجام می دهد

 

الان فرض کنید یکی از موارد 4 گانه بالا را در یک برگ می نویسیم فرض کنید مورد چهارم انتخاب هتل،

خوب عنوان موضوع : انتخاب هتل توسط مشتری

توضیح : کاربران باید بتوانند از لیست پیشنهادی سایت هتل مورد نظرشان را بر اساس تعداد ستاره ها انتخاب کنند

این تازه اول کار است

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

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

با هر کدام از پرسنل شرکت یا سازمان صحبت کنید ابتدا ایده های آنان را بپرسید همانند کاری که با مدیر عامل انجام دادید و سپس سوال و جواب خود را بپرسید

یک نکته مهم

شما الان هم با پرسنل شرکت و هم با مدیر عامل صحبت کرده اید ، باید جمع بندی اولیه از نیازها داشته باشید

اما مشکل شما این است که اگر چه مشتری نیازهای خود را بیان کرده است اما نمی داند که شما چکا رمی کنید و قراره چه کاری انجام دهید ، هنوز خیلی چیزهای نا معلوم است ، خوب راهکار چیست ؟

 

شما باید از جلوه های بصری استفداده کنید مثلا اگر می توانید در این مرحله نسخه کوچک از نرم افزار بنویسید خیلی خوب است البته در این مرحله صرفا تاکید بر روی اینترفیس است همان ظاهر نرم افزار است و شاید هم شما با استفاده ار ابزارهای دیگر فرض کنید  power point  روال نرم افزار را بصورت گرافیکی برای مشتری نمایش می دهید .

علاوه بر این بد نیست که شما نحوه کار و روال و فرایندهای کاری پرسنل سازمان را از نزدیک ببینند و مشاهدات خود را یادداشت برداری کنید .

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

 

یک نکته : همیشه زمان مصاحبه را با کاربران را غنیمت بشمرید چون مشتری بدلیل مسایل کاری حاضر نیست هر وقت بخواهید کاربران خود را برای جواب دادن به سوالهای شما در اختیارتان قراردهد

 

خلاصه ای که تا الان فهمیدیم آن است که ما ابتدا ایده ها را می گیریم و سپس بر اساس تجربه خود سعی می کنیم سوالاتی را مطرح کنیم که به واسطه این سوالات به جزییات سیستم پی می بریم

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

 

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

 

خوب تیم برنامه نویسی به همراه تحلیل گر تشکیل جلسه می دهد ، تصمیم حیاتی باید گرفته شود

1-این پروژه چقدر زمان می برد؟

2-این پروژه چقدر هزینه دارد؟

یکی از اشتباهات رایج آن است که تحلیل گران بدون پرسیدن نظر تیم برنامه نویسی و در نظر گرفتن امکانات و تواناییهای آنان زمان را خودشان مشخص می کنند و این از اشتباهات مهلک پروژه ها است

شما باید نتیجه تحلیل خود را در اختیار تیم برنامه نویسی قرار دهید ، آنها با شما مانند یک مشتری رفتار می کنند ، یعنی آنها می شوند تحلیل گر و شما آنالیزور ، تبدیل به مشتری می شوید ، در طی همین جلسه سوالات بیشتری مطرح خواهد شد که فرد تحلیل گر ممکن است برای آنها جوابی نداشته باشد و باید دوباره با مشتری جلسه داشته باشد

علاوه بر آن تیم برنامه نویسی پس از اطلاع از چند وچون پروژه ، برای هر عمل نوشته شده در کارتهای بالا (شکل1 ) زمان مورد نیاز خود را مطرح می کندعلاوه بر این فرمها را تفکیک می کنید شما باید اینگونه تفکیک کنید

1-مبنای محاسبه بر اساس فرم است خوب فرم خود را مشخص کنید زمان مورد نیاز برای طراحی گرافیکی فرم چقدر است

2-زمان پیاده سازی کدهای مربوط به آن فرم چقدر است ؟

3-زمان مورد نیاز برای طراحی بانک اطلاعاتی مورد نیاز برای آن فرم چقدر است ؟

4-زمان مورد نیاز برای نوشتن کویری   query  مناسب برای عملیات آن فرم چقدر است ؟

5-زمان مورد نیاز برای پیاده سازی هر گزارش چقدر است ؟

 

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

 

 

نوع عمل                           برنامه نویس 1                برنامه نویس 2                برنامه نویس 3

 

پی گیری معاملات                        6 روز                           7 روز                            10 روز

اضافه کردن لیست هتلها                 5 روز                            10 روز                           15 روز

 

و غیره

 

همانطور که می بیند هر کدام از برنامه نویسان تخمین متفاوتی داده است اما نباید اختلاف زمانی خیلی زیاد باشد ریشه این اختلاف برآورد زمانی در کجاست ؟

1-ممکن است تیم برنامه نویسی شما منسجم نباشد و ازنظر تجربه با هم اختلاف فاحشی دارن

2-ممکن است تحلیل شما مشکل دارد و به تبع آن برداشت و فهم برنامه نویسان متفاوت بوده است

 

دقت کنید مورد اول قابل حل است و ربطی به تحلیل و مشتری ندارد سعی کنید تیم برنامه نویس شما پا به پای هم رشد کنند

اما مورد دوم کمی مشکل تر است ، فهم افراد متفاوت است ، شما باید مواردی که زمان برآوردی تیم شما اختلاف دارد را دوباره بازنگری کنید و دوباره آن را به برنامه نویسان خود تفهیم کنید هر کدام از برنامه نویسان باید دلیل قانع کننده برای زمان پیشنهادی خود ارایه دهد

شما گام به گام حرکت کنید

از اولین کارت تحلیل شروع کنید ، زمان تخمینی هر کدام را یادداشت کنید و در هر صورت برنامه نویسان دلیل خود را هم باید بیان کنند ، با هم بحث کنید که چرا اینقدر زمان می برد ، قرار است از چه ابزاری استفاده کنید و الی آخر تا سر زمان توافقی برسید و همچنین به روش نوشتن توافق کنید

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

خوب فرض کنید ما زمان را جمع کردیم نتیجه حاصل این بود که برای انجام این پروژه به 248 روز زمان نیاز است

وای چقدر زیاد مشتری قبول نمی کند ، مشتری نهایتا 90 روز را قبول می کند خوب راهکار چیست چه باید کرد

ادامه این بحث و جواب این سوال را در بخش بعدی خواهم گفت