احسان رضایی

یک توسعه دهنده، شاید هم نه.

دانشگاه یا موز!

(مطلب ثابت)

در ادامه مطلب " نقدی در مورد برخی اساتید "

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

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

ادامه...

تله ای به نام فورس شدن پروژه

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

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

تاکید میکنم فورس شدن پروزه اصلا بد نیست، فقط نباید زمانش بیش از حد طول بکشه :)

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

شاید صرفا مربوط به فضای برنامه نویسی نباشه، در کل به دنبال این بودم که یک صفحه ی روشن با نوشته های تیره برای چشم مفیدتر هست یا نوشته های روشن با صفحه ای تیره؟ در ابتدا فرض رو بر این میگیریم که نور به اندازه کافی در اتاق وجود داره. از دهه 1980 تا الان مطالعات زیادی در این مورد انجام شده و هنوز هم به پایان نرسیده! یکی از اونها که مربوط به همون دهه اول هست میگه مطالعات به ما نشان دادند که متون تیره در یک صفحه/پس زمینه روشن بهتر از حالت دوم یعنی نوشته های روشن با صفحه ی تیره است. به عنوان مثال اونها متوجه شدن که شرکت کننده ها در این آزمایش 26 درصد دقیقتر متون رو مطالعه میکنن اگر نوشته ها تیره و صفحه روشن باشه.

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

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

چرا از framework استفاده میکنم؟

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

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

کامنت فارسی! کاچی به از هیچی

اولین بار زمانی که داخل کدهام فارسی کامنت گذاشتم توبیخ شدم اما به کارم ادامه دادم، به مرور باقی همکارانم همین کارُ انجام دادن. حالا داخل سورس هامون کمتر متدی پیدا میشه که توضیحات نداشته باشه. معمولا زمانی که توانایی لازم برای خواندن و نوشتن زبان انگلیسی رو نداشته باشیم نوشتن توضیحات برامون سخت و غیر قابل تحمل میشه. این کار شاید غیر استاندارد باشه اما چند خط کامنت فارسی یا حتی ناقص از نبودنش بهتره. میگم غیر استاندارده چون اکثر Editor و IDE ها به دلیل عدم پشتیبانی کامل از فارسی باعث میشن نوشته ها رو به طور غیر نرمال مثلا برعکس ببینیم! وگرنه سورس های زیادی رو دیدم که داخلشون به زبان های مختلفی کامنت گذاشته شده بود(روسی، چینی و...). نتیجه گیری از عنوان پیداست، توصیه میشه مهارت خواندن و نوشتن زبان انگلیسیتون رو تقویت کنید :)

‏احساس تعلق خاطر به محل کار

روز اولی که اومدم شرکت داشتن نیرو جذب می‌کردن. بعد از مدتی دیدم خیلی هوام‌ُ دارن و همه جور امکاناتی برام فراهم می‌کنن. می‌گفتم اینا چقدر دلسوز کارمنداشون هستن. تا اینکه موضوع تعدیل نیرو داغ شد و عده‌ای رو اخراج کردن.

‏اما خوشبختانه من موندم. رئیس شرکت می‌گفت متاسفیم اما مجبوریم. اون موقع من فهمیدم چقدر کودکانه فکر می‌کردم. همیشه موضوع منفعت هست. تاسف اون هیچ ارزشی برای کسایی که اخراج شدن نداشت. اون از روز اول هم برای کسی دلسوزی نمی‌کرد. برای اون چیزی که مهمه بازدهی بیشتر نیروهاش بود و هست.

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

ادامه...

داستان اول شخص بودن یک توسعه دهنده

یه دوستی میگفت در همین لحظه که داری به موضوعی فکر میکنی به طور میانگین حدود 16 نفر دیگه هم مثل تو دارن هم زمان به این موضوع فکر میکنن!

به نظرم توی برنامه نویسی اول شخص بودن یعنی ادعا. اینکه بگیم اولین نفری بودیم که این کارُ انجام دادیم یا مثلا تنها کسی بودم که انجامش دادم و...

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

7 تصور غلط کارفرما در مورد پروژه های نرم افزاری

از اولین باری که برنامه نویسی رو تجربه کردم تا الان با افراد مختلفی همکاری داشتم، کارفرمایان ریز و درشتی که اغلب به هدفشون نرسیدن! بیشتر از اینکه ابزار ها و تکنولوژی های مورد استفاده توسعه دهنده رو بررسی کنید باید به دنبال کسی بگردین تا کارُ با موفقیت انجام بده. اما چرا خیلی از پروژه هایی که میبینم شکست میخوره؟ مقصر همیشه توسعه دهنده نیست. گاهی تصورات اشتباه کارفرما باعث میشه یک پروژه نرم افزاری هیچ وقت به پایان نرسه. مثلا:

1) پروژه دقیقا بر اساس زمان بندی که توسعه دهنده داده تموم میشه.

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

ادامه...

نقدی در مورد برخی اساتید

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

دونستن مباحث پایه خوبه اما حدی داره.

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

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

مشکل اینجاست که تدریس به شغل بعضی ها تبدیل شده! استاد باید از دل بازار کار بیرون کشیده بشه و تدریس حرفه ی اون باشه نه شغلش.

و در انتها، با توجه به این موارد، گاهی ایمان میارم به این جمله:

 اونی که کارُ بلده انجامش میده و اونی که بلد نیست تدریسش میکنه...