عباس موسوی
عباس موسوی
خواندن ۲۲ دقیقه·۷ سال پیش

برنامه‌نویس بودن بعد از چهل سالگی

این متن ترجمه‌ایست از Being A Developer After 40، متن سخنرانی Adrian Kosmaczewski در کنفرانس App Builders Switzerland در ۲۵ آوریل ۲۰۱۶. اسلایدهای سخنرانی اینجا و ویدیوی سخنرانی این‌جاست.

سلام به همه. من یک توسعه دهنده خودآموخته ۴۲ ساله هستم و این داستان من است. دوهفته پیش تصادفا این توییت را دیدم که باعث شد به مسیر شغلی‌ام فکر کنم و این فکرها من را به جایی برگرداند که همه چیز از آن‌جا شروع شد.

مسیر شغلی‌ام را به عنوان یک توسعه‌دهنده درست ساعت ۱۰ صبح دوشنبه ۶ اکتبر ۱۹۹۷ جایی در شهر الیووس در شمال بوئینس آیرس در آرژانتین شروع کردم. ۸۷۶۱۴۲۸۰۰ ثانیه بعد از لحظه صفر یونیکس وقتی که تازه تولد ۲۴ سالگی‌ام را جشن گرفته بودم.

جهان در سال ۱۹۹۷

قبلا دنیا جای کمی متفاوتی بود. وبسایت‌ها هنوز هشدار کوکی نداشتند. آینده وب، پرتال‌هایی مثل Excite.com بود. AltaVista موتور جستجویی بود که استفاده می‌کردم. آدرس ایمیل‌ام kosmacze@sc2a.unige.ch بود که معنی‌اش این بود که اولین وبسایت شخصی‌ام در آدرس http://sc2a.unige.ch/~kosmacze قرار داشت. هنوز عزاداری برای پرنسس دیانا ادامه داشت. استیو جابز به عنوان مدیر عامل به اپل برگشته بود و توانسته بود ماکروسافت را برای ترزیق ۱۵۰ میلیون دلار سرمایه به اپل قانع کند. DEC مشغول تعقیب قضایی Dell بود. بازمانده‌ی جسد چه‌گوارا تازه به کوبا بازگردانده شده بود و فصل چهارم فرندز تازه شروع شده بود. جیانی ورساچه رو به روی خانه‌اش به قتل رسیده بود. مادر ترزا و Roy Lichtenstein و Jeanne Calment (پیرترین آدم دنیا) به تازگی درگذشته بودند. مردم دیوانه‌وار مشغول بازی کردن فاینال فانتزی ۷ روی پلی‌استیشن بودند. کانال دوم بی‌بی‌سی پخش Teletubbies را شروع کرده بود.جیمز کامرون داشت تایتانیک را برای اکران آماده می‌کرد و Verve به تازگی آلبوم پرفروش Bitter Sweet Symphony را منتشر کرده بود که بعد مجبور شد بیشتر حق انتشارش را به رولینگ استون بپردازد.

تصویر Excite در سال ۱۹۹۷ از Internet Archive
تصویر Excite در سال ۱۹۹۷ از Internet Archive


تلفن‌های هوشمن شبیه Nokia 9000 Communicator بودند. با ۸ مگابایت رم و یک پردازنده i386 با فرکانس ۲۴ مگاهرتز و سیستم عامل GEOS. ساعت‌های هوشمند شبیه CASIO G-SHOCK DW-9100BJ بودند که البته اپ‌های زیادی نداشت اما عمر باطری قابل توجهی داشت. IBM Deep Blue برای اولین بار توانسته بود گری کاسپاروف را در شطرنج شکست بدهد. یک هکر به اسم «_eci» کد C یک حفره امنیتی به نام WinNuke را منتشر کرد. یک حمله امتناع از سرویس روی پورت ۱۳۹ تی‌سی‌پی (NetBIOS) که باعث ایجاد صفحه آبی مرگ ویندوز می‌شد.

