چهار ماه بعد از مهاجرت

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

اینکه چرا زودتر از ایران نرفتم بر میگرده به سربازی. چون سربازی وقت تلف کردن محض بود و من رو از کار و زندگی می‌انداخت، تصمیم گرفتم نرم به امید اینکه وقتی سنمون بره بالا یا میفرشون یا معاف میشیم (استدلالم این بود که چون متولدین ۱۳۶۴ جمعیتشون از همه بیشتره این اتفاق میفته). خوشبختانه این اتفاق سال ۹۴ افتاد و من هم سربازی رو خریدم. اولین شرکت خارجی که اپلای کردم همین شرکت کیک بود که توی کامیونیتی اسکالا شناخته شده است. بعد از چند جلسه مصاحبه و ارزیابی و تمرین که جالب و حرفه‌ای بود اوکی دادن و رفتنی شدیم.

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

جامعه

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

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

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

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

قانون

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

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

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

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

شفافیت

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

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

مذهب

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

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

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

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

کار و استقلال

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

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

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

مدیریت

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

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

چندتا از نکات مهمش ایناس:

  • اول کار همه چیز تعریف میشه و مشخصه. اینکه منظور ما از اینکه یه کار آماده انجامه چیه و دقیقا چه پارامترهایی داره یا دقیقا چه وقتی میتونیم بگیم که کار انجام شده و آماده ست. یا آماده ست یعنی چی؟ آماده چیه؟ آماده استفاده؟ آماده بارگذاری؟ آماده آزمایش توسط تیم QA و… جالب اینجاست که همه این تعاریف تو کمتر از یک ساعت با سرعت بالا انجام میشه!؟ برای من که خیلی سخت بود چون هم زبانم هنوز اونقدر که باید خوب نیست و هم عادت ندارم به این سرعت.
  • هر کلمه به طور کامل معنی مشخص داره و هیچ برداشت اشتباهی ازش نمیشه. مثلا Rabbit Hole Monitoring. وقتی این کلمه رو اول جلسه گفتن، نه هیچکس توضیحش داد نه هیچ کس پرسید یعنی چی؟ البته مثال‌های بهتری هم برای این موضوع هست. شاید این بر میگرده به این موضوع که کلا زبان فارسی زبان پر ایهامی هست و از هر کلمه یا جمله میشه چندتا برداشت کرد و همیشه باید برای جلوگیری از سوء تفاهم یا درک دقیق، موضوع رو با صحبت‌های اضافه توضیح داد.
  • تک تک افراد جلسه تو تمام بحث‌ها و نظرسنجی‌ها شرکت میکنن. اگر صلاحیت نظر دادن ندارن خیلی شفاف میگن من سر در نمیارم و رای ممتنع میدن.
  • کنترل زمان عالی انجام میشه. عالی! نه فقط اینکه سر ساعت شروع کنیم و سر ساعت جمع کنیم بریم خونه. برای تک تک موضوعات که از قبل هم مشخص شده، زمانبندی داریم. این زمانبندی‌ها قبل از اینکه جلسه رو شروع کنیم توسط مدیر جلسه انجام شده.
  • همیشه Agenda داریم. مشخصه میخواییم چیکار کنیم رو هر چیزی چقدر وقت بذاریم و دنبال چی هستیم.
  • هیچ کس از اینکه توسط مدیر پروژه متوقف بشه چون داره به بیراهه میره ناراحت نمیشه. کلا در عین حال که همه با هم دوستن و خیلی اوقات میگن و میخندن بلافاصله بر میگردن سر هدف اصلی.
  • در تمام طول جلسه یه سطحی از هوشیاری از اینکه چرا توی این جلسه نشستیم و داریم چیکار میکنیم وجود داره.
  • یادمه خیلی‌ از همکارام این رو در مورد من دوست داشتن که دست به داکیومنت نوشتنم خوبه و خیلی‌ها هم سر همین قضیه بهم میگفتن مثلا کارت درسته و سر همین موضوع به نظرمون نیروی خوبی هستی و از این حرفا. این حرفا همش چرنده! اینجاداکیومنت کردن کار خفنی نیست داکیومنت نکردن کار خوفناکیه! داکیومنت کردن با کیفیت بسیار بسیار بالا با تمام جزئیات و شفاف یکی از مهمترین اجزاء کار هست و همیشه یه نفر حرفه‌ای مسئولش هست. معمولا توسط خود مدیر پروژه‌ هم انجام میشه ولی دقت کنید که مدیر پروژه خودش به مسائل فنی اشراف داره.
  • مرز بین دانش فنی لازم برای درک پروژه و دانش فنی لازم برای پیاده سازی پروژه مشخصه. مثلا حتی اینکه از NoSQL استفاده کنیم یا RDBMS باید برای همه تو جلسه روشن باشه ولی اینکه مثلا درایور بانک اطلاعات Async‌ باشه یا Sync‌ فقط برای بچه‌های فنی مهمه.
  • در آخر جلسه هم همیشه جمع بندی و نتایج و … وجود داره. اگر به هر دلیلی وقت کم بیاد. از جمع بندی ها و نتیجه گیری‌ها و اینطور کارها زده نمیشه چون اینها یه درکی میده که کجای کار ایستادیم چقدر پیشرفت داشتیم و چقدر کار مونده.

