شیوه جذب نیرو

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

‫روش برنامه‌نویسی Forum Driven Development

تا حالا به فوروم‌های (انجمن‌های) برنامه‌نویسی ایرانی علی الخصوص «سایت برنامه‌نویس» مراجعه کرده‌اید؟ به سوالات آن هم دقت کرده‌اید؟ تا حالا دیده‌اید که مثلاً شخصی تا حالا یک بار هم Socket Programming کار نکرده و هیچ علاقه‌ای هم به کار کردن با آن ندارد اما چون در یک پروژه به آن نیاز دارد به دنبال یک راهنمایی فقط برای رفع نیاز فعلی‌اش بدون فهم یا استفاده درست از آن راهنمایی است؟ تازه بعد از مدتی اعلام می‌کند که کار پروژه‌اش را با آن تیکه کد یا اسمبلی راه انداخته است؟ تا حالا دقت کرده‌اید که تا یک نفر جواب یک سوال خیلی ساده را می‌دهد چقدر به او استاد استاد گفته می‌شود یا این که تا بحثی در باب بهتر بودن یک روش یا تکنولوژی باب می‌شود چقدر بحث‌های متعصبانه و گاه اشتباه در می‌گیرد؟

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

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

ضرورت تکنولوژی

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

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

شکست نظامی ناشی از عدم استفاده از تکنولوژی روز فقط مختص به ما نیست:

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

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

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

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

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

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

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

پول ویندوز را بدهیم یا ندهیم؟

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

قبل از ادامه باید به دو نکته توجه کرد. یکی این که موضوع انتخاب بین ویندوز و لینوکس یا بحث‌های open source و غیره نیست. من ویندوز را دوست دارم و می‌خواهم روی آن ادامه دهم. مشکل در اینجا فقط گران بودن و مشکلات تحریم است. نکته دوم این که همه این بحث‌ها وقتی که شما انفرادی کار می‌کنید خیلی اهمیتی ندارد. چون اکثر laptopها شامل یک ویندوز اصلی هم هستند و اگر صاحب آن برنامه‌نویس ویژوال استودیو نباشد، بدون نیاز به هزینه زیادی، Copyright را رعایت کرده است. بحث بر شرکت‌های کوچک و متوسطی است که می‌خواهند به نوعی این مشکل را حل کنند.

راه اول: کنار گذاشتن اخلاق و استفاده غیر قانونی از محصولات مایکروسافت

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

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

راه سوم: پرداخت کامل هزینه لایسنس ویندوز و بقیه محصولات:
اول باید ببینیم هزینه استفاده از محصولات قانونی چقدر است و آیا از عهده ما بر می‌آید یا نه. از آنجا که خیلی از شرکت‌ها و برنامه‌نویس‌ها از تمام امکانات محصولات مایکروسافت استفاده نمی‌کنند و از آنجا که فعلاً می‌خواهیم با کمی صرفه جویی کارمان را شروع کنیم، از هزینه خرید ویندوز سرور چشم پوشی کرده و به جای آن از ویندوز ۷ استفاده می‌کنیم. در مورد Visual Studio و MS SQL هم سعی می‌کنیم کارمان را با نسخه‌های express یا محصولات رایگان دیگر مثل MySql یا SharpDevelop راه بیندازیم. پس تنها چیزی که ما می‌خواهیم خرید چند نسخه ویندوز است. فرض کنید شرکتی ۱۰ کارمند دارد و ۱۲ تا کامپیوتر. اگر قیمت هر نسخه از ویندوز (یک ویرایش متوسط) را ۱۵۰ هزار تومان فرض کنیم، پول لایسنس‌هایمان یک میلیون و هشت صد هزار تومان می‌شود. اگر این هزینه را با دیگر هزینه‌های شرکت‌داری مثل اجاره دفتر که ممکن است تا چند میلیون تومان در ماه برسد مقایسه کنیم، خواهیم دید که پرداخت این مبلغ آنقدر سخت نیست که بخواهیم به خاطر آن به لینوکس مهاجرت کرده یا از زیر آن در برویم. البته طرح‌های رایگانی مثل BizSpark هم هستند ولی نمی‌شود در ایران از آنها استفاده کرد.

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

پروژه‌های خوب، شرکت‌های بد

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

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

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

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

۴- رابطه: یک سری شرکت‌ها هم وجود دارند که اصلاً از روز اول شرکت نبوده‌اند ولی پروژه‌های بسیار نان و آب داری پیدا می‌کنند. این طور شرکت‌ها معمولاً صاحبان با نفوذی دارند که بدون داشتن تیم تولید خوب، تبلیغات، بازاریابی خوب، شهرت، شانس و حتی سابقه کار، پروژه‌های خیلی خوبی را جذب می‌کنند. می‌توان گفت این طور شرکت‌ها از رابطه‌های بسیار بسیار خوبی بهره می‌برند. ولی آیا دیگر شرکت‌ها و تیم‌ها آدم نیستند؟

واقعاً چطور می‌توان از این بازار و در این سیستم پروژه گرفت؟ آیا قوانین نانوشته ولی مشخصی دارد که ما بلد نیستیم؟ آیا مشکل از مشتری‌هاست که با چشم بسته انتخاب می‌کنند؟ آیا…؟

