گذاشتن محدودیت برای برنامه نویسان… اما به چه قیمتی!

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

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

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

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

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

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

محدودیت ساعت ورود و خروج

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

محدودیت صحبت با تلفن شخصی

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

محدودیت زمان استراحت

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

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

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

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

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

نتیجه

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

farasun.wordpress.com

خواندن مطلب مرتبط : یک محیط سفارشی شده; تمام چیزی که یک برنامه نویس می خواهد!

Subcribe to Farasun feedمشترک فراسان شويد

پ.ن : ایده این مطلب از مطلب آقای آواژ با عنوان «تفکیک مسائل شخصی از محیط کار» به ذهنم خطور کرد.

Advertisements

نیازهای من به عنوان یک نیروی انسانی – بازی وبلاگی

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

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

نیازهای من به عنوان یک برنامه نویس :

1) انتظارات از من شفاف باشد. من می خواهم بدانم کارفرما دقیقاً انتظار انجام چه کاری را از من دارد. اگر من به عنوان «برنامه نویس» استخدام شدم، نباید کاری جز کدنویسی داشته باشم. اگر قرار است تیمی کار شود، هر کس باید وظایف خودش را انجام بدهد. نه اینکه اکثر کارها را یک نفر انجام بدهد و در آخر کار به اسم تیم تمام شود!

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

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

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

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

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

farasun.wordpress.com

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

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

حداقل مهارت های یک برنامه نویس دات نت!

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

1 : دید شیء گرا داشته باشد و با قوانین Objected Oriented Programming به خوبی آشنا باشد. دات نت به صورت پیش فرض برنامه نویس را درگیر مباحث شیء گرایی می کند. به همین دلیل اگر کسی با شیء گرایی آشنایی نداشته باشد نمی تواند برنامه های خوبی بنویسد یا در دات نت پیشرفت کند. یک برنامه نویس دات نت باید بتواند برنامه خود را توسط کلاس ها و با استفاده از مفاهیم کپسوله سازی، ارث بری، چندریختی و اینترفیس ها بنویسد تا توسعه و تغییر آن در دراز مدت ساده و کم هزینه باشد. بر همین اساس او باید :

  • با namespace و scope کلاس ها آشنایی داشته باشد
  • تفاوت یک کلاس Partial و یک کلاس معمولی را بداند
  • مفهوم کلاس های abstract را درک کند و توانایی نوشتن interface را داشته باشد
  • بتواند با استفاده از کلمات کلیدی private، public، protected، internal و internal protected دسترسی به کلاس ها را کنترل کند
  • فرق کلاس و متد استاتیک و غیر استاتیک را بداند
  • با مفاهیم overload و override در تعریف متدها آشنایی داشته باشد

2 : با ویژگی های یکی از زبان های برنامه نویسی دات نت به خوبی آشنا باشد. دانستن ویژگی های یک زبان برنامه نویسی هم در تسریع کدنویسی و هم در استاندارد کد نوشتن به یک برنامه نویس کمک زیادی می کند. بر همین اساس او باید :

  • با تمام data typeهای یک زبان آشنا باشد و به موقع از آن ها استفاده کند
  • بتواند مفاهیم شیء گرایی را با استفاده از ویژگی های زبان پیاده سازی کند
  • با مفاهیم Boxing و Unboxing و Type Casting آشنا باشد
  • با روش های مستند سازی کد در آن زبان آشنا باشد