جمع بندی

خیلی موارد دیگه هست که میشه در موردش صحبت کرد مثل:

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

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

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

  • قانون قوی
  • شفافیت
  • آزادی
  • حکومت غیر دینی

نکته مهم اینکه اینها یا همشون در کنار هم امکانپذیرن یا هیچ کدوم.

ویدئو‌های قسمت دوم کارگاه اسکالا در جشن ۱۰ سالگی لاگ

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

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

ویدئو اول

ویدئو دوم

ویدئو سوم

ویدئو چهارم

استخراج آمار تکنولوژی‌های برنامه‌نویسی از نظر سنجی جادی

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

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

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

و حالا این هم چندتا آمار باحال که با استفاده از این برنامه درست شده:

زبان‌های برنامه‌نویسی مورد استفاده شما در پروژه‌ها کدامند؟

iran_programming_languages_stat

به جز زبان‌های فعلی‌تان، دوست دارید با چه زبان برنامه ای نویسی کار کنید؟

iran_programming_languages_interested

دیتابیس‌های مورد استفاده؟

iranian_db

سیستم عامل رومیزی شما کدام است؟

iranian_os

سیستم عامل سرور مورد علاقه شما

iranian_os_server

در چه محیطی برنامه نویسی می‌کنید

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

ابزارهای استفاده شده برای تهیه این پست:

  1. Scala
  2. Git
  3. LibreOffice Calc
  4. Gimp

اندر باب سیستم توزیع بن کتاب نمایشگاه کتاب ۹۵

امسال هم مثل پارسال فروش بن دانشجویی از طریق سیستمی که با Scala و MongoDB پیاده کرده بودم انجام شد. البته کلی کار جدید و قسمت‌های دیگه مثل بن‌های اساتید و مهد کودک و … هم بهش اضافه شد و یکی از دوستام هم کمکم کرد و بالاخره طلسم تک نفری بودن پروژه شکسته شد. از همه اینها مهمتر نحوه پرداخت بود که برای اولین بار به جای درگاه پرداخت آنلاین یا همون IPG از طریق نرم‌افزار آپ انجام شد.

توی شبکه‌های اجتماعی و جاهای دیگه دیدم که خیلی از مردم ناراحت بودن و با اطمینان کامل از رد و بدل شدن پول کلان بین آسان پرداخت با مسئولان برگذاری نمایشگاه و همچنین قراردادهای بزرگ با تولید کننده‌های گوشی تلفن همراه مثل سامسونگ خبر می‌دادن! نمی‌دونم شاید پشت پرده خبری بوده که واقعا ما بی خبریم (هر چند احتمالش از احتمال ارسال آدم به مریخ توسط ایران تا ۲۴ ساعت آینده کمتره) ولی این اتفاقا منو یاد اون برنامه‌استعداد یابی که از یکی از شبکه‌های فاسد و خانمان بر انداز فارسی زبان بیگانه بخش شد (و می‌دونم که همتون قشنگ نشستید دیدینش یا حداقل قسمت‌های مهمش رو خبر دارید) و باعث شد مردم برای گرفتن حقشون! از هر راه ممکن برای اعتراض استفاده کنن تا شاید اتفاقات پشت پرده رو بشه و فلان و بهمان کرد…

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

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

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

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

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

پارسال بعضی از افراد که اطلاعات کامل دانشجویان یک دانشگاه رو به دست اورده بودن مثلا به جای ۵۰۰ نفر ثبت نام میگردن که هزینه‌ش یه چیزی حدود ۲۰ میلیون میشد. بعد دولت ۲۰ میلیون بن بهشون میداد که میشد ۴۰ میلیون، بعد اینها با یه ناشر میریختن رو هم و سند سازی میکردن که مثلا ۴۰ میلیون کتاب خریداری شده، اینطوری ۲۰ میلیون از بن کتاب دانشجویان توسط دزدان همیشه در صحنه خورده میشد. (البته این یکی از سناریو‌های دزدی بود بعدا فهمیدم که سناریو‌های دیگه‌ای هم هست که اصلا سیستمی نیست و فقط با مشارکت افراد دست اندر کار انجام میشه!)

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

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

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

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

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

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

و برای حسن ختام برنامه یه ماجرای آموزنده از همین بانک شهر میگم؛

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

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

