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

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

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

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

وحید نصیری نویسنده وبلاگ 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. قبل از کامنت گذاشتن، ابتدا مطلب را به صورت کامل بخوانید!

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

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

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

تخمین هزینه های یک پروژه نرم افزاری

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

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

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

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

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

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

اندازه پروژه

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

پیچیدگی پروژه

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

زمان انجام پروژه

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

منابع انسانی

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

farasun.wordpress.com

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

شما هم می توانید تجربه خود را با ما توسط فرم نظرات به اشتراک بگذارید.

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

مطالب مرتبط :

Kaxaml یک ویرایشگر خوب برای فایل های xaml

اگر با WPF یا سیلورلایت آشنایی داشته باشید حتماً می دانید فایل های xaml به چه دردی میخورند! Xaml یک زبان بر مبنای XML است که برای طراحی رابط کاربری اپلیکیشن های WPF و Silverlight مورد استفاده قرار می گیرد. با استفاده از این زبان، می توانید رابط های کاربری بسیار زیبایی خلق کنید.

kaxaml

برنامه نویسانی که از WPF در پروژه هایشان استفاده می کنند حتماً از قابلیت های ویرایشگر های ویژوال استادیو و Expression Blend برای ویرایش فایل های Xaml باخبرند. نرم افزارهای فوق امکانات خوبی برای این کار در اختیار شما قرار می دهند. اما یک برنامه نویس همیشه به جز یک محیط توسعه خوب، یک ابزار سبک هم برای ویرایش فایل های برنامه اش کنار می گذارد. به طور مثال من از ویژوال استادیو استفاده میکنم اما برای ویرایش فقط یک فایل سورس سی شارپ هیچ وقت ویژوال استادیو رو باز نمی کنم، بلکه با Notepad++ کارم را انجام می دهم.

kaxaml-shot
برای ویرایش فایل های xaml نیز می توان از ابزارهای سبک تر از ویژوال استادیو و Expression Blend استفاده کرد. Kaxaml یک ویرایشگر بسیار مناسب و سبک برای این منظور است. Kaxaml هم رایگان است و هم اوپن سورس و هم خودش بر مبنای WPF و دات نت فریم ورک 3.0 توسعه یافته است. این برنامه امکانات خوبی همچون پیشنهاد عبارات مرتبط شبیه به Intellisense دارد. چندین فایل xaml را می توانید در تب های جداگانه ویرایش کنید. در حین تایپ کدهایتان می توانید پیش نمایش زنده ای از طرح تان ببینید.
یکی از ویژگی های خوب این برنامه، ویژگی Snippets است که شامل کدهای نمونه xaml است که با آن ها می توانید به یادگیری زبان xaml بپردازید. حتی می توانید قطعه کدهای خود را نیز به Snippets اضافه کنید. ویژگی مناسب دیگر آن، قابلیت ذخیره کردن طرح شما در قالب PNG است.

Kaxaml توسط یکی از اعضای اصلی تیم توسعه WPF مایکروسافت نوشته شده و سورس کد آن در سایت CodePlex در دسترس است.

Kaxaml در نسخه جدید و بتای خود از سیلورلایت 2 پشتیبانی می کند. نسخه بتا را از اینجا و نسخه 1.0 (قدیمی تر) را اینجا دریافت کنید. نسخه بدون نیاز به نصب را نیز از اینجا دریافت کنید.

farasun.wordpress.com

می خواهید مطالب این وبلاگ را دنبال کنید! مشترک فید فراسان شوید! نمی دانید فید چیست!؟

مطالب مرتبط :

کلاینت اوپن سورس برای Google Translate

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

قرار نیست در این مطلب خبر دست چندم، اضافه شدن زبان فارسی به سرویس Google Translate، را بخوانید. به گفته خود گوگل، اضافه شدن زبان فارسی به علت اتفاقات اخیر در ایران بوده و قرار نبوده به این زودی ها زبان فارسی به این سرویس اضافه شود. بعد از معرفی این سرویس توسط گوگل و معرفی API آن، کلاینت های مختلفی بر اساس آن توسعه داده شده اند. این کلاینت ها جهت آسان تر شدن کار با این سرویس و اضافه کردن قابلیت های جانبی کوچک به آن ساخته شده اند. با داشتن یکی از این کلاینت ها دیگر لازم نیست برای ترجمه یک متن هر بار به وب سایت مترجم  گوگل سر بزنید.

