کوچک نوشتهای من

از این به بعد سعی دارم نوشته های تک جمله ایی و یا نوشته هایی که قراره بعضاً هفته ها و یا ماه ها طول بکشه تا تبدیل به یک یا چند صفحه بشه رو اول بصورت کوچک نوشت منتشر کنم.

راستش دیگه نمیخوام جملاتی رو که بنا به تجربه کسب میکنم رو معطل بذارم!

میتونید تگ #کوچک_نوشت رو دنبال کنید.

رزومه های سفید و کارهای برباد رفته!

Student Job Search - Volunteer jobs - work experienceمدتی میشه که به بازار کار ایران برگشتم و در عین حالی که این بازار رو از بسیاری جهات بکر و دست نخورده دیدم از بعد دیگری هم این بازار رو بازاری ضربه خورده از حیث کمبود نیروی کار متخصص یافتم.

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

اینجا قصد ندارم در مورد کارفرما چیزی بنویسم، بیشتر قصدم نقد خود نیروهای جوانی هست که بدون هیچ تجربه ایی به بازار کار روانه میشوند، چرا که به شدت معتقدم که  “از ماست که بر ماست”.

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

شخصی در خواب دید که با خداوند مناجات می کند: “خداوندا! دوست دارم بدانم بهشت و جهنم چه شکلی هستند؟”

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

شخص با دیدن این صحنه ها غمگین شد.خداوند فرمود: این از جهنم، برویم بهشت را نشانت دهم.

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

 

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

جاهایی که میرم و یا چندجایی که مشغول هستم مشکل نیروی انسانی یکی از مسائلی هست که شرکتها هر روز با اون دست به گریبانند، یکی از نبود نیروی مجرب در زمینه ORM و OOP میناله اون یکی از نبود نیروی انسانی در توسعه نرم افزار تحت ویندوز موبایلش!

وقتی خود شما  به عنوان یک نیروی تازه نفس حاضر نیستی حتی یک ساعت مجانی به کسی کمک کنی یا در بدترین حالت به کسی “کولی” بدی نباید  انتظار پهن شدن فرش قرمز زیر پاهای مبارک رو داشته باشی!

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

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

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

چه دلیلی داره بعد از ۲۳ سال زندگی تازه جذب بازار کار بشید؟ یعنی واقعاً حتی بقال محله تون هم به فکرش نرسیده که بخواد یه سیستم حسابداری ساده روی کامپیوترش حتی اگه شده با اکسس یا اکسل داشته باشه؟

به نظر من، بیشترین جفایی که در حق نیروی کار حرفه ایی تازه نفس داره میشه از طرف خودش به خودش هست و هیچکس این وسط مقصر نیست جز حس تنبلی و رخوّت بی حد و اندازه ایی که تو خیلی از ماها بوجود اومده و تنها راه حل مقابله با این مسئله کار کردن هست.

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

۱- حس تعهد به کار

۲- شجاعت

۳- روحیه تحقیق و یادگیری

چطور با VLC فیلمهای سه بعدی را دو بعدی ببینیم

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

لوازم مورد نیاز:

۱-VLC

۲-یک عدد فیلم سه بعدی!!!

نرم افزار VLC رو احتمالاً میشناسید اگر هم نمیشناسید میتونید از اینجا دانلود کنید(اپن سورسه و مجانی)، این نرم افزار بقول یکی از دوستان بغیر از پوست خربزه همه چی پخش میکنه، در واقع این نرم افزار یک نرم افزار پخش فایلهای ویدوئی و صوتی با فرمتهای مختلف هست.vlcsnap-2013-08-27-01h51m41s163تصویر بالا یک فیلم سه بعدی هست که بنده بطور اشتباهی اون رو دانلود کردم.

برای اینکه بتونید فیلم سه بعدی رو به یک فیلم معمولی که قابل دیدن در همه نوع نمایشگری باشه تبدیل کنید اولین کاری که باید بکنید crop کردن تصویر فیلم از وسط هست، معمولاً فیلمهای سه بعدی با کیفیت full-HD دارای دو تصویر ۹۶۰ پیکسلی هستند یا بعبارتی طول ۱۹۲۰ پیکسلی صفحه به دو قسمت مساوی ۹۶۰ پیکسلی تقسیم شده.

