Hello world

June 5, 2008 10:18 AM

برنامه معروف "hello world " را که می شناسید، همان برنامه ای که تقریبا همه کتابهای برنامه نویسی با آن شروع شده اند و خودم هم در آغاز هر دوره برنامه نویسی برای دانشجویان استفاده می کنم. دیروز در وبلاگ مهیار، لینکی دیدم که در آن این برنامه را با بیش از 373زبان برنامه نویسی مختلف نوشته بودند! (اینجا)  یکسری به آنجا بزنید. تنوع زبانها و نوع نگارش آنها جالب است و آدم را به این فکر می اندازد در این زمینه که چقدر زبانهای برنامه نویسی به زبانهای طبیعی شبیه اند آنکه کلی زبان در دنیا وجود دارد ولی درصد بالایی از مردم جهان از تعداد اندکی از این زبانها استفاده می کنند و الباقی زبانها یا مهجور و یا رو به انقراضند.


همین!

Ali Vahed | 10:18 AM | Comment(s)(2)

"پيرِ برنامه ساز" ، "برنامه نويسِ پير"! (قسمت سوم - برنامه نويسِ پير)

January 30, 2008 08:39 AM

در آخرين قسمت از سه گانه «پير برنامه ساز، برنامه نويس پير»، مي خواهم ديدگاه خودم را نسبت به "برنامه نويس پير" بيان کنم و آيا اينکه ما در ايران مي توانيم چنين برنامه نويسي داشته باشيم، برنامه نويسي که عمرش را در برنامه نويسي بگذارد و حتي در اين کار به سمت بازنشستگي پيش برود.
به خارج از کشور کاري ندارم که آنگونه که شنيده ايم و خوانده ايم، چنين برنامه نويساني وجود دارند، اما در ايران چه؟
در وحله اول نمي توان به اين سوال، جواب دقيق و کاملي داد، چون عمر برنامه نويسي در کشور ما هنوز خيلي بالا نيست و طبيعتا کساني که وارد اين حرفه شده اند نهايتا 20 سالي سابقه کار دارند. اما یک بررسی کلي هم نشان دهنده آن است که همچنان که در قسمتهای پيش ذکر کردم،در بین فعالان این زمینه رويکرد عمومي به ماندن در شغل برنامه نويسي در دراز مدت نيست . چرا؟ از چند دیدگاه آن را بررسی خواهم کرد. 
1- ديدگاه ارتقاء شغلي: اکثريت برنامه نويسان، فکر مي کنند مشاغلي مانند تحليل گر ، مشاور، مدير و ... بالاتر از برنامه نويس است، بنابراين به محض اينکه با تجربه شدند، سراغ کار ديگري مي روند که همانگونه که در بخش دوم هم گفتم، الزامي در موفق بودن در آن کار برايشان نيست. (در اين طرز تفکر، فقط برنامه نويسان مقصر نيستند، نگرش جامعه و ميزان حقوق هم چنين است)

