فناوری اطلاعات و بازار خراب‌کن‌ها

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

تعریف بازار خراب کن: در بازار به کسی که محصول/خدماتی را به قیمت (خیلی) پایین تر از روال بازار بفروشد بازار خراب کن می‌گویند. در فناوری اطلاعات افزون بر تعریف یاد شده گونه  دیگری از بازار خراب کن هم داریم.

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

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

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

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

صحبت از این دست زیاد است و حوصله کم. به همین بسنده می‌کنم.

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

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

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

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

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

اگر می خواهید بار دیگر که  مطلبی نوشته شد، آگاه گردید. عضو خوراک (feed) این بلاگ شوید. همچنین می توانید مرا در تویتر دنبال کنید. «فهرست همه نوشته‌ها»ی من را اینجا ببینید.

پرسش‌های نابخردانه نپرسیم

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

0- شما نام این نوشته را بخوانید «پرسش‌های احمقانه نپرسیم»

1- پیشگفتار

اریک ریموند مقاله‌ای پرآوازه دارد به نام «چگونه هوشمندانه بپرسیم» (How To Ask Questions The Smart Way) بدبختانه این مقاله بسیار سودمند هنوز به فارسی برگردانده نشده است (به جز خلاصه‌ای بسیار کوتاه). چندی است که در دیدگاه‌های بلاگ‌ها (کامنت) و انجمن‌های اینترنتی (فروم‌ها) پرسش‌هایی می‌بینیم که نه تنها هوشمندانه نیستند، بلکه بسیار هم احمقانه هستند. نمونه این‌ها بسیار است و نمی‌دانم برای آن‌ها چه باید کرد.

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

جدا از اینکه بسیاری از پرسش‌هایی که پرسیده می‌شود را می‌توان با اندک جستجویی در همان انجمن یا اینترنت بدست آورد، چندی از این پرسش‌ها بسیار نابخردانه هستند. در بخش پسین اندکی از این پرسش‌ها که نمونه خروار آن‌هاست را می‌آورم.

2- درآمد: این چند سناریو را ببینید، این چند سناریوها از انجمن (فروم) های فارسی بدست آمده‌اند. فقط هرچه فکر می‌کنم یادم نمی‌آید یکمی را در کدام فروم دیده‌ام.

سناریو 0 (الگو):

چگونه می‌توانم در مسابقه‌های اتومبیل‌رانی رالی شرکت کنم. البته من هنوز رانندگی بلد نیستم.

سناریو 1:

فرد الف: میخواهم لینوکس سرور نصب کنم که کارهای y،x و z  را انجام دهد.

فرد ب در پاسخ: کارهای 1و 2 و 3 را انجام می‌دهی سپس در ترمینال فلان چیز را می‌نویسی.

الف: ترمینال! ترمینال در لینوکس چیست و چگونه می‌توان به آن دسترسی پیدا کنم.

سناریو 2:

الف: می‌خواهم در  C++ فلان کار را بکنم. «من خیلی C++ بلد نیستم.»

ب: «برای اعداد خیلی بزرگ باید از آرایه استفاده کنی و یه کلاس جدید برای کار با اون بنویسی …. »

الف: «میشه بیشتر توضیح بدید. من چیزی از کلاس نمی دونم . همین طور میشه بگید.»

سناریو 3:

الف: «من میخوام برای یک اداره دولتی سایت طراحی کنم. اما تقریبا اولین کارم در این زمینه هست.
میخواستم بدونم سایتهای ادارات دولتی مثل شهرداریها و وزارت و غیره که میبینیم چطور طراحی میشه و چه امکاناتی داره
آیا بیشترش با CMS های اپن سورس انجام میشه و لطفا بهم معرفی کنید
آیا کسی این سایت ها رو بطور سفارشی و با کدنویسی طراحی میکنه و یا با دریم ویور …»

ب: «دوست عزیز در حال حاضر تقریبا هیج سایتی … نیست که بدون استفاده از سامانه‌های مدیریت محتوی (cms) پیاده‌سازی شده باشد. …»

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