برای اینکار میتونید از منوی tools گزینه effects and filters را انتخاب کنید تا صفحه ایی مانند صفحه زیر باز شود

منوی تنظیمات vlc

منوی تنظیمات vlc

طبق شکل بالا منوی مربوطه را انتخاب کنید سپس در صورتی که فیلم شما با کیفیت ۱۹۲۰در۱۰۸۰ هست مقدار ۹۶۰ را در باکس سمت راست با کادر قرمز رنگ مشخص شده است وارد کنید، اگر کیفیت فیلم شما پایین تر از عدد ذکر شده است، مقدار طول فیلم را پیدا کرده و تقسیم بر ۲ کنید.

در قدم بعد شما فقط با یک تصویر روبرو خواهید بود، منتها با یک اشکال دیگر مواجه خواهید بود و آن اینکه فیلم در حال حاضر فقط در وسط صفحه بصورت یک باکس با نوار مشکی کاملاً ضخیمی در حال اجرا شدن است، برای درست کردن مقدار aspect ratio آن باید به منوی tools رفته و گزینه preferences را انتخاب کنید و سپس مانند شکل زیر مقدار ۳۲:۹ را در باکس force aspect ratio وارد کنیدvlc2و بعد از آن طبق شکل زیر عمل نمایید.

vlc3

حالا با خیال راحت صفحه را full screen کرده و از تماشای فیلم لذت ببرید.

توصیه های بهداشتی برای برنامه نویس شدن

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

برای همین مسئله تصمیم گرفتم چندین نکته که بصورت تجربی در زمینه برنامه نویس شدن رو یاد گرفتم اینجا ذکر کنم بلکه به درد دوستان هم بخوره:

۱- استراحت نکنید

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

۲-به هیچ شرکتی اعتماد نکنید

قبل از اینکه بخوام این نکته رو بسط بدم یک سوال میپرسم، ما برای چی برنامه مینویسیم؟

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

۳-کار گروهی یاد بگیرید

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

۴-دید جهانی داشته باشید

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

۵-به روز باشید

این نکته تلفیقی هست از نکات ۱ و ۴ اما در اینجا بیشتر منظورم یادگیری تکنولوژیهای به روز دنیا هست مثل یادگیری زبان برنامه نویسی جدید و یا یادگیری یک فریمورک جدید کار با سیستمهای جدید، مثلاً لطف کرده هر ده سال یکبار یک نسخه از اوبنتو و یا لینوکس مینت رو نصب کنید تا متوجه بشید همه دنیا ویندوز نیست!

۶-روشهای برنامه نویسیتون رو بهتر کنید

صرف اینکه از ۲۰ سال پیش تا به امروز میتونستید با یک حلقه for ساده در همه کلکسیونها و اشیا چرخ بزنید به این معنی نیست که نباید foreach رو یاد بگیرید!

۷-متعهد و با اخلاق باشید

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

۸-یادبگیرید تشکر کنید

این نکته هم برای تازه کارها مفیده و هم برای اونایی که فکر میکنند مادرزاد برنامه نویس بودن! یه مثلی هست که میگه “همه چیز رو همگان دانند”، پس اگر چیزی از همکار بقل دستیت و یا رفیقت یادگرفتی حتماً تشکر کن چون با اینکارت اون رو راقب میکنی بیشتر بهت یادبده و صمیمیت رو بینتون بالا میبره.

۹-اگر حقوقت کافی نیست یا محل کارت رو عوض کن یا تخصصت رو ببر بالا

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

 ۱۰-رزومه خوب داشته باشید

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

امیدوارم این چندتا توصیه بهداشتی بتونه کمکی باشه برای دوستانی که نمیدونن چطوری میشه از صنعت نرم افزار بطور مستقیم کسب درآمد داشت.

محیط شاد شبکه های اجتماعی و بیکاران فعال در دنیای آی تی با مدارک مرتبط و معتبر در این زمینه!

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

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

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

کمی جدی