3معماری دات نت فریم ورک : با معماری دات نت فریم ورک آشنایی داشته باشد. یک برنامه نویس دات نت هر چقدر هم که خوب کد بنویسد، اگر نداند برنامه اش چطور و توسط چه عامل هایی اجرا و کنترل می شود یک جای کارش می لنگد! باید بداند دات نت فریم ورک شامل یک کتابخانه کلاس های پایه است که خود آن شامل رابط کاربری، کلاس های دسترسی به داده و اتصال به دیتابیس، الگوریتم های کدگذاری، ارتباطات شبکه و وب اپلیکیشن است که استفاده به جا از این کلاس ها، سرعت توسعه یک پروژه را افزایش می دهند. باید بداند برنامه های نوشته شده با دات نت در یک محیط زمان اجرا به نام CLR یا Common Language Runtime اجرا و مدیرت می شوند. باید بداند CLR وظیفه مدیریت حافظه و هندل کردن استثنا ها را نیز بر عهده دارد. بر همین اساس او باید :

  • مفهوم اسمبلی (Assembly) در دات نت را بداند
  • با ساختار فایل های اجرایی دات نت آشنا باشد
  • با کلاس های پایه دات نت آشنایی لازم را داشته باشد
  • با Garbage Collector و نحوه مدیریت حافظه در دات نت آشنا باشد
  • با قابلیت Reflection در دات نت آشنایی داشته باشد
  • بداند GAC چیست و چه کاری انجام می دهد

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

  • با پنجره های مختلف ویژوال استادیو و مفاهیم آن ها آشنایی کامل داشته باشد
  • بتواند یک پروژه موجود را کامپایل و اجرا کند
  • بتواند فایل های جدیدی را به پروژه اضافه کند
  • بتواند از Toolbox ویژوال استادیو کنترل های مورد نیاز خود را پیدا کند و کنترل های جدیدی را به آن اضافه کند
  • بتواند با ادیتور کد ویژوال استادیو کار کند و کدهای مورد نظر خود را پیدا کند
  • بتواند یک برنامه را با استفاده از ابزارهای ویژوال استادیو Debug کند (منوی Debug)
  • تفاوت میان اجرا در حالت Debug و اجرا در حالت Release را بداند
  • تفاوت ساختار پروژه های Windows Application، Console Application، Class Library، ASP.NET Web Application و ASP.NET Web Service Application را بداند
  • تفاوت Solution و Project را بداند و بتواند چند پروژه را در یک Solution مدیرت کند

توسعه دهندگان برنامه های مبتنی بر دیتابیس باید :

  • بر روی مفاهیم و نحوه پیاده سازی دیتابیس و رابطه های میان جدول های اطلاعاتی و زبان SQL تسلط داشته باشد
  • با معماری ADO.NET و کلاس های پایه آن آشنا باشد
  • بداند ORM چیست و چه مشکلاتی را حل می کند
  • حداقل با یکی از ORMهای دات نت مثل LINQ to SQL، NHibernate یا Entity Framework آشنا باشد
  • با DataSet و نحوه استفاده ازکنترل های مربوط به دیتابیس مثل DataGrid آشنا باشد
  • با ساختار فایل های XML آشنایی داشته باشد و بتواند یک فایل XML را پردازش کند

توسعه دهندگان برنامه های مبتنی بر وب (ASP.NET) باید :

  • تفاوت های عمومی یک برنامه دسکتاپ و یک برنامه تحت وب را بداند
  • بداند PostBack چیست و چه کاربردهایی دارد
  • بداند متدهای استاندارد POST و GET در ASP.NET چگونه پیاده سازی شده اند
  • با ViewState آشنایی داشته باشد، وظیفه آن را بداند و بداند چه مواقعی کاربرد دارند
  • با ساختار فایل web.config آشنایی لازم را داشته باشد
  • تفاوت میان کنترل های تحت سرور و کنترل های HTML و تحت کلاینت را بداند
  • با زبان جاوا اسکریپت آشنایی لازم را داشته باشد
  • Lifetime یک برنامه ASP.NET را درک کند
  • با کوکی ها آشنا باشد و بتواند از آن ها استفاده کند
  • بتواند با استفاده از Session یک سیستم لاگین طراحی کند
  • بتواند تفاوت یک وب سرویس و یک وب اپلیکیشن را توضیح دهد

farasun.wordpress.com

این مطلب فقط نظر من در مورد حداقل دانسته های یک برنامه نویس دات نت است. شما ممکن است نظر دیگری داشته باشید و یا بخواهید آیتم هایی را به این لیست اضافه کنید. خوشحال می شوم نظر شما را هم بدانم. من تمام سعی خودم رو کردم تا مطلبم با مطلب Scott Hanselman فرق کند، این مطلب را من از نظر خودم نوشتم و هدفم با هدف آقای Hanselman کاملاً متفاوت است.

یک محیط سفارشی شده; تمام چیزی که یک برنامه نویس می خواهد!

داشتن تمرکز برای افرادی که به اصطلاح Knowledge Worker هستند، مثل نویسندگان یا برنامه نویسان، بسیار مهم است. این تمرکز در محیط های شلوغ و پر استرس و محیطی که فرد در آن احساس راحتی نکند به دست نمی آید. یک برنامه نویس به عنوان فردی که از دانش و قدرت تفکرش برای انجام کارها استفاده می کند، برای انجام وظیفه خود به نحو مطلوب و با بازدهی بالا نیاز به یک محیط سفارشی (=Customize) شده دارد. منظورم از محیط سفارشی شده، محیطی است که فرد برنامه نویس در آن احساس راحتی کند، تمرکز کافی داشته باشد و بتواند در آن بر اساس سلیقه خودش تغییر ایجاد کند.