سناریو 4:

الف: خوشحالم که با شما آشنا شدم. من همه‌ی نوشته‌های بلاگ شما را بادقت خوانده‌ام. اما سوالی دارم. چگونه می‌توانم کار X را انجام دهم.

ب: نوشته‌ی Y من را با دقت بخوان.

الف: خوانده‌ام. اما جواب پرسش من در آن نیست.

ب: پاراگراف دوم خط سوم …

الف: آها. راست میگید. حالا چطور می‌تونم کار Z را انجام بدم.

ب: همان نوشته پاراگراف سوم.

الف: آها. یه سوال دیگه….

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

————–

چیزی که برای من جالب است این است که بسیاری افرادی که پرسش‌های هوشمندانه ندارند این سه صفت را دارند. (به ویژه دوستان جوان‌تر و دانشجو)

  • کم صبر هستند
  • نوشته‌ها را بادقت، درست و کامل نمی‌خوانند
  • جستجو نمی‌کنند

با کمی کار روی این‌ها می‌توان پرسش‌های هوشمندانه‌تری پرسید. چیزی که نمی‌دانم این است این است که با افرادی که پرسش‌های احمقانه می‌پرسند چه باید کرد. به ویژه برای سناریوهای 2،1 و 3.

اگر می خواهید بار دیگر که  مطلبی نوشته شد، آگاه گردید. عضو خوراک (feed) این بلاگ شوید. همچنین می توانید مرا در تویتر دنبال کنید. «فهرست همه نوشته‌ها»ی من را اینجا ببینید.

راهنمای کوچک برنامه‌نویسی با codeblocks

0- درآمد:

اگر شتاب دارید، می‌توانید از این بخش گذر کنید.

در «پندهایی به دانشجویان کامپیوتر: چشمان خود را باز کنید» و چندین جای دیگر بارها گفته‌ام که دانشجویان باید بسیار کُد/برنامه بنویسند. اگر پیگیر بلاگ من باشید می‌دانید که من برنامه‌نویس یا گیک نیستم و رویکردم بیشتر مدیریتی است. آنچه مرا بر آن داشته تا این نوشته را بنویسم مساله‌ای که تازگی بسیار می‌بینم؛ چندی پیش دانشجویی که در پایان ترم 3 و درس برنامه‌سازی پیشرفته بود از من خواست تا به رسم همسایگی پروژه‌های پایان ترم این درس را برایش بنویسم، که البته ننوشتم. تلاش کردم تا این کار را با هم انجام دهیم. پس از آنکه- برای آموزش- برنامه‌ها را بر روی کاغذ نوشتیم، از او خواستم تا آنها را تایپ و اجرا کند. آنها را تایپ کرد ولی پس از آن چیزی گفت که برایم جالب بود: او تا آن روز حتا یک برنامه C/C++ را کامپایل/اجرا نکرده بود. به زودی دانستم که این مشکل بسیاری از دانشجویان است. جالب‌تر آنکه دانستم هنوز بسیاریTurbo C++ را برای این کار بکار می‌گیرند که البته بهتر است بگویم بکار نمی‌گیرند. ایرادی به این برنامه وارد نیست ولی دیگر زمان این برنامه گذشته است و محیطی دلچسب ندارد. ما هم زمان دانشجویی این برنامه را بکار می‌گرفتیم(ده-یازده سال پیش.) امروزه «محیط های یکپارچه برنامه‌سازی» (IDE) بسیار کاربر پسندتر به بازار آمده است. یکی از این محیط‌ها Code::Blocks است که زیبا، ساده، بازمتن و رایگان است. بسیاری از دانشجویان به بهانه محیط بد سراغ برنامه‌نویسی نمی‌روند. دوستانی برآنند که باید برنامه‌نویسی و کامپایل را،دست کم برای مدتی، از خط فرمان انجام داد. من همین همین عقیده را دارم اما برای عاشقان برنامه‌نویسی. امروز می‌گویم مهم لذت از  برنامه‌‌نویسی و ادامه آن است. اگر کسی لذت برنامه‌‌نویسی را حس کند، آنرا پی گرفته و در آن ژرف‌تر می‌شود. دلیل دیگری هم دارد: یکی از دغدغه‌های من به‌عنوان مدیر/مشاور، بکارگیری (استخدام) نیرو است و فکر می‌کنم بارها گفته‌ام که نیروی کاربلد بسیار کم است، این پست را نوشتم شاید تعداد بیشتری علاقه‌مند شده و سراغ برنامه‌نویسی روند.