2- ديدگاه فنآوري: ما مصرف کننده تکنولوژي هستيم نه سازنده آن و در اين زمينه به شدت دچار مصرف زدگي شده ايم.يعني به محض اينکه نسخه جديد فلان ابزار يا محيط برنامه سازي مي آيد از يک طرف ما به عنوان توليد کننده، بدون فکر سراغ آن مي رويم و از سوي ديگر مشتري به عنوان مصرف کننده هم توقع دارد که با اين ابزار جديد محصولش آماده شود. اين مشکل در نرم افزار به صورت تشديد شده خود را نشان مي دهد، چون ما در ايران به دليل عدم رعايت قانون کپي رايت، بابت ابزارهاي گران جديد پولي نمي پردازيم و اين منتقل شدن روي محيط جديد را آسان تر و بديهي تر مي کند. در اين شرايط، افرادي که پا به سن گذاشته اند، کمتر مي توانندبه سرعت خود را با محيط هاي جديد وفق دهند و اين کارشان را سخت مي کند. به نوعي که ما، متاسفانه، مرتب از واژه "فسيل شده" براي کساني استفاده مي کنيم که شايد با ابزار و مدل يکي دو سال پيش کار مي کنند، که بسيار اشتباه است. در تمام دنيا به دليل اينکه هنوز جايگاه ابزارهاي چند سال پيش هم حفظ شده است، نياز به برنامه نويسان اين ابزارها هم وجود دارد و برنامه نويسان مي توانند به مدت زيادي روي يک ابزار کار کنند. (نگاه کنيد فرصت هاي شغلي را که روي محيط هايي مثل VAX/VM يا زبانهايي مثل COBOL در دنيا وجود دارد.)
3-ديدگاه شرکتها: عمر متوسط مفيد شرکتهاي مرتبط با فنآوري در کشور ما پايين است. اکثر اين شرکتها به دليل آنکه بدون سرمايه يا فکر تاسيس شده اند، يا به دلايلي نظير کوچک بودن و عدم توانمندي بالا در مقابل بحرانها، به سرعت تعطيل مي شوند. اين کوتاه بودن عمر شرکتها، باعث شده است که مديران اکثر شرکتهاي کامپيوتري، جوان باشند. اين جواني باعث مي شود که براي جذب نيروهاي جوانتر ابزار علاقه نشان دهند تا مديريت منابع انساني برايشان ساده تر شود. اين است که معولا ترجيح مي دهند نيروهاي جوان را جذب نمايند. به همين دليل درصد حضور نيروهاي پا به سن گذاشته در اين شرکتها در حوزه برنامه نويسي پايين است و اگر برنامه نويس مسني هم بخواهد در اين زمينه کار کند در شرکتهاي خصوصي کمتر شانس استخدام داشته و باید سراغ بخش دولتي برود که در بخش دولتي هم به تدريج از برنامه نويس به يک کارمند اداري تبديل خواهد شد.
4- ديدگاه اقتصادي: برنامه نويسي در کشور ما، شغل درآمد زايي نيست. شما کمتر برنامه نويسي را مي شناسيد که از اين طريق پولدار شده باشد. به همين دليل برنامه نويسان پس از آنکه سرمايه اندکي کسب کردند، حتي اگر ارتقاء شغلي در زمينه مهندسي نرم افزار نداشته باشند، به دنبال شغل هاي ديگر و کسب و کار هاي ديگر مي گردند. برنامه نويس خبره اي در VB را مي شناسم که در کار ساخت و ساز مسکن است! برنامه نويس فوق حرفه اي در Delphi مي شناسم که سخت افزار خريد و فروش مي کند و به قول خودشان درآمد يک ماهشان از کار ديگرشان، به اندازه يکسال برنامه نويسي آنهاست. جالب اينکه هر دو اين دو عزيز -که به نوعي برايم سرمشق هم هستند- از فارغ التحصيلان دوره هاي اوليه مهندسي نرم افزار شريف هستند. کس ديگري را مي شناسم که با وجوديکه به قول خودش هنوز آب باريکه زندگي اش از برنامه نويسي است اما در کار داد و ستد و دلالي است و چاره اي هم ندارد، برنامه نويس پا به سن گذاشته ، تشکيل زندگي داده است و بايد هزينه هاي يک خانواده را بپردازد، بنابراين نمي تواند مانند يک جوان غم آب و نان نداشته باشد و چاره اي نيست که يا زمينه کاري خود را عوض کند يا يک کسب و کار ديگر براي خودش ايجاد کند.
5-ديدگاه کاري: اغلب مديران دولتي و يا خصوصي از يک برنامه نويس انتظار کار بيشتر از زمان، استراحت کم و تلاش زياد را دارند، چون يا به دليل شرايط اقتصادي چاره اي ندارند و يا به دليل اشتباه در زمانبندي و يا عدم توانايي در مديريت گروه هاي بزرگ مجبورند چنين عمل کنند. طبيعتا يک آدمي که سن و سالي از او گذشته است، توانايي جسمي و روحي کار در چنين شرايطي را ندارد و مجبور است عرصه را براي جوانتر ها خالي کند، درحاليکه در دنيا برنامه نويسي به عنوان يک شغل است که مي تواند شکل يک کار روتين را داشته باشد و برنامه نويسان مي توانند اين انتخاب را داشته باشند که سراغ يک کار سخت و پرهيجان (برنامه نويس شب کار) بروند يا سراغ يک کار عادي و روزمره (برنامه نويسي روزکار)
6- ديدگاه اقتصادي شرکتها: در شرکتهاي فنآوري اطلاعات، معمولا يک جريان مداوم از ورود و خروج از نيروهاي کارشناس وجود دارد، هميشه اشخاصي حذف و اشخاص جديدي جايگزين مي شوند. در اين حالت عدم ثبات نيروي انساني، شرکتها ترجيح مي دهند از افراد جديدتر و کمتر با سابقه اي استفاده کنند که اولا حقوق کمتري طلب کنند و دوما (دليل اصلي) به سادگي بتوانند با محيط وفق پيدا کنند و در تيم ها سازگار شوند. اين مساله در بين افراد جوان رايج تر است، زودتر مي توانند با يک محيط جديد منطبق شوند و شرايط کاري را بپذيرند و چون سابقه کار کمتري دارند، حقوق کمتري نيز طلب مي کنند.
7- ديدگاه حرفه اي: خيلي از برنامه نويسان شغل خودشان را سخت ترين شغل روي زمين مي دانند، منکر سختي هاي اين کار نيستم اما قبول کنيد که در اين زمينه اغراق مي کنيم و چون فکر مي کنيم که اين کار خيلي سخت است، ناخودآگاه وقتي پا به سن مي گذاريم گمان مي کنيم از پس اينکار بر نمي آييم و ناخودآگاه دنبال کار ديگري مي گرديم.
...

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

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