‫دسترسی قانونی و تقریباً رایگان به MSDN با استفاده از BizSpark

آقای نصیری مطلب مفیدی تحت عنوان «هزينه استفاده از دات نت فريم ورك چقدر است؟» نوشته بود که اتفاقاً خیلی هم کامنت دار شد و کامنت‌های مفیدی هم داشت. در یکی از کامنت‌های آخر، آقای نصیری اشاره کرده بود به طرحی از طرف مایکروسافت به اسم BizSpark مبنی بر این که شرکت‌های تازه کار (startup) می‌توانند با استفاده از این طرح به مدت سه سال مشترک MSDN (شامل ویژوال استودیو و ویندوز و…) شده و در آخر دوره سه ساله فقط ۱۰۰ دلار بپردازند. خیلی کنجکاو شدم و سری به سایت طرح زدم.

خبر را واقعاً درست خوانده بودم. مایکروسافت سری محصولات MSDN خود را تقریباً به طور رایگان به شرکت‌هایی که در سه سال اول تاسیس باشند، درآمدی کمتر از یک میلیون دلار در سال داشته باشند و به صورت خصوصی اداره شوند ارائه می‌دهد (+). البته مایکروسافت چند شرط کوچک دیگر هم دارد از جمله این که شما از این محصولات فقط برای برنامه‌نویسی استفاده کنی و مثلاً برای راه اندازی یک شرکت web hosting از آنها استفاده نکنی. چرا مایکروسافت چنین تخفیف بزرگی می‌دهد؟ چون مایکروسافت معتقد است همین شرکت‌های کوچک بعداً به مشتریانی بزرگ برای او تبدیل خواهند شد (+). ظاهراً مایکروسافت این امکان را برای شرکت‌های عضو این طرح فراهم می‌کند که بتوانند به نوعی از بازار کار مایکروسافت کار بگیرند. نکته جالب ولی همیشگی در مورد این طرح این است که اسم کشور ایران در فهرست کشورها در صفحه ثبت نام وجود ندارد. به عکس زیر توجه کنید:


جهت کسب اطلاعات بیشتر به این لینک هم نگاهی بیندازید.

An open letter to oDesk from an Iranian software developer

Dear oDesk managers,

I’m an Iranian software developer living and working in Tehran/Iran. Recently I opened an account in oDesk and started to bid on oDesk projects as a contractor. But unfortunately oDesk has suspended my account just because I’m an Iranian.

I can’t realize why I can’t work in oDesk like many other people all around the world including Pakistan, Latin America, Egypt, Ukraine, India, etc? What is difference between them and us? I know about Iran Sanctions Act (ISA), but we, the people of Iran not the government, do not deserve it. In Iran, a very few software developers work directly for government or government organizations. While American and Iranian politicians hate each other, why we, the people of Iran must be sacrificed? Why we must pay for it?

Please watch software developers of Iran more carefully, we don’t program for nuclear weapons, mass destruction weapons or anything else dangerous for people of world. Main stream of software development in Iran is LOB applications deployed in boring offices manipulating personal data, banking data, accounting data and any none military data. Why you are think these poor and peaceful software developers are dangerous to other people?

I beg you think twice…

Best Regards,
A peaceful Iranian software developer,
Afshar Mohebbi

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

odesk سایتی است مشابه vworker که برای برون‌سپاری پروژه‌های نرم‌افزاری و غیره به برنامه‌نویسان Freelance سراسر دنیا استفاده می‌شود. عمده contractorهای این طور سایت‌ها از کشورهای ارزان قیمتی مثل هند، روسیه، شرق اروپا، آمریکای لاتین و کشورهای عربی مثل مصر هستند. دیروز پروفایلم را در odesk تکمیل کردم، البته آدرسم را در دوبی دادم و تنها یک شماره تلفن از ایران (با کد ۹۸) دادم. نمی‌دانم از روی کد کشور یا از روی IP به ایرانی بودن و در نتیجه مجرم بودن بی‌دلیلم پی برده‌اند و ایمیل زیر را برای من فرستاده‌اند:


دقت کنید که برای درست و حسابی کار کردن در odesk باید identity خودتان را verify کنید. برای verfiy کردن هم عملاً نیاز به passport و اینجور حرف‌ها می‌شود که…

‫راه ابتکاری برای تبدیل تاریخ میلادی به تاریخ شمسی در SQL Server

بعضی وقت‌ها چیزهایی می‌بینم که حیف می‌آید برای دوستانم تعریف نکنم. یکی از این چیزها دیتابیس و سیستمی بود که امروز با چشم‌های خودم دیدم.

در دیتابیس فوق‌الذکر برای تبدیل تاریخ میلادی به تاریخ شمسی از یک جدول ۵۱ هزار رکوردی استفاده شده بود. این جدول دو ستون داشت. یکی تاریخ میلادی و دیگری تاریخ شمسی. اولین رکورد با ۱۹۰۰٫۱٫۱ و تاریخ معادل شمسی آن شروع می‌شد. هر رکورد بعدی روز بعدی را نشان می‌داد. این روال تا روز میلادی ۲۰۴۱٫۳٫۱۹ و معادل شمسی آن ادامه داشت. حالا خودتان select مربوطه را حدس بزنید!