1- آغاز: بارگیری و نصب

اگر کاربر ویندوز هستید به اینجا بروید. برای ویندوز دو نسخه موجود است که بهتر است شما نسخه همراه با کامپایلر MinGW را بگیرید. حجم این نسخه حدود 20 مگابایت است. پس از بارگیری بر روی آن کلیک کنید. اگر پیشتر کامپایلری روی سیستم شما نباشد، نیازی به هیچ تنظیمی نیست و برنامه به‌سادگی نصب می‌شود. پس از نصب می‌توانید برنامه را از منوی Start  اجرا کنید.

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

sudo apt-get install build-essential codeblocks

یادتان باشد که کامپایلر را هم نصب کنید، که من این کار را با نصب build-essential انجام داده‌ام. در اوبونتو برنامه از نشانی زیر اجرا می‌شود.

2- اجرا:

به

File -> New -> Projet…

بروید و  Console application را بزنید. در گام دیگر زبانتان را (C/C++) بگزینید. در گام دیگر به ترتیب نام پروژه، پوشه‌ای که می‌خواهید پروژه در آن ذخیره شده و نام فایل را بنویسید.(البته هنگام نوشتن نام پروژه، خودش نام فایل را می‌گزیند).

درگام دیگر نام کامپایلر را می‌خواهد که به‌صورت پیش فرض GNU GCC Compiler است، اگر نیست آن‌را انتخاب کنید. کار تمام است. پروژه ساخته می‌شود. زیر نام پروژه به زیر sources بروید و روی main.cpp کلیک نمایید. کد برنامه نمایش داده می‌شود. همانگونه که می بینید CodeBlocks خودش یک برنامه ساده برای شما نوشته است.

برای اجرای این برنامه کافی است دو کار انجام دهید. به منوی Build بروید و به ترتیب

Build ->Build

و سپس

Build->Run

را بزنید. یکمی برنامه را کامپایل می‌کند و دومی ،اگر در مرحله پیشین خطایی یافت نشود، برنامه را اجرا می‌کند. من متن را تغییر داده Build و Run را دوباره تکرار کردم. اینک می‌توانید  خروجی را ببینید.

حالا می‌توانید برنامه‌هایی را پیشتر نوشته‌اید یا در کتاب‌ها دیده‌اید را تایپ و اجرا کنید.

3- بیشتر:

تا همین حد برای یادگیری و اجرای برنامه‌ها کافی است. هرچه با این محیط بیشتر کار کنید، بیشتر با آن آشنا شده و ویژگی‌های آن دستتان می‌آید. codeblocks ویژگی‌های بسیار بیشتری دارد که با خواندن راهنمای آن با آن‌ها آشنا می‌شوید. از برنامه نویسی با codeblocks لذت ببرید و تا آنجا که می‌توانید برنامه بنویسید.

تبریک می‌گویم اکنون دیگر برنامه‌نویس شدید، پس وقت آن است که این نوشته را بخوانید.

اگر می خواهید بار دیگر که  مطلبی نوشته شد، آگاه گردید. عضو خوراک (feed) این بلاگ شوید. همچنین می توانید مرا در تویتر دنبال کنید. «فهرست همه نوشته‌ها»ی من را اینجا ببینید.

یک درس اجباری دیگر: کارآفرینی یا اقتصاد؟

نکته: می‌دانم همین حالا هم چندی می‌گویند درس‌ها زیادند و باید کم شوند، من در این باره هیچ دیدی ندارم و البته نمی‌خواهم صدای آنها را در بیاورم.

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

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