تصادفا سال ۱۹۹۷ سال تولد ملاله یوسف‌زای و Chloë Grace Moretz و Kylie Jenner هم بود. داستان فیلم‌های زیادی هم در سال ۹۷ اتفاق می‌افتد که چندتایشان این‌ها هستند: فرار از نیویورک، نابودگر ۲، مورد عجیب بنیامین باتن، هری پاتر و شاهزاده دو رگه و پدر خوانده ۳. طبق داستان «ترمیناتور ۲: روز داوری» اسکای‌نت در ساعت ۲:۱۰ روز ۲۹ آگوست ۱۹۹۷ خودآگاه می‌شود. این اتفاق البته نیافتاد اما در نتیجه زنجیره جالبی از اتفاقات، دامنه google.com در ۱۵ سپتامر همان سال ثبت شد. دو سال با Y2K فاصله داشتیم و رسانه‌ها مشغول نگران کردن مردم در مورد آن بودند.

اولین شغل من به عنوان برنامه‌نویس

اولین شغلم نوشتن صفحه‌های ASP در ویرایشگرهای مختلف بود. از Microsoft FrontPage تا HotMeTaL Pro و EditPlus به علاوه‌ی سر وکله زدن با مشکلات تطبیق صفحه‌ها با NetScape و Internet Explorer 4 و نوشتن روتین‌های ذخیره شده برای SQL Server 6.5. برای یک سایت تجاری به زبان‌های ژاپنی، روسی، انگلیسی و اسپانیایی بدون هیچ جور ساپورت سازگار یونی‌کد در مجموعه نرم‌افزارهایی که با آن‌ها کار می‌کردم.

حاصل این تلاش روی یک سرور Pentium II با ۲ گیگابایت هارد و ۲۵۶ مگابایت رم در آمریکا اجرا می‌شد که همزمان Windows NT 4 و SQL Server 6.5 و ‌IIS 2.0 را اجرا می‌کرد و به ۱۰ هزار بازدیدکننده در روز سرویس می‌داد.

اولین زبان برنامه‌نویسی حرفه‌ای‌ام VBScript بود و البته مقداری Javascript در سمت کلاینت، پر از جمله‌های شرطی «اگر نت‌اسکیپ بود این کار را بکن اگر نبود آن کار» چرا که آن زمان ایده‌ای نداشتم که چطور باید از Javascript درست استفاده کنم. جالب است که حالا سال ۲۰۱۶ است و ما هنوز هم درست متوجه نشده‌ایم چطور می‌شود از Javascript درست استفاده کرد.

هیچ کس چیزی در مورد Unit Test نشنیده بود و مانیفست Agile هنوز نوشته نشده بود. هنوز حتی سر و صدای XML هم در نیامده بود. استراتژی تضمین کیفیت ما شامل هفته‌ای یک بار ری‌استارت کردن سرور بود چرا که در غیر این صورت سرور به صورت تصادفی شروع می‌کرد به کرش کردن. برای Parse کردن فایل‌های JPEG که به سرور آپلود می‌شد کامپوننت +COM خودمان را در ++Visual J توسعه داده بودیم که وقتی سر و کله‌ی فایل‌های JPEG 2000 پیدا شد دچار مشکل شد. از سیستم‌های کنترل سورس استفاده نمی‌کردیم. نه از CVS و RCS و نه حتی SourceSafe. Subversion‌ هنوز وجود نداشت و نمره آزمون Joel ما منفی ۲۵ بود.

۶۷۷۶ روز

در ۶۷۷۶ روز گذشته هر روز صبح بعد از خوردن یک فنجان قهوه کد نوشتن را شروع کرده‌ام. با VBScript ،JavaScript ،Linux ،SQL ،HTML ،Makefiles ،Node.js ،CSS ،XML ،.NET، YAML ،Podfiles ،JSON ،Markdown ،PHP ،Windows ،Doxygen ،C# ،Visual Basic، Visual Basic.NET ،Java ،Socket.io ،Ruby ،Unit Tests ،Python ،shell scripts ،C++، Objective-C ،Batch Files و این اواخر Swift.

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


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

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