همين!

Ali Vahed | 08:39 AM | Comment(s)(5)

"پيرِ برنامه ساز" ، "برنامه نويسِ پير"! (قسمت دوم- پیرِ برنامه ساز)

January 27, 2008 12:29 PM

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

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

Ali Vahed | 12:29 PM | Comment(s)(4)

"پيرِ برنامه ساز" ، "برنامه نويسِ پير"! (قسمت اول - تعریف مشاغل)

January 26, 2008 09:34 AM

چند وقت پيش در برخي وبلاگ هاي نرم افزاري بحثي بود در اين زمينه که آيا براي برنامه نويسي، شرط سني بايد قائل شد يا خير و آيا اين شغل عمر مشخصي دارد؟ بحث ديگر تفاوت برنامه ساز و برنامه نويس بود که کداميک بهتر هستند؟ هر چند مباحث مطرح شده توسط نويسندگان اين نوشته ها را قبول دارم ، دراين نوشته قصد دارم از نگاه خودم به اين سوالها پاسخ دهم.
پيش از پرداختن به اصل مطلب بگذاريد نگاهي داشته باشيم به مشاغل موجود در مهندسي نرم افزار:
در کتاب  Careers in Computers  نوشته Lila Stair و Leslie Stair انتشاراتMcGraw-Hill   شاید چیزی نزدیک به 150 تا 200 ردیف شغلی مختلف برای مهندس کامپیوتر فهرست شده است اما اگر بخواهیم خیلی خلاصه طبقه بندی کنیم می توانیم ردیف های شغلی زیر را مشخص کنیم:
- اپراتور : به هر نوع شغلی که متضمن کارکردن و نگهداری یک نرم افزار، بانک اطلاعات یا سیستم اطلاق می شود. این ردیف می تواند از مدیریت آن سیستم تا کاربر ساده آن باشد.
- برنامه نویس: به همه مشاغل مرتبط با تولید یک برنامه کامپیوتری، از برنامه نویس و برنامه ساز ارشد تا یک برنامه نویس جز گفته می شود.
-تحلیل گر سیستم: افرادی که وظیفه تجزیه و تحلیل یک سیستم و تبدیل آن به یک مدل شناخت، تهیه فهرست نیازها و طراحی منطقی و فیزیکی سیستم های مبتنی بر کامپیوتر را بر عهده دارند، در این گروه قرار می گیرند.
- مدیر پروژه: وظیفه برنامه ریزی، سازماندهی و نظارت بر روی پروژه های نرم افزاری را بر عهده دارند.
-طراح مساله: به افراد خبره ای که وظیفه کشف و طراحی مسائل جدید و ارتقاء سطح نرم افزار ها را با ایجاد و پیش بینی نیازها و پرسش های جدید بر عهده دارند گفته می شود.
 اگر این دسته بندی را قبول داشته باشید می توانیم بحث را ادامه دهیم.