حالا که «مبانی اقتصاد» جزو درس‌ها نیست، چه کنیم؟

یک روش می‌تواند این باشد که با پیگیری و پشتکار فراوان به مدیران گروه بپذیرانیم که این درس را با استادی خوب، اقتصاد خوانده‌ و اقتصاد‌دان ارایه کنند. از آنجا که اقتصاد امروز بسیار بر پایه ریاضیات است، بهتر است که پیش‌نیاز این درس درسی‌هایی چون ریاضی 2 و آمار و احتمالات باشند. هم‌اکنون بهترین کتاب برای این درس ویرایش پنجم Principles of Economics است که به فارسی ترجمه نشده است. این کتاب محبوب‌ترین نوشته اقتصاددان بسیار معروف و استاد دانشگاه هاروارد «گریگوری منکیو» است. خوشبختانه کتاب دیگری از این نویسنده که برای این درس نیز مناسب است به فارسی برگردانده شده، که بهترین گزینه‌ی فارسی موجود است:

  • مبانی علم اقتصاد، گریگوری منکیو، حمیدرضا ارباب، نشر نی.

این کتاب همچنین برای کسانی که می‌خواهند خودشان اقتصاد بخوانند، سودمند است. (درباره کتاب بیشتر بخوانید)

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

همچنین می‌توانید دوره یا کلاس‌های فشرده برای این درس بگذارید، برای نمونه  به‌شکل 3 -4 هفته، یک روز در هفته (اگر کار می‌کنید: پنجشنبه یا جمعه) و روزی 8 ساعت.

اگر می خواهید بار دیگر که  مطلبی نوشته شد، آگاه گردید. عضو خوراک (feed) این بلاگ شوید. همچنین می توانید مرا در تویتر دنبال کنید. «فهرست همه نوشته‌ها»ی من را اینجا ببینید.

سلام مهندس، روزت مبارک

یادم است آن زمان که دانشجو بودیم این بیماری تنها گریبانگیر دانشجویان پزشکی بود، اکنون می‌بینم که به دانشجویان مهندسی نیز سرایت کرده!
یادم است آن هنگام، تنها دانشجویان پزشکی بودند که از ترم‌های آغازین همدیگر را «خانم دکتر/آقای دکتر» صدا می‌کردند. این بیماری در دانشجویان مهندسی دیده نمی‌شد. درست بخاطر دارم – من کمی زودتر از دیگر دوستان نزدیکم درسم تمام شد- پس از آنکه درسم تمام شد،  تا مدت‌ها دوستان برای اذیت من واژه مهندس را به کار می‌بردند، یا تا چند سال، من و نزدیک‌ترین دوستانم که آنها نیز مهندسند برای ناسزا گفتن به هم واژه مهندس را بکار می‌بردیم. برای نمونه اگر از هم دل‌آزده می‌شدیم، می‌گفتیم «چطوری مهندس، خوبی مهندس!» و باور کنید چندین سال طول کشید تا به این واژه، پیش از نام خود خو بگیرم. اکنون به شکلی فراگیر و جاهایی که فکر می‌کنم نیاز است آن‌را پیش از نام خود بکار می‌برم و از بکار بردن این واژه ابایی ندارم، اما این گونه جمله‌ها  را تازگی بسیار می‌شنوم «مهندس، ریاضی 2 را پاس کردی؟» یا «مهندس، برنامه‌سازی پیشرفته چند شدی؟»

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

اما براستی هرکسی «مهندسی» خواند،  مهندس می‌شود!؟
نگاهی به ویکی‌پدیا می‌اندازم (باور کنید هنوز دانشجویان/ مهندسان کامپیوتر بسیاری هستند که نمی‌دانند ویکی‌پدیا چیست) در ویکی‌پدیای فارسی آمده «مهندس کسی است که در یکی از رشته‌های مهندسی آموزش دیده‌باشد و یا به طور حرفه‌ای در آن رشته مشغول به کار باشد. مهندسان از فناوری، ریاضیات، و دانش برای حل مسائل کاربردی استفاده می‌کنند.»  من امروزه کمتر مهندسی را می‌بینم که بتواند مسایل را تحلیل و حل کند. راستش را بخواهید تقریبا قدرت تحلیل / آنالیز مساله دیده نمی‌شود. برگردیم به رشته خودمان، این نوشته خوب و بسیار گویا درباره مهارت‌های بایسته یک مهندس کامپیوتر را که از اینجا نقل آورده‌ام، بخوانید:

A computer engineer needs excellent problem solving skills, a good theoretical grounding in the fundamentals of engineering and the practical skills to put theory into practice. Computer engineers may design computer hardware, write computer programs, integrate the various subsystems together or do all three. Computer engineers need good management skills as they often get quickly promoted to project manager type positions. Furthermore, computer engineers need good people skills, as they have to sell their ideas to other engineers, other professionals and members of the public.

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

اگر می خواهید بار دیگر که  مطلبی نوشته شد، آگاه گردید. عضو خوراک (feed) این بلاگ شوید. همچنین می توانید مرا در تویتر دنبال کنید.

راهنمای کوچک همکاری در پروژه‌های بازمتن

درآمد: حدود یک سال و چهارماه پیش «چرا دانشجویان ایرانی باید در پروژه های آزاد/بازمتن مشارکت کنند!؟» را نوشتم (نخست آن‌را بخوانید)، تا این که چند روز پیش یه این نوشته برخوردم، ترجمه نام اصلی نوشته «توصیه شغلی به مهندسان نرم‌افزار تازه فارغ‌التحصیل شده یا در شرف آن» (پارسی‌تر: پندهای کاری به مهندسان نرم‌افزار دانش‌آموخته یا در آستانه دانش‌آموختگی) است. اما چون سریع و گذرا همکاری در پروژه‌های بازمتن را نیز یادآور شده، این نام را برگزیدم.

نوشته اصلی:
به این مقاله در Slashdot برخوردم و مرا به یاد آن پندهایی انداخت که به چند تازه دانش‌آموخته که با آنها کارکردم، دادم. همیشه می‌بینم بزرگترین مساله‌ای که استخدام‌کننده‌ها با کسانی که مستقیم از دانشگاه آمده‌اند (یا می‌خواهند که کارشان را به برنامه‌نویسی تغییر دهند) دارند،  این است که آن‌ها دقیق نمی‌دانند در چه مهارت دارند. گرچه بیشتر وقت‌ها می‌توان بدست آورد که آیا آنها باهوش هستند یا خیر و این بخش مهمی از کار است، اما همیشه خوب است که چیزی ملموس برای بررسی در دست داشت، چیزی بیشتر از کَُد «Hello World»  از دوران دانشجویی.

خوشبختانه در دنیای امروز این چیز بوسیله دنیای بازمتن و کمی سخت‌کوشی دست‌یافتنی است. به سادگی یک پروژه بازمتن خوب، کمی نامدار که خوشتان بیاید، بیابید (خود من در پروژه‌های Solr و Mahout ،Lucene همکاری می‌کنم) و در آن همکاری (مشارکت) کنید. با چند بسته (Patch) کوچک و به‌خوبی تست‌شده آغاز کنید، حتا می‌تواند درست‌کردن خطای ساده (Bug Fix) یا تصحیح مستندات باشد. سپس، همینطور که پیشرفت کرده و دانش شما بیشتر می‌شود، در لیست‌های پستی به پرسش‌ها پاسخ دهید و در بسته‌های بزرگتری همکاری کنید. با انجام کارهایی (سطح پایین) که دیگران دوست ندارند انجام دهند با دیگرهمکاری کنندگان دوست شوید. دوستانه و مودبانه برخورد کنید و پاسخ پرسش تازه‌کاران را با ادب و احترام بدهید، همزمان هرچه می‌توانید کارهای سخت‌تر بردارید. این کار را برای دست‌کم شش ماه یا بیشتر انجام دهید، اینگونه مشخص می‌شود که می‌توانید به یک ایده بچسبید و به بار نشستن آن را می‌بینید.

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

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

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