۲ – کهکشان‌تان را درست انتخاب کنید: در کسب و کار ما هر تکنولوژی چیزی تولید می‌کند که اسمش را «کهکشان» می‌گذارم. این کهکشان‌ها ستاره‌هایی دارند و سیاه‌چاله‌هایی، تغییراتی که مثل شهاب سنگ‌ها محو می‌شوند، تعداد زیادی سیاره که فقط روی کسر کوچکی از آن‌ها شکلی از حیات یافت می‌شود و مقدار زیادی ماده تاریک و غبار کیهانی.

مثال‌های از این کهکشان‌ها NET ،Cocoa ،Node.js ،PHP ،Emacs ،SAP. هستند. هرکدام مبلغان، توسعه‌دهندگان، وبلاگ‌ها، پادکست‌ها، کنفرانس‌ها، کتاب‌ها، دوره‌های آموزشی و سرویس‌های مشاوره‌ی خودشان را دارند. کهکشان‌ها بر پایه‌ی این فرض ساخته شده‌اند که تکنولوژی آن‌ها پاسخ همه سوالات است. پس هر کهکشان بر یک فرض غلط ساخته شده است. توسعه دهنده‌های هر کهکشان گرایش‌های تیپیکالی که باعث ایجاد آن تکنولوژی شده‌اند را در خود تجسم می‌بخشند. به این ایده‌ها می‌چسبند و با ذوق‌زدگی تیشرت‌های مربوط به آن تکنولوژی را می‌پوشند و درباره‌ی درست بودن انتخاب‌شان برای دیگران موعظه می‌کنند.

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

در کنفرانس‌های کهکشان ماکروسافت مثل Barcelona TechEd 2003 و سخنرانی‌های دیگری در بوئنس آیرس، ژنو و لندن شرکت کردم. حتی در Microsoft DevDays 2006 در ژنو سخنرانی کردم. رفتار عمومی توسعه‌دهنده‌های این کهکشان غیردوستانه، «سازمانی» و پیچیده در اسرار و قراردادهای رازداری و پروسه‌های عجیب و غریب صنعت آی‌تی است.

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

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

۳ – تاریخ صنعت نرم‌افزار را یاد بگیرید: یاد بگیرید تکنولوژی مورد علاقه‌تان چطور به وجود آمده است. #C دوست دارید؟ می‌دانید چه کسی آن را خلق کرده است؟ پروژه NET. چطور به وجود آمده است؟ معمار اصلی‌اش چه کسی بود؟ چه محدودیت‌هایی در طراحی‌اش وجود داشت و چرا به شکلی درآمد که امروز هست؟ همین الگو را به هر زبان برنامه‌نویسی یا معماری CPU ای که دوست دارید تعمیم بدهید. پایتون، روبی، جاوا یا هر زبان برنامه‌نویسی دیگری. منشا آنها را پیدا کنید و بدانید چرا و چطور به وجود آمده‌اند. همین‌طور در مورد سیستم عامل‌ها، تکنولوژی‌های شبکه، سخت‌افزارها و هر چیز دیگری. بروید و ببینید این ایده‌ها چطور به ذهن آدم‌ها رسید و چه قدر طول کشید تا رشد کنند و پایدار شوند چرا که همان‌طور که می‌دانید، ساختن نرم‌افزار خوب ده سال طول می‌کشد.

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

همین‌طور یاد خواهید گرفت که برای چیزهایی که در برابر گذر زمان تاب آورده‌اند ارزش قائل باشید. Lisp، TeX، Unix، bash،‌ C، Cocoa، Emacs، Vim، Python، ARM، GNU make، man pages مثال‌هایی از چیزهای بادوام و به‌دردخوری هستند که باید عزیز بداریم و از آن‌ها یاد بگیریم.

۴ – یاد گرفتن را رها نکنید: یاد بگیرید. مهم نیست چه چیزی. می‌خواهید Fortran یاد بگیرید؟ فکر می‌کنید Erlang جالب است؟ فکر می‌کنید COBOL برای‌تان آینده شغلی بهتری ایجاد می‌کند؟ خیلی هم عالی. می‌خواهید درباره Functional Reactive Programming بیشتر بدانید؟ خودم یادتان می‌دهم. طراحی؟ البته. تجربه کاربری؟ چرا که نه. شعر؟ حتما.

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