مترجم گوگل برای برنامه نویسان

513171250_d2a4194703

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

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

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

مترجم گوگل برای کاربران ویندوز

granslator

برای استفاده از مترجم گوگل راهی جز رفتن به وب سایتش نیز وجود دارد. Granslator نام برنامه کم حجم و قابل حملی است که می توانید با استفاده از آن متون خود را از هر زبانی به هر زبانی که توسط سرویس ترجمه گوگل پشتیبانی می شوند، ترجمه کنید. با استفاده از این برنامه می توانید بدون مراجعه به سایت سرویس ترجمه گوگل، متون خود را ترجمه کنید. استفاده از آن بسیار آسان است، هر جای ویندوز که هستید می توانید با فشردن کلیدهای ترکیبی Ctrl+Shift+G این برنامه را صدا بزنید و متن خود را به عنوان ورودی به آن بدهید و پس از چند لحظه ترجمه اش را تحویل بگیرید. متن ترجمه شده را می توانید با یک کلیک به حافظه کلیپ برد کپی کنید یا در یک فایل متنی ذخیره کنید. اگر زبان یک کلمه یا یک پاراگراف برای شما قابل تشخیص نیست، کافیست آن را به این برنامه بدهید و تا با کلیک کردن روی گزینه «Detect Source Language» توسط شما، برنامه زبان متن را به صورت خودکار تشخیص دهد و آن را به زبان مطلوب شما ترجمه کند. تصویری از محیط برنامه را در زیر مشاهده می کنید.

granslator-screenshot

برای دریافت آن به اینجا (دریافت آخرین نسخه) مراجعه کنید و روی گزینه  )granslator-0-1-beta-portable (در نسخه جدید granslator-setup) کلیک کنید تا دانلود شما شروع شود. حجم آن بسیار کم و فقط 320 کیلوبایت است. فقط توجه داشته باشید که این نسخه از Granslator آزمایشی است و در نسخه بتا به سر می برد و هیچ نیازی هم به نصب ندارد. فقط کافیست برنامه را از حالت فشرده خارج کنید و آن را اجرا کنید. نظر یا پیشنهادی داشتید در قسمت نظرات همین مطلب با من در میان بگذارید.

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

نکته مهم : وقتی برنامه را Minimize می کنید، برنامه بسته نمی شود، فقط در System Tray (آیکون های کنار ساعت ویندوز شما) قرار می گیرد که با دابل کلیک روی آن می توانید دوباره پنجره برنامه را مشاهده کنید.

sys-tray

همانطور که در تصویر بالا مشاهده می کنید، آیکون Granslator به شکل G در میان آیکون های System Tray قرار می گیرد.

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

پیش نیاز این برنامه نصب بودن x.NET framework 2.0 به بالا در ویندوز شماست.

دریافت Granslator

مشترک فید فراسان شوید! نمی دانید فید چیست!؟

پ.ن 1: این برنامه بر اساس نیاز خودم نوشته شده، اگر امکان دیگری لازم دارید در نظرات همین مطلب ذکر کنید.

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

پ.ن 3: نام برنامه ابتدا قرار بود G Translate باشه، اما گنوم یک برنامه ای به همین نام داره و قبلاً در کدپلکس پروژه ای به همین نام و با همین ایده ثبت شده بود. این نام هم یکدفعه به ذهنم خطور کرد.

ابتدا رابط کاربری را بسازید!

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

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

users

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

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

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

بیشتر بدانید :

شاید این مطالب هم برای شما خواندنی باشند :

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

چطور مشترک شویم؟

یافتن کار نیمه وقت و کسب تجربه در زمینه نرم افزار-قسمت پنجم

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

قسمت پنجم : همکاری در پروژه های اوپن سورس

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

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

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

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

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

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

نظر سنجی

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

farasun.wordpress.com

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

farasun.wordpress.com

مطالب مرتبط :

یافتن کار نیمه وقت و کسب تجربه در زمینه نرم افزار-قسمت چهارم

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

قسمت چهارم : خودتان دست به کار شوید!

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

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

farasun.wordpress.com

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

farasun.wordpress.com

مطالب مرتبط :