اگر می خواهید بار دیگر که  مطلبی نوشته شد، آگاه گردید. عضو خوراک (feed) این بلاگ شوید. همچنین می توانید مرا در تویتر دنبال کنید. «فهرست همه نوشته‌ها»ی من را اینجا ببینید.

پندهایی به دانشجویان کامپیوتر: چشمان خود را باز کنید

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

اما پندها:

 

۰- (برای دانشجویان IT ) فکر نکنید بلافاصله پس از فارغ‌التحصیلی مدیر یا مدیر پروژه می‌شوید. برای مدیر شدن باید مهارت‌های کاربردی بسیاری فرا بگیرید که نیازمند گذشت زمان و تجربه‌اندوزی است. شما باید از همان جایی آغاز کنید که دانشجویان کامپیوتر می‌کنند. البته دانش مدیریتی‌تان کمکتان می‌کند که خیلی زود به آنجا برسید. حال ادامه پند‌ها را بخوانید:
 
۱- نخست درس‌های دانشگاهی را بسیار خوب بخوانید، برای اینکه یاد بگیرید نه برای پاس کردن.
 
۲- از سال‌های آغازین شروع به یادگیری مهارت یا زبان برنامه‌نویسی خاص به صورت حرفه‌ای نمایید. اگر می‌خواهید برنامه‌نویسی کنید، زمان مناسب برای آغاز پس از درس «برنامه‌سازی پیشرفته» (دومین درس برنامه‌نویسی) است. بهترین زبان‌ها نیز برای شروع پایتون و جاوا هستند (گرچه خودم پایتون را بهتر و مناسب تر می‌دانم. پی نوشت ۵ را هم ببینید). این کار هم به دو روش یعنی رفتن به  کلاس  در یک موسسه خوب یا خواندنِ شخصی امکان‌پذیر است و سپس برنامه‌نویسی، برنامه‌نویسی و برنامه‌نویسی تا جایی که می‌توانید کُد بنویسید.
 
۳- تلاش کنید در یک پروژه بازمتن مشارکت کنید. (پست «چرا دانشجویان ایرانی باید در پروژه‌های آزاد/بازمتن مشارکت کنند!؟» را بخوانید)
 
۴- زبانتان را بسیار قوی کنید، اگر درست برنامه‌ریزی کنید، به‌راحتی می‌توانید همزمان با دانشگاه به کلاس زبان بروید. برای زبان‌آموزی بیش از یک راه وجود ندارد، باید به کلاس بروید، به‌مدت طولانی و پیوسته، آن‌هم در موسسه‌ای خوب.
 
۵- کار با لینوکس را فرا بگیرید، دست‌کم در حد کاربری.
 
۶- پس از آنکه مقداری مهارت فرا گرفتید (در همان دانشجویی) تلاش کنید تا به شرکتی نرم‌افزاری بروید (اگر می‌خواهید برنامه‌نویسی کنید)  و رایگان و پاره‌وقت کار کنید. باور کنید آنچه آنجا تجربه‌خواهید کرد بسیار بیش از رایگان کارکردنش می‌ارزد. البته این کار آسان نیست باید پشتکار داشته باشید و پیگیر باشید تا بتوانید مدیر یک شرکت را متقاعد کنید که شما را بپذیرد. گاهی لازم است تا به ۱۰-۲۰ شرکت مراجعه کنید تا یکی شما را بپذیرد.
 
۷- به فکر کارآفرینی و شرکت زدن هم نباشید، حالا بسیار زود است  (پست «چگونه از خود مدیر بسازیم» را بخوانید)
 

من پیشتر نوشته‌ای از جول اسپالسکی با نام «پندهایی به دانشجویان کامپیوتر» را درسه بخش ترجمه کرده‌ام که می‌توانید پی‌بگیرید: بخش نخست ، بخش دوم و بخش سوم.

 

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

 