کاش کمتر حرف پوچ میزدیم و بیشتر عمل میکردیم.

 

چه زمانی اسکالا مناسب نیست و چه زمانی مناسبه؟

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

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

قبل از هرچیزی باید بگم که اضافه شدن لامبدا به جاوا ۸ فقط یک قدم برای نزدیک‌تر کردن جاوا به اسکالا بوده و خیلی امکانات دیگه هست که فعلا توی جاوا پشتیبانی نمیشه و اگر با اسکالا کار کرده باشید، باز هم کار با زبون جاوا براتون سخته. امکاناتی مثل Type-safety واقعی، Immutability، Pattern Matching و … چیزهایی هستند که توی دنیای امروز تبدیل به یه نیاز حیاتی شدن. شاید یه مقداری از اینها رو بشه توی جاوا شبیه‌سازی کرد ولی کار اضافه‌تر میبره و از اون مهمتر هنوز توی فرهنگ زبون جاوا جا نیفتاده. در حالی که اینها جزو فرهنگ اسکالاست و برنامه‌نویس اسکالایی وجود نداره که اینها رو ندونه.

خوشبختانه دانشگاه‌های برتر دنیا مثل دانشگاه‌های ایران نیستند و واقعا علم کاربردی تولید میکنن. بحث کامپایلرها و زبان‌ها هم مستثنا نیست و پیشرفت‌های خیلی زیادی توی ۴۰ سال اخیر داشتند. این پیشرفت‌ها توی بعضی از زبون‌های برنامه‌نویسی مثل اسکالا و راست (Rust) نمود پیدا کرده و بعضی از زبون‌های جدید مثل گو تقریبا این ۴۰ سال رو نا دیده گرفتن، در عوض سازنده‌هاش بیشتر از هر چیزی روی مولد بودن و کارایی بیشتر برنامه‌نویس و راه افتادن سریع برنامه‌نویس‌های مبتدی تاکید کردن. به عبارت دیگه تمرکزشون روی غیر حرفه‌ای‌هاست که البته بیشتر جامعه رو تشکیل میدن.

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

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

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

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

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

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

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

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

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

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

اما از نظر حرفه‌ای اسکالا می‌تونه چه تاثیری توی زندگی شغلی یه برنامه‌نویس بذاره؟

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

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

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

خلاصه

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

دعوت به همکاری از برنامه‌نویسان حرفه‌ای اسکالا

ما توی شرکت مدرن پل (Modern Pal) به یک برنامه‌نویس حرفه‌ای اسکالا برای بخش Backend نیاز داریم.

درباره شرکت

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

درباره تیم Backend

خوشبختانه تقریبا در شروع راه هستیم و افراد جدید میتونن در تصیمات اساسی مشارکت داشته باشن و راحتتر توی تیم جا بیفتند. تیم Backend طوری مدیریت میشه که Junior ترین فرد گروه هم حق نظر دادن داره و شدیدا از ایده‌های خوب استقبال میکنیم. «فرهنگ» برای ما خیلی مهمه تا بتونیم تیم رو به همین شکل حفظ کنیم و بدون صرف انرژی بیهوده برای بحث‌های سلیقه‌ای، با مشارکت جمعی کار رو به سرعت جلو ببریم و رضایت همه رو کسب کنیم. از هم دیگه چیز یاد میگیریم و خوره تکنولوژی هستیم و به کیفیت کارمون خیلی اهمیت میدیم. خلاصه همین که داریم با اسکالا کار میکنیم خیلی چیزها رو نشون میده 😉

درباره تکنولوژی‌های مورد استفاده

از اونجایی که برای UI هم تیم‌های جداگانه‌ای وجود داره، تمرکز ما روی ‌Backend هست. تکنلوژی‌های مهمی که در حال حاضر ازشون استفاده میکنیم اینها هستند:

  • Linux
  • Scala
  • Play Framework
  • Slick
  • Specs2
  • ReactiveMongo
  • Postgres
  • MongoDB

در آینده نزدیک از این تکنولوژی‌ها هم به طور مستقیم استفاده خواهیم کرد:

  • Akka
  • Cassandra
  • Spark
  • و احتمالا خیلی چیزهای باحال دیگه

درضمن برای تمام قسمت‌های نرم‌افزار تست می‌نویسیم (کمتر Unit Test و بیشتر Functional Test) و Code Coverage بالای ۸۰٪ داریم.

لطفا در صورتی که شرایط و علاقه دارید رزومه خودتون رو به همراه اطلاعات زیر برای آدرس jobs@modernpal.com و a.karimi@modernpal.com ارسال کنید:

  • آدرس پروفایل Linkedin
  • آدرس پروفایل Github
  • در صورتی که Twitter یا وبلاگ یا هر ابزار انتشاراتی دیگه‌ای دارید که توش از مسائل فنی صحبت میکنید، اون رو هم ارسال کنید