در این تقسیم بندی به نکات زیر دقت داشته باشید:
- مهم نیست در کدام گروه قرار دارید، مهم آن است که در میان بهترین افراد هر گروه باشید.
-این طبقه بندی به معنی رتبه بندی نیست. این شکل نیست که اپراتور پایین تر از برنامه نویس باشد و .... در ایران است که این تلقی غلط وجود دارد که این مشاغل رتبه بندی شده اند. هر کدام از این شغل ها به یک روحیه، علاقه و توان خاصی ارتباط دارد. برای مثال یک تحلیل گر باید الزاما دارای روابط اجتماعی قوی باشد و الزامی ندارد که حتما برنامه نویس خیلی خوبی باشد (اگر چه باید برنامه نویسی را بشناسد تا در طراحی ها، انتزاعی عمل نکند) یا، توانمندی های مدیریتی و برنامه ریزی یک مدیر پروژه غالب تر از توانمندی های نرم افزاری وی است. خلاقیت و خبرگی شرط لازمه یک طراح مساله است.
- در هر شغل می توان پول خوب بدست آورد اگر بتوانید به خوبی مهارت کسب کنید.
- الزامی ندارد همه مهندسین نرم افزار برنامه نویس، تحلیل گر و یا مدیریت پروژه بشوند. شاید از هر 1000 نفر، 900 نفر بتوانند برنامه نویس شوند، 100 نفر بتوانند تحلیل گر بشوند، 10 نفر مدیر پروژه و فقط یکی طراح مساله، بنابر این نباید تلاش کرد در این لیست آخری شد، باید تا هر جا که می توان پیش رفت.
با این مقدمه نسبتا طولانی ، می توان به این مساله به خوبی پی برد که "سن" عامل مهمی در برنامه نویسی نیست. بلکه روحیه و توانمندی آن شخص است که باعث می شود برنامه نویس بشود و برنامه نویس بماند. برخی ها "پیر برنامه ساز" هستند با معادل کردن "پیر" با واژه مرشد و راهبر در ادبیات فارسی که توان برنامه سازی بالایی دارند، شناخت خوبی از مسائل مختلف دارند و به سادگی می توانند ابزار پیاده سازی لازم برای ساخت یک سیستم را شناسایی کنند و بکارگیرند. برخی هم می توانند برنامه نویس پیر باشند. که کار با یک ابزار را خوب می دانند و می توانند مساله و طراحی که به آنها داده می شود را پیاده سازی کنند و تست کنند و سالها در همین شغل می مانند تا بازنشته شوند.
در قسمت دوم این نوشته در مورد آفت های این بحث و بررسی وضعیت درستی این مطلب در ایران خواهم پرداخت ....
همین!

Ali Vahed | 09:34 AM | Comment(s)(5)

آدمها ...

January 13, 2008 08:44 AM

"آدمها 10 جور هستند، کسانی که باینری می فهمند، کسانی که باینری نمی فهمند!"


همین!


تا یادم نرفته اشاره کنم به این که، این جمله را دوستی روی کاغذ برایم نوشت، مرجعش را نمی دانم، اگر منبع اصلی آن را می شناسید به من هم بگویید تا لینک بدهم. ممنون.

Ali Vahed | 08:44 AM | Comment(s)(4)

برنامه نويسي، زندگي در وضعيت نارنجي

January 3, 2008 10:22 AM

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

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

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

همين!

(1)اگر اين تعريف غلط است بر من ايراد نگيرد، آن را در يک برنامه سياسي تلويزيون شنيده ام.

Ali Vahed | 10:22 AM | Comment(s)(5)

"خستۀ برنامه نویسی"، نه "خسته از برنامه نویسی"

December 9, 2007 08:13 PM

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

همین!


پی نوشت : در نوشته ای قدیمی، گفته بودم که برخی وقت ها چقدر حسرت آن را می خورم که ایکاش یک برنامه نویس ساده بودم، که چه کار لذت بخشی است برنامه نویسی و تولید. (اینجا)

Ali Vahed | 08:13 PM | Comment(s)(1)

چند مطلب خواندنی در مورد برنامه نویسی

November 27, 2007 09:02 AM

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



همین!

Ali Vahed | 09:02 AM | Comment(s)(0)

جاوا، زبان مخفف ها

August 19, 2007 09:52 AM

چند وقت پیش اطلاع رسانی کرده بودم که وبلاگ Let's Talk About Java  یا Javaborder را مهیار شروع کرده است و تقریبا با همان رویکردی که گفته بود مطلب می نویسد.
وبلاگ خوبی شده، من که استفاده می کنم از آن، مخصوصا آنکه از نگاه یک برنامه نویس باتجربه، شروع به آموزش زیان جاوا می شود. معولا کسی که برنامه نویسی بلد نیست شاید راحت تر با یک زبان جدید کنار بیاید و با قبلی آن را مقایسه نمی کند، اما نگاه مهیار از بالا به زبان و همچنین ذکر مثالهای سودمند، باعث شده که هر برنامه نویسی که جاوا زبان اصلیش نیست هم از خواندن آن بهره ای هم ببرد.
من که فعلا در بین نامها  و مخفف های جاوا گم شده ام! 
 