پ.ن ۱: راستش مدت‌ها است که دوست دارم دو پست بنویسم با نام‌های «چرا دانشجویان پند ناپذیرند؟» و «چرا نمی‌شنویم؟» فکر می‌کنم نام آن‌ها به اندازه کافی گویا است، امیدوارم همت کنم و این دو را بنویسم.

 

پ.ن ۲: وبلاگ فراسان این مساله را از زاویه دیگری دیده است و پستی نوشته  با نام «یافتن کار نیمه وقت و کسب تجربه در زمینه نرم افزار» در پنج قسمت، این پنج پست را نیز بخوانید: قسمت نخست، دوم، سوم، چهارم و پنجم.

 

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

 

پ.ن ۴: اگر می خواهید با C++ آغاز کنید (گرچه پیشنهاد نمی کنم): اگر زبانتان قوی است کتاب

را بیابید و با آن آغاز کنید، البته این کتاب هنوز بیرون نیامده و اوایل 2009 بیرون خواهد آمد-شاید زمانی که این پست را می بینید کتاب بیرون آمده باشد- این کتاب را خالق C++ یعنی Stroustrup و به عنوان نخستین کتاب برنامه نویسی نوشته. اگر زبانتان قوی نیست- که بهتر است به مرور قوی اش کنید- کتاب C++ دایتل و دایتل با چندین ترجمه در بازار موجود است که شخصا فکر می کنم ترجمه شریفی انتشارات غزال ترجمه مناسبی است این کتاب در دو جلد چاپ شده که مشخصات آنها را می توانید اینجا و اینجا ببینید.

 

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

 

اگر می خواهید بار دیگر که  مطلبی نوشته شد، آگاه گردید. عضو خوراک (feed) این بلاگ شوید. همچنین می توانید مرا در تویتر دنبال کنید. «فهرست همه نوشته‌ها»ی من را اینجا ببینید.

 

Balatarinاین نوشته را به بالاترین بفرستید:
mohandes

سمینار کسب‌ و کار نرم‌افزار آزاد/بازمتن

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

اگر می خواهید بار دیگری که  مطلبی نوشته شد، آگاه گردید. عضو خوراک (feed) این بلاگ شوید.

جشنواره مجازی نرم افزارهای آزاد/بازمتن

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

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

نرم‌افزارهایی که هر روز با آنها کار می‌کنم:

سیستم عامل: اوبونتو

مرورگر: فایرفاکس

نرم‌افزارهای اداری (تایپ و …): OpenOffice.org

گفتگو، چت و ارتباط با دوستان: Pidgin

دیدن عکس: Mirage

نرم‌افزارهایی که به فراخور با آنها کار می‌کنم:

کار با گوشی موبایل: Wammu

دیکشنری فارسی به انگلیسی: xFarDic و MDic

ویرایش عکس و تصویر: GIMP

برای بارگیری(دانلود): Downloader for X

ایمیل خوان (به ندرت استفاده می‌کنم): Claws

وب‌کم: Cheese

کارهای مالی و حسابداری: GnuCash

پخش موسیقی: Exaile

رایت: ‌Brasero

پخش فیلم: VLC و SMPlayer

مجازی سازی: VirtualBox

و کلی برنامه دیگر که هر کدام به کاری می‌آیند.

این جشنواره در آستانه برپایی روز آزادی نرم‌افزار برگزار می‌شود.

اگر در اصفهان هستید همایش روز آزادی نرم‌افزار پنجشنبه ۲۸ شهریور ماه برگزار می‌شود برای اطلاعات بیشتر و ثبت‌نام به اینجا سر بزنید.

اگر می خواهید بار دیگری که  مطلبی نوشته شد، آگاه گردید. عضو خوراک (feed) این بلاگ شوید.

فهرست بهترین کتاب‌های مهندسی نرم ‌افزار

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

اگر می خواهید بار دیگر که  مطلبی نوشته شد، آگاه گردید. عضو خوراک (feed) این بلاگ شوید(فید چیست و نحوه استفاده از فید.) همچنین می توانید مرا در تویتر دنبال کنید. «فهرست همه نوشته‌ها»ی من را اینجا ببینید