پارسال همین موقعها بود که یک نسخه تمیز از اوبونتو روی لپ تاپم نصب کردم. تفاوت این دفعه این بود که روی پارتیشن اصلی نصبش کردم و قرار بود سیستم عامل اصلی و روزانهام باشد. این نوشته، خلاصهای از تجریبات یک سال گذشتهام در پی این مهاجرت است، به مناسبت سالگرد این مهاجرت!
از سال ۱۳۸۲ به طور حرفهای (برای پول درآوردن) برنامهنویسی میکنم و بیشتر آن روی تکنولوژیهای مایکروسافت بوده. اگر نگویم تمام ابزارها، بیشتر ابزارهایی که در این چند سال استفاده کردم محصول مایکروسافت بود؛
- ویندوز به عنوان سیستم عامل
- آفیس برای کارهای اداری
- Outlook برای ایمیل و تقویم و …
- Internet Explorer به عنوان مرورگر!
- استفاده بیشتر از Bing نسبت به Google برای جستجو!
- گوشی هوشمند با سیستم عامل ویندوز فون ۷ (Mozart 7)
- صفحه کلید (ارگونومیک) و ماوس مایکروسافت!!!
- استفاده از نرمافزارهای متن باز دات نتی (حتی برای وبلاگ به جای ورد پرس)
- Visual Studio برای تولید نرمافزار (از طراحی تا پیادهسازی)
- SQL Server برای بانک اطلاعاتی
- زبان سی شارپ و سکوی دات نت
- و …
هر کاری که میخواستم انجام بدهم حس بهتری داشتم که با محصولات مایکروسافت باشد. چون مایکروسافت به توسعه دهندهها اهمیت میداد و زبان سی شارپ هم کار آنهاست و در کل جایگزینی خوبی برای سی شارپ نداشتم! از آنجایی که من برنامه نویس هستم بیشتر عمرم را مشغول صحبت کردن با یک زبان برنامهنویسی هستم پس اهمیت این موضوع که با چه زبانی کار کنم و اینکه این زبان چه امکاناتی داشته باشد روشن است.
با این حال همیشه نیم نگاهی به لینوکس داشتم و یک حس عجیب و دوست داشتنی به سیستمعاملهای متن باز (مخصوصا لینوکس). اما بخاطر زبان سی شارپ و حواشیاش نمیتوانستم از لینوکس استفاده کنم و همیشه در حد سیستم عامل دوم تفننی بر روی یک پارتیشن کوچک در اعماق دیسک سختم باقی میماند.
اما مایکروسافت یک مشکل بزرگ دارد. برای هر کاری شما را به محصولات خودش هدایت میکند و شما باید پول نرمافزارهایش را بپردازید و همچنین حق ندارید تغییری در محصولاتش ایجاد کنید. من با پرداخت پول برای نرمافزار مشکلی ندارم (اگر قیمتش منطقی باشد)! و معمولا هم نمیخواهم تغییری در یک نرمافزار ایجاد کنم ولی باز هم با این موضوع مشکل داشتم. این حس به من دست میداد که داخل یک مجتمع مسکونی زیبا گرفتار شدم. مجتمعی که یک شرکت بزرگ آن را ساخته و عالی هم کار کرده ولی افراد داخل آن در ساخت و تغییر و بهبود آن سهم خیلی خیلی کمی دارند. در صورت نیاز به هر تغییر و یا ساخت و سازی باید با شرکت بزرگ هماهنگ کنند و یا از او بخواهند کاری برایشان انجام دهد. از طرفی اگر بخواهید از این مجتمع خارج شوید بسیاری از امکاناتی که داخل آن است را نخواهید داشت (یا حداقل به سادگی در خارج از آن رویت نمیشود).
برای یک پروژه شخصی در حال بررسی سرور و از این قبیل بودم که متوجه شدم خرج زیادی دارد. خواستم از SQL Server استفاده نکنم ولی هرچه گشتم هیچ جایگزین رایگان درست و حسابی برای آن وجود ندارد، اگر هست با بقیه ابزارهای مایکروسافت (مثل EF) جور در نمیآید. متوجه شدم این مورد فقط در خصوص SQL نیست و بقیه ابزارها هم همینطور است (همان قضیه مجتمع مسکونی). برای یک برنامه نویس گیر کردن در چنین وضعی مثل این است که یک عقرب را در دیواری از آتش محصور کنی!
خوشبختانه با اسکالا آشنا شدم. تنها زبان برنامهنویسی بود که تمام ویژگیهای سی شارپ را داشت ولی متن باز بود و روی همه پلتفرمها اجرا میشد و با انواع بانکهای اطلاعاتی و کتابخانهها سازگار بود. اسکالا راه ورود من به دنیای متن باز و لینوکس شد!
ولی افتاد مشکلها! حالا باید از صفر تا صد همه کارها را در دنیایی متفاوت انجام میدادم. من هم ابزارهای زیر را برای کارهایم انتخاب کردم:
- اوبونتو به عنوان سیستم عامل
- لیبره آفیس به جای آفیس مایکروسافت
- Thunderbird (و پلاگینهایش) به جای Outlook
- ابتدا Chromium و بعدها (به خاطر مشکلی امنیتی) Firefox به جای IE
- استفاده بیشتر از محصولات گوگل
- گوشی ویندوز فون ۷ را هنوز داشتم (و دارم ولی دلم یک گوشی اندرویدی میخواهد که بتوانم رویش Firefox OS یا Ubuntu Touch نصب کنم) ولی یک تبلت اندرویدی گرفتم و تازه دنیای اپها به رویم باز شد
- صفحه کلید فراسو و ماوس A4tech!!!
- استفاده از ورد پرس و پرستا شاپ و نرمافزارهای غیر دات نتی (که تعدادشان خیلی بیشتر از دات نتیها بود)
- Scala IDE (همان Eclipse) و IntelliJ IDEA و بقیه برای توسعه نرمافزار
- MongoDB، Postgres و MySQL برای بانک اطلاعاتی
- زبان اسکالا و بعدا روبی و پایتون (در کنار اسکالا) برای برنامهنویسی (هنوز اسکالا را به شدت نسبت به بقیه ترجیح میدهم)
- و …
و مشکلاتی که داشتم؛
- هنوز یک پروژه بر روی دات نت داشتم و با استفاده از Virtual Box یک نسخه ویندوز ۷ با VS روی آن بالا میآوردم و با بدبختی روی آن کار میکردم؛ بسیار کند بود و وقتی دکمه Alt را میگرفتم منوی Unity باز میشد و وسط نوشتن یک کد حساس یک حال اساسی به اعصابم میداد.
- دلم میخواست روی پروژهای با زبان اسکالا کار کنم ولی کسی حتی اسمش را هم نشنیده بود!
- من عادت کرده بودم زبان صحفه کلید را با دست راست و با Alt+Shift سمت راست تغییر دهم ولی به دلیل وجود باگی در Ubuntu آن زمان فقط امکان استفاده از Alt+Shift سمت چپ وجود داشت و من هم هنوز بلد نبودم سیستم را هک کنم (منظور فقط کمی ور رفتن با سیستم است) و هر کلیدی که دوست دارم انتخاب کنم و تصورش را هم نمیکردم این باگ به سرعت رفع شود برای همین به ترکیب سمت چپ عادت کردم و هنوز هم از کلیدهای سمت چپ استفاده میکنم!
- کارت گرافیکم به سختی نصب میشد و فن لپ تاپ همیشه روشن بود، نصفی از مشکل بخاطر درایور کارت گرافیک بود و نصف برای تنظیمات و درایور مخصوص DELL
- از نظر مالی شدیدا به مشکل خورده بودم، پول لازم بودم و پروژهای هم در کار نبود و شرایط به شدت برایم سخت شده بود در حالی که با مشکلات بالا هم سر و کله میزدم و همزمان اسکالا هم یاد میگرفتم
البته توانستم کم کم مشکلات را حل کنم:
- سعی کردم واقع بین باشم و وقت بیشتری بر روی پروژه دات نتی صرف کنم (اما نه انقدر واقع بین که لینوکس را پاک کنم و برگردم روی ویندوز مثل آدم کار کنم) پروژه به جای خوبی رسید و تقریبا تحویل شد. هر چند چون پروژه دولتی بود و افراد سازمان عوض شدند پروژه اجرایی نشد.
- با ور رفتن و مطالعه، هر کاری که میخواستم را در Ubuntu انجام میدادم، کارت گرافیک و بقیه مسائل حل شد. برای اکثر کارهای تکراری هم یک Bash Script تهیه میکردم. به این ترتیب سرعت کارهایم بیشتر از زمان ویندوز شده بود و روز به روز احساس راحتی بیشتری میکردم.
- من در دورههای شناخت تواناییهای امیر مهرانی شرکت کرده بودم و یکی از چیزهایی که یاد گرفته بودم این بود که باید روی نقاط قوتم تمرکز کنم تا سریعتر به نتیجه برسم. یکی از راههای فهمیدن نقاط قوت نگاه به گذشته و بررسی موقعیتهایی است که در آن موفق بودیم. من هم همین کار را کردم و به چند سال قبل دقت کردم و همان کارها را تکرار کردم. رزومهام را تکمیل و با ظاهری جدید بازسازی کردم و شروع به معرفی خودم به اشخاص و شرکتهای مختلف کردم. بعد از ارسال تقریبا ۲۰ ایمیل، چند موقعیت خیلی خوب پیش آمد. با آدمهای بسیار حرفهای و جالبی آشنا شدم. کیفیت کارها و سطح آدمها بسیار بالاتر از زمانی بود که روی پلتفرم مایکروسافت کار میکردم.
در این یک سال به جز استفاده از ویندوز در یک زمان محدود آن هم در Virtual Box با سرعت بسیار پایین، از هیچ نرمافزار غیر قانونی استفاده نکردم؛ چه برای توسعه و چه برای نصب و راه اندازی. و از این بابت به شدت خوشحال هستم.
به نظرم هر وقت یک گیک (از نوع برنامهنویس) احساس محدودیت کرد باید سریعا دست به ایجاد تغییر و تحول بزند تا دوباره احساس آزادی کند و گرنه خلاقیت و سر زندگی او کمرنگ میشود.
یک سال است که وقتی کامپیوترم را روشن میکنم صفحه بوت شدن اوبونتو را میبینم (چند وقت هم بوت شدن Mint و بقیه را دیدم) و هر روز از دیدنشان لذت میبرم (هر وقت خسته شوم میتوانم با کمترین دردسر به یک توزیع باحال دیگر مهاجرت کنم). با دیدن این صفحات بوت به این فکر میکنم که تمام این نرمافزارها و ابزارها حاصل تلاش میلیونها نفر است که بخاطر عقایدشان و علاقهای که به آزادی داشتند از هیچ، به اینجا رسیدند و توانستند حریف بزرگترین غولهای دنیا شوند. از طرفی اینکه چیزهایی مثل Raspberry Pi و Android و خیلی چیزهای دیگر که با نرمافزارهای آزاد و لینوکس کار میکنند و در کل دنیا معروف شدند. اینکه چندتا سیستم خیلی قدیمی را با استفاده از مدرنترین توزیعهای لینوکس دوباره راه اندازی کردم که بسیار عالی کار می کنند و یک حس نوستالژیک دارند. اینکه اکثر وب سایتها و سرویسهای بزرگ دنیا بر روی لینوکس و نرمافزار آزاد بنا شدهاند. همه اینها حس بسیار خوبی به من میدهد و کمک میکند با انرژی بیشتری کار کنم و چیزهای بهتری تولید کنم.
البته این فقط بخش توصیف شدنی ماجراست و فقط برای گیکها معنی دارد! خلاصه اینکه در زندگی گیکی هیچ وقت تا این حد راضی نبودم و امیدوارم این تجربه برای همه اتفاق بیفتد.