برنامه نویس در گوگل

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

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

شرکت موزیلا

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

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

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

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

شرکت گوگل

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

farasun.wordpress.com

Subcribe to Farasun feedمشترک فراسان شويد

از موقعیت خود به عنوان یک برنامه نویس راضی هستید!؟

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

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

ترتیب مطالب بر اساس تاریخ فرستادن جواب های دوستان است.

وحید نصیری نویسنده وبلاگ x.NET Tips

از پويايي و خلاقيت موجود در دنياي IT لذت مي‌برم و به همين دليل در اين رشته مشغول به فعاليت شده‌ام. پاسخ دادن به تعدادي از سؤالات شما جنبه سياسي پيدا مي‌كنند. تا قبل از دولت فعلي وضع بهتر بود و پروژه بيشتر بود. الان وضع خيلي نسبت به قبل تفاوت كرده و پروژه كمتر شده (خيلي كمتر). به همين دليل روي اين صنف هم مسلما اين مسايل بدون تاثير نبوده.از موقعيت خودم به عنوان برنامه نويس راضي هستم. از نظر مالي تا حدودي راضي هستم و عرض كردم كه دولت فعلي كار ما را تحت تاثير شديد قرار داده است.

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

تفاوت مهم اين شغل با شغل‌هاي ديگر پويايي آن است. تا چند سال قبل مثلا asp كلاسيك وجود داشت، اما الان ASP.Net مطرح شده و جاي آن‌را گرفته. تا مدتي بعد هم ASP.Net MVC آن‌را حل و جذب خواهد كرد و web forms asp.net حالت از مد افتاده asp كلاسيك را پيدا مي‌كند. تمام اين‌ها مستلزم سعي و كوشش و مطالعه بسيار زياد است و گرنه خيلي زود بازنشسته خواهيد شد.

مشكل مهمي هم كه اين پويايي براي ما در داخل ايران به همراه داشته، نبود منابع آموزشي به روز است. الان چندتا كتاب فارسي در مورد ASP.net MVC‌ داريم؟ در مورد WPF چطور؟ در مورد تازه‌هاي SQL Server 2008 چي؟ در مورد entity framework كتابي در بازار كتاب‌هاي فارسي هست؟ و …. تمام اين‌ها سبب مي‌شود كه به روز كردن دانش اين صنف در ايران به شدت با كندي مواجه باشد.

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

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

براي بررسي راضي بودن از شغل برنامه نويسي تو ايران بايد يه مورد مهم رو در نظر بگيريم. اول موضوع مربوط به موقعيت برنامه نويس تو شهرش هست. اگر فرض ما شهرستان باشه در اين صورت قضيه با زماني که فرد تو تهران باشه خيلي فرق مي کنه.
چون خودم من هم تو شهرستان هستم سعي مي کنم با اين فرض ها و سرانجام وضعيت خودم جواب بدم.

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

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

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

از نظر روحي و جسمي؟
از نظر روحي بسيار شکسته شده ام و قصد خروج از ايران رو دارم. و براي همين مورد برنامه ريزي طولاني مدت کردم که پس از رفع مشکل سربازي اقدام کنم. عارضه جسمي حاصل هم کمر درد هست که علتش رو کوتاهي خودم مي دونم و بايد به يه باشگاهي برم حتما.

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

فرق شما با آدم هاي ديگه (شغل هاي ديگه) چيه و چه مشکلاتي داريد. بگين که تا چه موقع ميتونيد برنامه نويس بمونيد، آيا قصد تغيير شغل در آينده را داريد يا نه مي خواهيد در آينده هم در فيلد برنامه نويسي کار کنيد؟
در مورد فرق ترجيح مي دم که جواب ندم چون فرق خيلي زياده.
در عموميت فکر مي کنم يک نفر مي تونه براي هميشه برنامه نويس بمونه و از اون لذت بببره. اما اين مورد من زيادي خواه رو راضي نمکنه و هميشه به بيشتر از اينها فکر کردم. مثلا هدايت يک تيم نرم افزاري و هدايت شرکت و غيره. البته اين رو هم بگم که هدايت چند تيم نرم افزاري رو هم بر عهده داشتم ولي به دلايلي نشد که همکاري در رو اونجا ادامه بدم. در کل در آينده کار من شايد خود برنامه نويسي نباشد ولي در زمنيه برنامه نويسي خواهد بود.