هر سال حداقل یک زبان برنامه‌نویسی جدید یاد بگیرید. این ایده من نیست. ایده کتاب Pragmatic Programmer است و کار می‌کند. سالی یک زبان. به نظر ساده می‌رسد؟ از مرحله Hello World رد شوید و یک چیز به‌دردخور با آن بسازید. من معمولا با هر تکنولوژی جدید که یاد می‌گیرم یک ماشین حساب می‌نویسم که کمک می‌کند با ساختار و API و IDE و بقیه چیزهای مربوط به آن زبان آشنا شوم.

هر سال حداقل ۶ کتاب بخوانید. در توصیه قبلی شش کتاب معرفی کردم که می‌توانند شما را یک سال مشغول کنند. این هم لیست سال دوم

(متوجه‌ام که هفت تا شد.)

شش کتاب در سال ممکن است زیاد به نظر برسد ولی فقط لازم است هر دو ماه یک کتاب بخوانید و بیشتر کتاب‌هایی که معرفی کردم چندان طولانی نیستند و خیلی خوب نوشته‌شده‌اند و جذاب و پر از ایده‌های جالب و روشنگر هستند. این طور به ماجرا نگاه کنید. اگر الان ۲۰ ساله باشید تا ۳۰ سالگی ۶۰ تا کتاب و تا وقتی به سن من برسید ۱۲۰ تا کتاب خواهید خواند و با ۲۰ زبان برنامه‌نویسی آشنا خواهید بود. دوباره بهش فکر کنید.

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

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

۵ – یاد بدهید: وقتی چیزی یاد گرفتید آن را به دیگران یاد بدهید. این بسیار مهم است. این به این معنی نیست که کلاسی فراهم کنید و آدم‌ها را دعوت کنید تا به افاضات شما گوش بسپرند (که البته چندان هم کار ناجوری نیست) بلکه بیشتر به این معنی است که جواب‌های خوبی به چند سوال Stack Overflow بدهید، یک کتاب بنویسید، یک پادکست در مورد تکنولوژی مورد علاقه‌تان منتشر کنید، یک وبلاگ داشته باشید، روی مدیوم بنویسید، به یک قاره دیگر بروید و یک مدرسه برنامه‌نویسی روی Raspberry Pi برگزار کنید یا به یک برنامه نویس جوان‌تر به عنوان مربی کمک کنید. (البته این یکی را قبل از سی سالگی انجام ندهید)

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

هر زبانی هر چقدر هم عتیقه یا خوار و خفیف، جایگاهی در تائوی برنامه‌نویسی دارد و فقط با یاد دادن می‌شود این جایگاه را درک کرد. فقط با یاد دادن می‌شود واقعا تغییری در این جهان ایجاد کرد. سال ۲۰۱۲ ایمیلی از کسی که در یکی از برنامه‌های آموزشی من شرکت کرده بود گرفتم. یک برنامه‌نویس Flash. اکشن اسکریپت و باقی قضایا را که به یاد می‌آورید؟ یک مادر تنها بعد از ۱۲ سال ناگهان کارش را به عنوان برنامه‌نویس فلش از دست داده بود، که البته چندان هم غیر منتظره نبود. برایم نوشته بود که از برنامه آموزشی من لذت برده و چیزهای خوبی یاد گرفته و توانسته است شغلی به عنوان برنامه‌نویس موبایل وب پیدا کند و از من تشکر کرده بود. نمی‌شود گفت دنیا را عوض کردم اما امیدوارم گوشه کوچکی را به سمت بهتری تکان کوچکی داده باشم. از آن زمان یاد دادن برایم ارزشمندتر و معنی‌دارتر شده است.

۶ – فضاهای کاری مزخرف‌اند:

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

مهم نیست که شما Zach Holman باشید و بتوانید در رزومه‌تان بنویسید که Github را از صفر نوشته‌اید. شما اخراج خواهید شد. آن‌هم به عجیب‌ترین دلایل.

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

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

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