دوستان بیکار عزیز من، یا دوستانی که بعضاً به حقوق های نزدیک به ۱۰۰۰ یا بلکه بیشتر دلار در ماه فکر میکنید!، هیچکس نمیتونه در راه رسیدن به پول به شما یاری برسونه مگر اینکه خودتون بخواین- کمی از تجربه خودم در دنیا نشینی براتون میگم بلکه باورتون بشه هر فرصتی رو باید مغتنم شمرد.

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

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

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

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

 

هنر تنبلی یا چطور یاد بگیریم اول کار رو انجام بدیم!

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

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

اما تو همه این رفت و آمدها و تعامل با انسانهای متفاوت تجربه خیلی متفاوتی رو همین هفته گذشته شاهد بودم، تو دوره فشرده آموزشی که برای یک شرکت تولید نرم افزار داشتم، شاهد این بودم که پروژه های متوسط رو به بزرگی را با رویکرد بزن در رو به جلو سوق داده بودن و بدون اینکه فکر کنن میتونن یک شالوده(framework) مشترک بین چند ده پروژه خودشون داشته باشن و دقیقاً از کانسپتهایی استفاده میکنند که Robert C. Martin در کتاب Clean Code خودش بعضاً اونها رو به توسعه گرها توصیه میکنه مثل استفاده از امکانات IDE (به دلیل رعایت اخلاق حرفه ایی قصد شرح تکنیکهاشون رو ندارم).

جالبه همین شرکت با همین نگاه پیش پا افتاده به مهندسی نرم افزار یا بهتره بگیم تولید نرم افزار موفق به جذب بالای هزار مشتری برای خودش در طول زمانی کمتر از ۵ سال شده و این دقیقاً اون چیزیه که Jeff Atwood هم به اون اشاره داره، یعنی هنر انجام یک کار و این یعنی اثبات حرف Robert Martin در عمل یعنی استفاده از ابزار موجود برای پیشبرد کار.

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

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

نتیجه اخلاقی

با توجه به تعداد شرکتهایی که از نرم افزار شرکت مذکور در حال استفاده هستند به جدّ میتونم به این نتیجه برسم که OOP یا FP فاکتورهای مناسبی برای استاندارد کد زدن نیستن، اگر به فاکتور رضایت مشتری توجه بیشتری بکنیم شاید به این نتیجه برسیم که مشتری راضی به اسپاگتی کدی هست که کار کنه و نه کلاسهای پیچیده ایی که هر روز یک باگ جدید در اونها کشف بشه!

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

سوالات بی جواب

آیا میتوان آینده ایی ورای OOP ،FP و یا MDA برای صنعت نرم افزار متصور بود که در اون مسائل حول محور دامنه بیزنس حل بشوند و نه حول محور مهندسی نرم افزار؟(DDD هم براساس OOP هست آیا رویکرد جدیدتری وجود داره؟)

آیا ۴GL مبحثی نبود که صنعت نرم افزار میبایست طی میکرد و آنرا به حد اعلای خود میرساند؟

آبا فریم ورکهایی مانند RoR مسکنهای موضعی برای درد مشتری مداری هستند؟ و وقت آنها هم به سر خواهد آمد؟

————————– آپدیت————————–

آفتاب آمد دلیل آفتاب، همین الان مصاحبه STLPORT با A. Stepanov مخترع STL رو خوندم که اتفاقاً ایشون با اینکه خودش STL رو برروی C plus plus پیاده کرده خودش مخالف OOP هست و از نظر درستی اون رو رد کرده.

http://www.stlport.org/resources/StepanovUSA.html

فرق شرکت مهندسی نرم افزار با سبزی فروشی و یا چطور یاد بگیریم سفارش نرم افزار بدهیم (سخنی دوستانه با مشتریان حوزه نرم افزار ایران)

چند روز پیش بود که تلفنم زنگ خورد،

من : الو

شخص نامعلوم : سلام، شما برنامه اندروید مینویسید؟

من : بله، بفرمایید

ش.ن : به من گفتن که شما کارت خوبه برای همین به شما زنگ زدم.

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

ش.م : یه نرم افزار برای وب سایت شارژ … چقدر درمیاد؟