افشار محبی نویسنده وبلاگ AfsharM

مقدمتاً بگویم که ترجیح می‌دهم به جای عبارت «برنامه‌نویس» از عبارت «توسعه دهنده» یا «توسعه دهنده نرم‌افزار» استفاده کنم.

جواب خلاصه من به این سوال، «بله» است. چون نزدیک به ۲۰ سال است که برنامه نویسی عشق و علاقه شماره یک من بوده و بعید است که به این زودی‌ها بتوانم از آن چشم پوشی کنم خصوصاً حالا که چندین سال است که برنامه‌نویسی تنها منبع درآمدم نیز بوده است.

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

با شناختی که همه ما از مشاغل موجود در ایران داریم، می‌دانیم که تقریباً در هیچ شغلی سلامت جسمی و روحی افراد رعایت نمی‌شود پس نباید از این لحاظ خیلی به شغل برنامه‌نویسی (توسعه نرم افزار) خرده گرفت.

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

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

فرق برنامه‌نویس‌ها با آدم‌های دیگر چیست؟ هیچی! فقط چون کار ما برنامه‌نویس‌ها کار جدیدی است کمی ترسیده‌ایم و الا هیچ فرق آنچنانی نداریم. بنده به شخصه فکر می‌کنم اقلاً تا ۵ سال آینده بتوانم برنامه‌نویس باقی بمانم مگر آن که شرایط سیاسی-اقتصادی مملکت خیلی به هم بریزد. در مورد سال‌های بعد از این ۵ سال امیدوارم (و تلاش می‌کنم) آنقدر در یک حیطه خاص برنامه‌نویسی تسلط پیدا کنم که اگر مجبور شدم راه فرنگستان را در پیش گیرم بتوانم گلیمم را از آب بکشم و اگر در ایران ماندم و تعداد شرکت‌های نرم‌افزاری از این هم کمتر شد بتوانم جایی برای خودم دست و پا کنم.

به عنوان نتیجه همان طور که در ابتدا ذکر کردم از زندگی حرفه‌ای خودم به عنوان یک برنامه‌نویس (توسعه دهنده نرم‌افزار) با همه فراز و نشیب‌هایش راضی هستم و امیدوارم بتوانم کارم را با موفقیت ادامه دهم.

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

نتیجه گیری از این مطلب با شما. یک خواهش از دوستانی که این وبلاگ را از طریق گوگل ریدر یا فیدخوان های دیگر دنبال می کنند دارم، لطفاً اگر برنامه نویس هستید جواب این سئوال را در قسمت نظرات این مطلب ارسال کنید. استثناً در مورد این مطلب نظر بدهید! جواب هر کدام از شما می تواند بر ارزش این مطلب بیفزاید. جمع بندی و نتیجه گیری را بهتر است شما خوانندگان انجام بدهید و در قسمت نظرات بیان کنید.

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

به روز رسانی

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

  1. کامنت هایی که شامل توهین به یکی از نویسنده های مطلب و یا هر شخص سوم دیگری باشد بدون اخطار قبلی حذف می شوند.
  2. موضوع این مطلب کاملاً روشن است، البته اگر مطلب را کامل بخوانید، پس کامنت های بی ربط به موضوع بدون اخطار قبلی حذف می شوند.
  3. لطفاً اگر با شخصی مشکل دارید، سعی نکنید در اینجا با او تصویه حساب کنید!
  4. قبل از کامنت گذاشتن، ابتدا مطلب را به صورت کامل بخوانید!

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

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

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

برنامه نویسی و آینده شما!

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

برنامه نویسی و آینده شما

آینده خود را در برنامه نویسی چطور می بینید!؟

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

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

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

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

به هر حال، میخواهم شما هم در این بحث شرکت کنید و بگویید الان در کدام دسته بندی بالا قرار می گیرید، یا می خواهید در آخر (آینده خودتان) متعلق به کدام دسته بندی باشید؟

ایده این نوشته از خواندن این مطلب Jeff Atwood به ذهنم رسید.