به خاطر بسپارید: این واقعیت که شما موضوعی را درک می‌کنید و می‌فهمید به این معنی نیست که باید با آن موافق باشید.

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

۷ – ارزش خودتان را بدانید: احتمالا در مورد «افسانه مهندس نرم‌افزار ده مَرده» شنیده‌اید. این افسانه واقعیت دارد اما نه آن طوری که شما فکر می‌کنید. از دید کارفرما یک مهندس نرم‌افزار ده مرده، ده برابر پولی که به عنوان حقوق می‌گیرد ارزش تولید می‌کند. یعنی وقتی ۱۰۰ هزار دلار حقوق می‌گیرد ارزشی بیش از یک ملیون دلار تولید می‌کند و بعد به خاطر چیزی که به آن سرمایه‌داری می‌گوییم کسی که در پایان سال مالی پاداش می‌گیرد، کارفرماست. ارزش خودتان را بدانید و کمی کارل مارکس و توماس پیکتی بخوانید. به اندازه کافی گفتم.

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

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

وظیفه شماست که حواس‌تان به دیگران باشد و آسانسور را پایین بفرستید.

در زندگی آگاهانه تصمیم بگیرید و حواس‌تان به کارهای که می‌کنید و اثرات آن‌ها باشد. از این که نظرتان را تغییر دهید ناراحت یا شرمنده نشوید. هر وقت لازم است بگویید: «اشتباه کردم، متاسفم». تکلیف‌تان را با خودتان بدانید و به خودتان احترام بگذارید.

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

۹ - از LLVM غافل نشوید: همه در مورد Swift حرف می‌زنند اما چیزی که این روزها بیش‌تر از همه توجه من را جلب می‌کند LLVM است.تصور می‌کنم با مقیاس اثر گذاری دراز مدت LLVM مهم‌ترین پروژه نرم‌افزاری روزگار ماست. Swift و Rust (دو تا از محبوب‌ترین زبان‌های سال ۲۰۱۶ بر اساس نظرسنجی Stack Overflow)، بلاک‌های Objective-C و Dropbox Pyston و Clang Static Analyser و ARC و Google Souper و Emscripten و LLVMSharp و Microsoft LLILC و Rubymotion و cheerp و برنامه‌های watchOS و Android NDK و Metal همه به خاطر LLVM ممکن شده‌اند و از LLVM استفاده می‌کنند. تقریبا برای همه زبان‌های مهم موجود کامپایلرهایی بر اساس LLVM وجود دارد.

پروژه LLVM روی پلتفرم‌های زیادی کار می‌کند. روی ساختارهای مختلف CPU ها کار می‌کند. با زبان‌های زیادی کار می‌کند. آدم‌های زیادی کیفیت کدهای آن را بررسی می‌کنند و البته مجانی و آزاد است.

هر چه می‌توانید در باره LLVM یاد بگیرید. این کهکشانی است که در حال حاضر بیشترین نوآوری در آن اتفاق می‌افتد و تکلیف ۲۰ سال آینده در آن روشن می‌شود.

۱۰ – حس‌تان را دنبال کنید: وقتی اولین معرفی NET. را در سال ۲۰۰۰ دیدم حس کردم آینده خوبی خواهد داشت همین طور وقتی اولین معرفی آیفون را در سال ۲۰۰۷ تماشا می‌کردم. در هر دو مورد اطرافیانم به من خندیدند و من در هر دو مورد حس‌ام را دنبال کردم و فکر می‌کنم عاقبت خوبی داشت و خوب پیش رفت. حس‌تان را دنبال کنید. حتما برای شما هم شانس می‌آورد.

۱۱ – ای پی آی همه چیز است: API های عالی اپ‌های عالی می‌سازند. API اگر مزخرف باشد، اپ هم مزخرف از کار درخواهد آمد. یادتان باشد که Chunky از Chatty بهتر است و کلاینت باید ساده و احمق باشد. هر چقدر می‌توانید منطق کارتان را به API و سرور منتقل کنید. از خودتان پروتکل امنیتی اختراع نکنید. یکی دو تا تکنولوژی سمت سرور یاد بگیرید و سعی کنید Node یکی از آن‌ها باشد. REST را کنار بگذارید و با Socket.io و ZeroMQ و Erlang و XMPP آشنا شوید. سیستم‌های برخط فقط برای اپ‌های چت نیستند بلکه قدم بعدی در توسعه اپ‌های موبایل هستند. Polling را کلا از ذهن‌تان پاک کنید. و بد نیست برای API‌ تان یک Bot هم درست کنید.