یه استارت آپ، یه کتاب صوتی و درباره تبلیغ این کنار

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

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

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

و یه موضوع بی ربط: در مورد آگهی این کنار؛ می‌خوام امتحان کنم ببینم همچین وبلاگی میتونه هزینه ناچیز هاستینگ خودش رو از طریق یه تبلیغ ساده در بیاره یا نه!

بازنویسی اسکریپت‌های اون هکره به زبان اسکالا

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

یه ایده جالب این آدم این بوده که کلا هر کاری که بیشتر از ۹۰ ثانیه طول میکشیده رو تبدیل به اسکریپت میکرده.

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

نکات فنی این موضوع رو میتونید توی پست انگلیسیم بخونید.

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

کار کردن روی پروژه‌های متن باز به طور مستقیم درآمد یا سودی نداره ولی به طور غیر مستقیم پر از سود و درآمده.

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

این وب سایت امروز به من ایمیل زد و یه کار با زبان Go بهم پیشنهاد داد چون یک پروژه کوچیک به زبان Go توی مخازنم بود. وب سایت‌هایی مثل این دارن روز به روز بیشتر میشن. اون‌ها به صورت هوشمند و ماشینی کدهای ما رو توی مخزن‌های متن باز مثل Github چک میکنن و از این طریق متوجه میشن که ما توی چه زمینه‌ای مهارت داریم. واقعیت اینه که اگر این عملیات با درنظر گرفتن جزئیات و واقعا هوشمند انجام بشه یکی از بهترین راه‌ها (شاید بهترین راه) برای پیدا کردن توسعه‌دهنده هست.

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

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

مهاجرت به آرچ

arch_pixelهفته قبل یکی از دوستان و همکاران بیمار (Geek) اعلام کرد که می‌خواد رو لپ تاپ اپل خودش آرچ بریزه. از اونجایی که من هم کم بیمار نیستم یه دفعه زد به سرم که آرچ رو هم امتحان کنم و این نظر من در موردشه؛

نصب

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

کلی چیز جدید در مورد توزیع‌های لینوکس و این که چطور کار میکنن یاد گرفتم.

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

Pacman

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

به نظر من کل آرچ خلاصه شده توی Pacman که البته ارزشش رو هم داره.

محیط‌های دسکتاپ (Desktop)

من عادت دارم یه ابزار رو از حالت پیشنهاد شده‌ش خارج نکنم. واسه همین مثلا دسکتاپ دیگه‌ای به جز Unity روی Ubuntu راه ننداختم. از طرفی مثلا از OpenSuse خوشم نمیاد واسه همین خیلی وقت بود که KDE رو امتحان نکرده بودم. اما آرچ کلا هیچ نظری نداره و میگه هرچی دلت خواست نصب کن و واقعا نهایت کمک رو هم بهت میکنه.

واسه همین من از بین محیطهای دسکتاپ Gnome، KDE و Xfce رو نصب کرد تا ببینم کدوم بهتره.

Xfce

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

چون قبلا LXDE رو دیده بودم دیگه اون رو نصب نکردم، تقریبا تو مایه‌های Xfce هست فقط بازم سبکتره.

Gnome

نسخه ۳ گنوم به نظر اصلا جالب نیست. بدترین ویژگیش اینه که از فضا خیلی بد استفاده کرده در حالی که ادعا میکنه مناسب برای تبلت هست. یه نوار که ۸۰ درصدش بیخودیه اون بالا همیشه هست. وقتی یه برنامه رو Full-screen کنی یه نوار بیخود دیگه اضافه میشه که فقط اسم برنامه توشه، یه نوار دیگه برای منو هم هست. کل اینها شاید نزدیک ۲۰٪ صفحه رو میگیره که واقعا تو مخه. برعکس Unity که واقعا عالی از فضا استفاده میکرد.

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

KDE

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

اما اصلا Stable نبود. وقتی سیستم برای مثلا ۱۵ دقیقه بیکار میموند بعد از لاگین دوباره، هر چند ثانیه یکبار هنگ میکرد.

حالا نمی‌دونم کاملا اوکی شده یا نه ولی بعد از اینکه بسته xf86-video-ati رو حذف کردم فعلا انگار درست شده و مشکلی ندارم.

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

نتیجه

خلاصه که آرچ خیلی باحاله و نقطه منفی در مورد آرچ ندارم بگم. اما در مورد محیطهای دسکتاپ، به نظرم هنوز Unity بهترین استفاده رو از فضا داره میکنه و واقعا Stable هست. اما KDE Plasma واقعا عالیه. هنوز نمی‌تونم بگم Plasma 5 بهتره یا Unity ولی حداق جهت تنوع هم که شده Plasma 5 خیلی داره حال میده.

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

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