من : در وحله اول به این شکل دراومدم ۰٫o انگاری با آجر زده باشن توی سرم و برق سه فاز از کله م پریده بود بعد از چند ثانیه مکث به خودم اومدم پرسیدم، خب این نرم افزار چه ویژگیهایی میخواهید داشته باشه؟

ش.ن : خب مثل همه نرم افزارهای دیگه باشه که کار میکنن.

من : یعنی شما هیچ مشخصاتی یا تعریفی تو ذهنتون نیست؟

ش.ن : چرا ما مشخصات کامل رو داریم.

من : راستی شما جناب آقای؟

ش.ن : یک آقایی شما رو به من معرفی کرده.

من : خب اون آقا کیه؟

ش.ن : شماره تلفنش هست …..

من : خب اسم شریف خودتون چی بود؟

ش.ن : من “رحیم خالقی” هستم!(اسم این نبودش ولی …)

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

و پایان مکالمه!

 

کد زدن برای غذا

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

اما صنعت نرم افزار در کل جهان کلاً کمتر از ۵۰ ساله که پا گرفته تو کشورمون خیلی خوشبینانه میتوان گفت که ۲۰ سال هست که به این صورت امروزی در اومده پس به ما خادمان خودتون این فرصت رو بدین تا بفهمیم شما دقیقاً چه چیزی مد نظر دارید.

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

برای اینکه یک کارگردان بتونه برروی ساخت یک اثر هنری کار کنه نیاز به یک دستمایه(زیاد بحث رو فنی نمیکنیم) داره، دستمایه دقیقاً همون چیزی هست که بعنوان مشخصات کلی تهیه کننده باید تهیه بکنه و بده دست کارگردان!

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

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

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

کلام آخر

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

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

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

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

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

فرهنگ به اشتراک نگذاشتن و سوالاتی بی جواب

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

من از اواسط دهه هفتاد شمسی بطور آماتور وارد دنیای نرم افزار شدم و تا اوایل دهه هشتاد تو همون جایگاه آماتوری خودم بودم، یادم میاد تو همون دوران با پروژه های کوچکی هم که انجام میدادم و اگر مشکلی پیدا میشد هیچ جمع فارسی برای حل کردن مشکلاتم پیدا نمیکردم و مجبور میشدم به فرومهایی مثل vbcode، vbchat و یا expertexchange مراجعه کنم و البته با زبان شکسته و بسته اون زمانم خیلی هم پیشرفت نمیکردم، این بود که در حین دوران دبیرستان و بعد هم توی سربازی زبانم رو به شدت جدی گرفتم تا جایگاه خودم رو از یک برنامه نویس آماتور تغییر بدم، همین وضع رو توی دنیای حرفه ایی های ایرون هم بعد از اون همه سال بازهم  میتونم احساس کنم برای مثال با نگاهی به نحوه توسعه نرم افزار در زمینه هایی مثل حسابداری یا زمینه هایی مثل صنایع زیرساخت کشور میتوان به شرکتهایی رسید که از شالوده خوبی برای محیط توسعه خودشون استفاده میکنند، برای مثال دغدغه داشتن یک فریمورک رو دارند و …

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

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

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

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

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

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

به نظرتون همین افراد آیا نمیتونستن پروژه های خودشون رو از همه مخفی کنند و اونها رو پشت درهای بسته یک شرکت نگه دارند؟

چه عاملی باعث میشه این افراد و این کمپانیها به این تفکر روی بیاورند؟

و چه عاملی باعث میشه که کمتر از خیلی جاهای دنیا از تفکر کدباز و فرهنگ به اشتراک گذاری استقبال کنیم؟ آیا فقط تنبلی میتونه جواب مسئله ما باشه؟ اونوقت عقب موندگی در فرهنگ آی تی رو با چی باید جبران کرد؟

پ.ن * : فریم ورک روبی آن ریلز اولین پروژه ایی بود که از ساپورت مستقیم MVC در برنامه های تحت وب پشتیبانی کرد و همچنین اولین فریم ورکی بود که تمام تمرینهای خوب مهندسی نرم افزار رو در خود پیاده کرد و همچنان اینکار را انجام میدهد.

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