۱۲ – با پیچیدگی بجنگید: هر چه ساده‌تر بهتر و این موضوع استثنایی ندارد. اصل KISS را به یاد بیاورید و نه فقط در سطح UI‌ بلکه تا اعماق عمیق‌ترین لایه های کدتان. ًRefactor کردن، Unit تست‌ها، بررسی کد، Pull Request ‌ها همه برای این هستند که مطمئن شوید آن‌چه منتشر می‌کنید ساده‌ترین معماری ممکن برای راه انداختن کار شماست. فقط از این راه می‌شود سیستم‌های قابل اطمینانی ساخت که مدت زیادی کار کنند.


مهمترین چیزی که باید به خاطر بسپارید این است که سن شما مهم نیست.

یکی از پسرهایم به من گفت: پدر ممکن نیست. ریاضیدان‌ها بهترین کارشان را قبل از ۴۰ سالگی انجام می‌دهند و تو ۸۰ ساله‌ای. ممکن نیست در این سن ایده‌ی درخشانی داشته باشی. اگر شما وقتی به ۸۰ سالگی می‌رسید هنوز هشیاری ذهنی‌تان را داشته باشید، این برتری را دارید که مدت زیادی زندگی کرده‌اید و چیزهای زیادی دیده‌اید و صاحب منظری خاص هستید. من ۸۶ سال دارم و این ایده‌ها را در این چند سال اخیر داشته‌ام. ایده‌های جدید کم کم پیدا می‌شوند و شما تکه‌ای از این‌جا و تکه‌ای از آن‌جا برمی‌دارید و ایده‌های که ۵ یا ۱۰ سال پیش هنوز جا افتاده و رسیده نشده بودند، حالا می‌رسند.

مایکل آتیا، ریاضیدان برنده مدال فیلدز و جایزه آبل

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

در سال ۲۰۳۵ درست ۱۹ سال بعد کسی در یک کنفرانس نرم‌افزاری سخنرانی‌ای مثل این خواهد کرد. «سلام، من ۴۲ سال دارم و این داستان من است». امیدوارم یکی از شما این سخنرانی را کند و گرنه لابد یک بات هوش مصنوعی این کار را خواهد کرد. در این سخنرانی گزارشی از وقایع سال ۲۰۱۶ خواهید داد. مثلا این که ۲۰۱۶ سالی بود که David Bowie، Umberto Eco، Gato Barbieri و Johan Cruyff در گذشتند یا SQL Server برای اولین بار روی لینوکس ارايه شد یا Google AlphaGo برای اولین بار یک قهرمان Go را شکست داد یا اسناد پاناما و دیتابیس اطلاعات شهروندی ترکیه در یک روز درز کردند یا گوگل امکان استفاده از Swift روی اندروید را بررسی کرد یا این که آخرین سالی بود که مردم چیز به درد نخوری به اسم حریم خصوصی داشتند. ۳ سال با مشکل سال ۲۰۳۸ فاصله خواهیم داشت و لابد مردم به خاطر آن نگران و عصبی خواهند بود. البته من نمی‌دانم تا ۱۹ سال دیگر چه اتفاقاتی خواهد افتاد اما می‌توانم به شما بگویم این سه اتفاق حتما خواهند افتاد.

  • یکی در Stack Overflow خواهد پرسید که چطور بااستفاده از Regular Experssion آدرس‌های ایمیل را از داخل یک متن جدا کنیم.
  • یک نفر یک فریم ورک جدید JavaScript منتشر خواهد کرد.
  • و یک نفر یک چیز جالب با LLVM خواهد ساخت.

و شاید شما این سخنرانی را با لبخند به خاطر خواهید آورد.

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