همین!


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

Ali Vahed | 09:52 AM | Comment(s)(1)

Let's Talk about Java ...

May 19, 2007 11:33 AM

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


با همت دوست عزیزم، مهیار، وبلاگی تحت عنوان "Let's Talk about Java"  ایجاد گردید. نویسنده هدف از نوشتن این وبلاگ را زمینه ای برای مطالعه عمیق تر جاوا و به اشتراک گذاری دانسته هایش دانسته است. مهیار را آدمی می شناسم که با خودش و مخاطبش بسیار صادق است ، زبان صریحی دارد و پشتکار عجیبی در پیگیری یک موضوع دارد، پس به هدفی که دارد پایبند است و در همین راستا قدم بر می دارد. برایش آرزوی موفقیت می کنم.


همین!

Ali Vahed | 11:33 AM | Comment(s)(1)

مرجع نام گذاری Delphi

March 29, 2007 04:59 PM

یکی از دوستان لینکی برایم فرستاد که در آن اشاره شده به دلیل نام گذاری Delphi، اینکه چطور و چرا Borland به این نتیجه رساند که محیط برنامه سازی Visual خود را که بر مبنای Object Pascal تهیه شده بود Delphi  بنامد. جالب بود برایم که به خاطر oracle نام محصول جدید Delphi گذاشته شد. 
 توصیه می کنم اصلش را بخوانید با عنوان:


Borland History: Why the Name "Delphi"? by David Intersimone  
Danny Thorpe, Senior Engineer, Delphi R&D Inprise Corp
 


  همین!

Ali Vahed | 04:59 PM | Comment(s)(0)

برنامه نویس روز کار، برنامه نویس شب کار!

February 4, 2007 11:21 AM

مطلبی خواندم در وبلاگ notgartner با عنوان:


The Day Programmer vs. The Night Programmer


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


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




  1.  برنامه نویسان روز کار (Day Programmer)


  2. برنامه نویسان شب کار (Night Programmer)

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

مشخصات اصلی برنامه نویسان شبکارعبارت است از :
1- اغلب قابلیت رهبری تیم ها را دارند و آن را انجام می دهند.
2- آنها اغلب تمایل دارند مسائل پیچیده را حل کنند.
3- می توانند مسائل را مجسم کنند و مدل سازی نمایند و از یک نوع حس ششم برخوردارند.
4-ابزارهای برنامه سازی را در خانه هم دارند.
5- در گروه ها و انجمن های برنامه نویسی شرکت می کنند.
6- برنامه نویسی را مانند نفس کشیدن حیاتی می دانند.

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

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

Ali Vahed | 11:21 AM | Comment(s)(2)

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

April 7, 2005 07:53 PM

الوعده وفا!


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


به همین منظور، بخش آموزش برنامه نویسی با آدرس www.radmanitd.com/programming/  ایجاد گردید و از این به بعد بحث های تخصصی آموزشی در این بخش ارائه خواهد شد.


همین!

Ali Vahed | 07:53 PM | Comment(s)(7)

برنامه نویسی

December 21, 2004 03:14 PM

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

Ali Vahed | 03:14 PM | Comment(s)(0)

فیلتر های ساده و پیچیده

October 2, 2004 12:33 AM

یکی از قسمت های مهم نرم افزارهای تولیدی رادمان, امکاناتی است که برای پویا سازی آنها اضافه شده است. از مهمترین آنها, امکان فیلتر کردن اطلاعات یک فهرست بر اساس مقادیری است که کاربر برای برخی فیلد ها انتخاب کرده است. در سیستمهای قبلی رادمان این امکان با ایجاد یک فیلتر ساده اما در عین حال کارا که بسیار شبیه عملکرد excel ld می باشد به انجام رسید اما در پروژه جاری -پروژه آبتین- مساله جدیدی مطرح می شود. کاربران بیشتر مایلند یکسری فیلد مشخص را در فیلترکردن استفاده کنند. هر چند اینکار با فیلتر موجود قابل انجام است اما چون این کار همیشگی است و در تعداد بار زیاد اتفاق می افتد بهتر است ابزار ساده تری برای کاربر پیش بینی گردد. مساله ای که فعلا مشغول به فکر کردن در مورد آن هستم. اگر کسی از دوستان نظری دارد مطرح کند تا به ساده ترین شکل برای کاربر ابزاری تولید شود. همین!

Ali Vahed | 12:33 AM | Comment(s)(1)