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

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

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

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

تا جایی که یادم میاد، درس و کلاس و مدرسه همیشه برای من کسل کننده بود، تنها درسی هم که برام جذابیت داشت، ریاضی بود، اون هم به خاطر چالشی که برام ایجاد می‌کرد. کلا دوست داشتم هر روز چیز های جدیدتری را تجربه کنم.

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

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

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

همون وقت‌ها بود که ای‌جکس هم که اون روزا ما بهش می‌گفتیم آژاکس ترند شده بود و همه سایت آژاکسی میخواستن. توی وبلاگ یکی از توسعه دهنده های خارجی مووبل‌تایپ با prototype.js آشنا شدم که یه جورایی پدر jQuery به حساب میاد. اون موقع‌ها با ترکیب مووبل‌تایپ و PHP و این prototype.js کارای عجیب غریبی می‌کردیم و یه جورایی استارت ورود من بود به اون چیزی که الان بهش می‌گن فرانت‌اند دولوپمنت.

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

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

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

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

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

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

بعد از دیپلم، یه مدت، باز هم به ضرب و زور خانواده در بازار و در فروشگاه پدرم به عنوان فروشنده مشغول به کار شدم، اما مدت زیادی دووم نیاوردم.

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

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

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

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

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

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

 

از چه سخت افزارهایی واسه کار و زندگی استفاده می کنی ؟‌

یک لپ‌تاپ ایسوس مدل N53SN دارم که چند سالی هست برای همه کارهام، از جمله بازی کردن، از اون استفاده می‌کنم. پارسال یه رم چهارگیگ به لپ‌تاپ اضافه کردم و مجموعا دوازده گیگ رم داره و الان راحت می‌تونم چندتا ایمولیتور را با هم ران کنم، توی برنامم هست که یه هارد SSD هم براش بگیرم.

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

milad02

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

یک تبلت سامسونگ Galaxy Note Pro دارم که یک سالی هست کار منو برای خوندن ای‌بوک و وب‌گردی و موارد روزمره راه می‌ندازه، از اونجا که لپ‌تاپ و تجهیزاتش وزن کمی نداره، معمولا این تبلت را با خودم این طرف اون طرف می‌برم.

یک گوشی iPhone 6 هم دارم که عموما برای تماس تلفنی و یا کار با مسنجر ها و عکس گرفتن از اون استفاده می‌کنم و بعضی وقت ها هم بازی کردن، اصولا این تنها دیوایسی هست که همیشه و همه جا دنبال من هست.

یک گوشی جی‌ال‌ایکس Luster 2 هم دارم، که سیم‌کارت‌های اضافه را توی اون میزارم و برای ران گرفتن روی اندروید ۲.۳ هم ازش استفاده می‌کنم.

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

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

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

milad03

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

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

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

در مواردی که نرم افزار مورد نظرم نسخه لینوکسی نداره، از VirtualBox یا VMWare استفاده می‌کنم، مثلا، الان XCode را روی OSX Yosemite و Unity Studio را روی Windows 8.1 در VMWare ران می‌کنم.

برای برنامه‌نویسی عموما از PhpStorm و Android Studio استفاده می‌کنم، و بسته به نیاز برای کد نویسی های مختصر تر یا مرور کدها از Geany یا Sublime استفاده می‌کنم.

برای زیرساخت توسعه وب معمولا از Apache و MySQL استفاده می‌کنم، گاهی هم پیش اومده که از Lighttpd و MongoDB استفاده کردم. هنوز فرصت نکردم از Nginx استفاده کنم، احتمالا با Go ازش استفاده بکنم.

از Genymotion به عنوان ایمولیتور برای برنامه نویسی استفاده می‌کنم، عملکرد بهتری از ایمولیتور خود اندروید داره.

این روزا کمتر از فریم ورک های فول استک مثل CakePHP و Zend  و Laravel استفاده می‌کنم و سعی می‌کنم ترکیب دلخواهم برای پروژه را با استفاده از composer پیاده کنم.

فریم ورکی که اینروز ها باهاش کار می‌کنم برای برنامه نویسی PHP میکرو فریم ورک Slim هست، که سرعت و پرفورمنس خوبی داره. گزینه بعدی Phalcon هست،‌ که عیبش اینه که روی هاست های اشتراکی نمیشه ازش استفاده کرد.

عموما از Google Chrome به عنوان مرورگر اصلی استفاده می‌کنم، بعضی وقتا هم برای دیباگ کردن کدهای فرانت‌اند از Firefox استفاده می‌کنم.

برای کارای گرافیکی از Gimp استفاده می‌کنم و در مواقعی که گزینه دیگه ای نیست، مثلا برای باز کردن و کار روی فایل های PSD از Photoshop روی همون Windows 8.1 روی VMware استفاده می‌کنم.

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

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

برای کار با ترمینال لینوکس Guake استفاده می‌کنم، ترمینال لینوکس هم که خودش مملو از نرم افزار ها و ابزار های مختلف هست، انقدر زیاد هستن که خودشون یه کتاب را پر می‌کنن و از حوصله این مطلب خارج هستش، خیلی از اون ها برای استفاده روز مره استفاده میشن مثلا از ssh برای اتصال به سرور ها و کار با اون‌ها تا aria2 که برای دانلود ازش استفاده می‌کنم یا ffmpeg که برای کار با فایل های مالتی مدیا ازش استفاده می‌کنم، همه این‌ها یک طرف ابزار هایی مثل git و gradle و grunt و غیره هم که برای توسعه و برنامه نویسی ازشون استفاده می‌کنم طرف دیگه.

Trello را برای مدیریت کارهام استفاده می‌کنم، از GitHUB و Bitbucket هم برای نگهداری سورس پروژه ها استفاده می‌کنم.

برای مدیریت ایمیل هام از سرویس Inbox گوگل استفاده می‌کنم، زمان‌بندیم را هم عموما از طریق Calendar گوگل انجام می‌دوم.

برای شنیدن آهنگ‌های خارجی از Spotify استفاده می‌کنم و ایرانی ها را از طریق اپ Radio Javan روی گوشیم گوش می‌کنم.

برای نوشتن مطلب و ساختن اسپریت‌شیت معمولا از Drive گوگل استفاده می‌کنم اما گزینه جایگزین لوکال برای اون LibreOffice هست که به صورت پیش‌فرض روی Ubuntu نصب هست.

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

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

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

چه کتابی رو دوست داری و آخرین کتابی که خوندی چی بود ؟

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

milad04

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

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

9 دیدگاه

Comments are closed.