شیوه ساخت برنامه‌ها به طور کلی متحول شده است: عصر طلایی برنامه‌نویسی

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

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

زمانی که در سال 1999 اولین شرکتم را راه‌اندازی کردم، ۲/۵ میلیون دلار صرف تدارک زیرساخت و ۲/۵ میلیون دلار دیگر هزینه گروه برای انجام کارهایی مثل کد‌نویسی، تهیه مقدمات، مدیریت، بازاریابی و فروش نرم‌افزار شد.
با نگاهی به وضعیت کنونی و مقایسه آن با زمان شروع به کارم، متوجه شدم هزینه پیاده‌‌سازی ایده‌ها 90 درصد کمتر شده است. امروزه کلاینت‌های چند کاناله‌ای که روی زیرساخت‌های کششی (Elastic) پیاده شده‌‌اند، خدماتی جدا از هم را به یک‌دیگر متصل کرده از APIهای مدیریت شده استفاده می‌کنند، نرم‌افزارهای متن‌باز را با پروژه خود یکپارچه کرده، تکنیک‌های DevOp را به کار گرفته و روی بازخوردهای قابل انداز‌ه گیری تمرکز می‌کنند.
چندی پیش موسسه فارستر در قالب طرح یک سوال، از 700 برنامه‌نویس کشورهای مختلف نظرسنجی کرد. سوال این بود: «در سال گذشته از چه نرم‌افزارهای متن‌باز استفاده کرده‌اید؟» و نتایج:

  • پایگاه‌های داده: ۴۱ درصد
  • سیستم‌عامل‌ها: ۳۸ درصد
  • وب‌سرورها: ۳۴ درصد

برنامه‌نویسان فعال در حوزه ساخت محصولات مبتنی برابر، ابزارهای سیار و داده‌های عظیم هم وضعیت مشابهی داشتند.

  • ابر: ۹۳ درصد
  • سیار: ۹۲ درصد
  • داده‌های عظیم: ۷۸ درصد

از هر پنج برنامه‌نویس تنها یک نفر از نرم‌افزارهای متن‌باز استفاده نکرده بود. حتی مشتریان پر و پا قرص مایکروسافت و اوراکل هم به نوعی در حال استفاده از نرم‌افزارهای متن‌بازند.
در گذشته حوزه‌ای که جنبش متن‌باز حرف اول و آخر را در آن می‌زد، حوزه سرورها بود اما در حال حاضر پایگاه‌های داده متن‌باز هم محبوبیت بسیار زیادی پیدا کرده‌اند. تغییراتی بزرگ در حوزه پایگاه‌های داده در حال رقم خوردن است. برنامه‌نویسان رفته‌رفته اپ‌سرورها را کنار گذاشته و در محصولات جدید راهکارهای دیگری را به کار می‌گیرند.
نگاهی ساده به برنامه‌های مدرن امروزی تفاوت آن‌ها با برنامه‌های نسل قبل را به‌خوبی نشان می‌دهد. امروزه دسترسی به APIها بسیار ساده شده و برنامه‌نویسان قبل از شروع به کد‌نویسی ابتدا سرویس‌ها و APIهای مرتبط با پروژه را جستجو می‌کنند. در حال حاضر سرویس‌های بسیار گسترده و متنوعی برای تسهیل امر برنامه‌‌نویسی وجود داشته که به نام مدل ارتباطی ناهمگام شناخته می‌شوند. طی 12 سال گذشته اسیر معماری MVC یا مدل، نمایشگر و کنترلر بودیم؛ دنیایی با معماری‌های بسیار فشرده که این روزها دیگر کاربردی ندارد. در حال حاضر شاهد چارچوب‌هایی (frameworks) هستیم که براساس سیستم رخداد عمل می‌کنند. البته بسیاری از چارچوب‌های قدیمی همچنان جوابگوی نیازهای امروزی‌ بوده و چارچوب‌های جدید هم در قالب نرم‌افزارهای متن‌باز منتشر می‌شوند.
چارچوب‌های پردازش ارتباطات سبک مثل Socket.io،Nginxو Node.js در حال جایگزینی با نسل قبلی نرم‌افزارهای متن‌باز و فناوری‌های قدیمی‌تر هستند. البته رقابت تنها در حوزه نرم‌افزارهای متن‌باز در مقابل محصولات بسته تجاری نیست، بلکه نبرد اصلی میان نرم‌افزارهای متن‌باز مثلا (Subversion در برابر Git) جریان داشته و گاهی اوقات محصولات این حوزه جایگزین یک‌دیگر می‌شوند. محبوبیت پایگاه‌های داده روز‌به‌روز بیشتر و استفاده از آن‌ها رایج‌تر می‌شود. زیرساخت‌های کششی تبدیل به استاندارد شده و دیگر خبری از مجوز‌های «حداکثری» نیست.
در پشت صحنه برنامه‌های مدرن شاهد «معماری مشارکت مدرن[1]» هستیم. سیستم‌هایی که روی سایر سیستم‌ها ساخته شده و در اختیار کارفرماها و مشتری‌ها قرار داده می‌شوند. برنامه‌های تحت وب به شیوه‌‌ای متفاوت و با به کارگیری معماری‌های چهار لایه ساخته می‌شوند. در وسط لایه تجمیع قرار دارد که وظیفه آن گردآوری و هضم داده‌ها به صورت بی‌درنگ (لحظه‌ای، آنی) از اینترنت اشیا (IoT) یا سایر منابع بوده و برحسب شرایط و موقعیت مناسب‌‌‌ترین گام بعدی را پیش‌بینی می‌کند. بعد از این لایه تحویل یعنی سرویسی مثل خدمات تحت وب آمازون وارد عمل شده و انجام سایر امور را برعهده می‌گیرد.
بستره‌های مشارکتی مثل نت‌فلیکس را می‌توان تجزیه و تمام اجزای سازنده مثل لایه مشتری، لایه تحویل، لایه تجمیع و لایه خدمات که همگی متن‌باز هستند را مشاهده کرد. این قضیه در مورد خدماتی مثل Evernote، اینستاگرام، Untappedو سایرین هم صادق است. همه اینها نشان ‌دهنده رواج فناوری‌ها و محصولات متن‌باز در معماری‌های برنامه‌های مدرن است.

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

خلاقیت بیشتر در جامعه نرم‌افزارهای متن‌باز اتفاق می‌افتد. گروه‌های دوستانه‌ای تشکیل می‌شوند و با همکاری یکدیگر نوآوری‌های مختلفی را در این صنعت رقم می‌زنند. کسانی که به دنبال استخدام برنامه‌نویس هستند چاره‌ای ندارند جز تغییر خط‌مشی‌ فعالیت‌های خود و ساخت محصولات جدید بر پایه برنامه‌ها و ابزارهای این گروه‌ها.
همواره این سوال را از برنامه‌نویسان می‌پرسم که «یا خارج از محیط کار، کد‌نویسی می‌کنید یا نه؟» پاسخ 75-70 درصد آن‌ها مثبت است. بعضی‌ها زمانی اندک و عده‌ای دیگر بین 20-11 ساعت در هفته به برنامه‌‌نویسی آزاد مشغولند. این اشتیاق برای کد‌نویسی در اوقات فراغت انگیزه‌های درونی مثل یادگیری یا راه‌اندازی کسب‌وکار داشته و موجب بهتر شدن حال برنامه‌نویس هم می‌شود. از هر چهار برنامه‌نویس یک نفر قسمتی از وقت آزاد خود را صرف مشارکت در جنبش نرم‌افزارهای متن‌باز می‌کند. این افراد جزو حرفه‌ای‌‌‌ترین و خلاق‌‌‌ترین برنامه‌نویسان حال حاضر جهان هستند. اگر به دنبال استخدام برنامه‌نویسانی ماهر و تاثیرگذار هستید بهتر است به دنبال کسانی باشید که در حوزه نرم‌افزارهای آزاد و متن‌باز فعالیت می‌کنند؛ شک نکنید مجموعه‌ شما علاقه بسیار زیادی به جذب چنین افرادی خواهد داشت.
البته در این صنعت شاهد کمبود افراد با استعداد هستیم و همه به دنبال کسانی هستند که با چارچوب‌های مدرن و همچنین NoSQL آشنا بوده و دانش کافی برای ساخت ابزارهای مبتنی بر محاسبات ابری را داشته باشند. شکی نیست کسانی که با چنین ابزارهایی آشنا باشند آینده درخشانی پیش رو دارند.
حوزه فناوری دستخوش تغییراتی بنیادین است. فناوری‌های مدرن تفاوت بسیاری زیادی با برنامه‌های کلاینت/سرور دارند. باید نحوه استفاده از این فناوری‌ها را به‌خوبی فرا گرفته و همچنین با معماری‌های کششی که امکان خلاقیت، بدون صرف هزینه‌های گزاف را میسر می‌کنند هم به‌خوبی آشنا شویم. هزینه ناچیز محصولات متن‌باز جایگزین مناسبی برای بستره‌های مدرن است. از هر پنج برنامه‌نویس، چهار نفر با استفاده از ابزارهای متن‌باز نیازهای خود را مرتفع می‌کنند.
پروژه‌های متن‌باز، صرفنظر از مشارکت در گیت‌هاب، فعالیت در دروپال، اکلیپس، آپاچی و غیره موجب تشکیل گروه‌هایی دوستانه با اهداف مشترک می‌شوند. این پروژه‌ها نقاط ثقل برنامه‌‌نویسی جنبش متن‌باز بوده و هدایت دنیای برنامه‌‌نویسی را عهده‌دارند.

سخنرانی دوایت مری‌ین
من یکی از بنیان‌گذاران MongoDB هستم و در روزهای آغازین پایه‌‌گذاری، حجم زیادی از کد‌نویسی برعهده من بود.
قصد دارم از دوران قبل از ظهور برنامه‌‌نویسی شئی‌گرا و پایگاه‌های داده رابطه‌ای و لایه داده‌ها صحبت کنم. اصطلاح «برنامه‌های مدرن» را دوست دارم؛ چراکه دیگر برنامه‌هایی مشابه نمونه‌های قدیمی توسعه نمی‌‌‌دهیم. این روزها نمی‌‌توان درخواستی مثل «نیازمند نگارش جدیدی از برنامه‌ قبلی هستیم» مطرح کرد، بلکه باید به دنبال توسعه کلاس کاملا جدیدی از برنامه‌‌ها، مدل‌های جدید B2B یا B2C که تاکنون وجود نداشته‌اند باشیم. شیوه ساخت برنامه‌ها به طور کلی متحول شده است. یکی از نکات مهمی که جفری هاموند به آن اشاره کرد، کششی بودن مجوزهاست. به نظر من دانه‌‌‌‌بندی نرم‌افزارها هم از اهمیت خاصی برخوردار است. دانه‌‌بندی به تقسیم یک سیستم به ریز‌‌ترین و جزئی‌‌‌ترین اجزای آن می‌گویند. امروزه ترکیب کد‌های محصولات کاملا متفاوت‌، بسیار ساده شده و برای این کار می‌توان از لیست بلند بالایی از کمپوننت‌های برنامه‌های شخص ثالث استفاده کرد.
اگر محصولات متن‌باز نبودند امکان خرید، ارزیابی و توسعه این همه محصول مختلف وجود نداشت یا حداقل بسیار دشوار بود. جنبه ‌دانه‌ای بودن مزیتی بی‌نظیر است که تبدیل به بخشی جدایی ‌ناپذیر از فرآیند برنامه‌‌نویسی امروزی شده است. دیگر نیازی به وجود یک سیستم بزرگ یکپارچه نیست؛ بهتر این است تا جایی که امکان دارد همه چیز را در قالب قطعاتی مجزا کوچک و با ترکیب آن‌ها محصولی بزرگ‌ بسازیم. قطعاتی مختلف که عهده‌دار انجام وظایف خاص خود هستند‌ نیاز ماست و اگر دنیای متن‌باز وجود نداشت مسلما چنین دستاوردی میسر نمی‌‌شد.
در حوزه برنامه‌های مدرن مایلم درباره داده‌ها صحبت کنم. دو اصطلاح «داده‌های عظیم (حجیم)» و«NoSQL» تا حدودی نامفهوم و کلی هستند. اتفاقی بزرگ در حال شکل گرفتن است و در حال تجربه بزرگ‌‌‌ترین تغییر در لایه داده‌ها در صنعت فناوری اطلاعات طی 25 سال گذشته هستیم. داده‌های عظیم موجب ظهور و رشد بسیاری از فناوری‌های جدیدی در لایه داده‌ها شده است. صنعت داده‌های عظیم به خودی خود ارزشی بالغ بر 100 میلیارد دلار داشته و هر ساله با تجربه نرخ رشد 10 درصدی، با سرعتی دوبرابر کل تجارت نرم‌افزار پیشرفت می‌کند. NoSQL قابلیت افزایش مقیاس داشته و برای ساخت برنامه‌های مدرن که با حجم زیادی از داده‌ها سروکار دارند، گزینه بسیار مناسبی است.Hadoop که در واقع برای ذخیره‌‌سازی و فراخوانی اطلاعات حجیم مورد استفاده قرار می‌گیرد در زمینه تحلیل هم عملکرد قابل قبولی دارد.

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

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

کاربردها
در زمینه کاربرد این فناوری‌ها مثال‌های بسیار خوبی وجود دارد. هنگامی که درباره کاربرد MongoDB از من سوال می‌شود پاسخ می‌دهم این محصول در قالب یک «پایگاه‌داده عمومی» یا «پایگاه‌داده عملیاتی» فعالیت می‌کند. البته در این موضوع که پایگاه‌داده عملیاتی دقیقا چه مفهومی داشته و روش پیاده‌‌سازی آن اتفاق نظر وجود ندارد. این روزها اینترنت اشیا (IoT) رواج گسترده‌ای پیدا کرده است. شرکت‌ها و سازمان‌ها با به کارگیری NoSQL که نقش بسیار مهمی در مدیریت داده‌های نامتجانسی که توسط میلیاردها حسگر در دنیای اینترنت اشیا تولید می‌شوند دارد، سعی می‌کنند از آن به سود خود استفاده کنند. برای مثال شرکت Edeva با شعار «حفاظت از سیاره» در حال استفاده از داده‌های عظیم برای تحقق اهداف خود است.
به خودروهای بدون راننده‌ای فکر کنید که حجم بسیار عظیمی از داده‌ها را تولید می‌کنند. از تحلیل داده‌های این خودروها می‌توان برای بهبود جریان عبور و مرور وسایل نقلیه استفاده کرد و در نتیجه مواردی مثل نیاز به تغییر فیزیکی در یک مکان‌ مشخص، نیاز به احداث جاده و… را متوجه شد. البته از این داده‌ها برای ‌ایمن‌ کردن جاده‌ها هم می‌توان استفاده کرد. این شرکت به‌تازگی سیستم جدیدی با عملکردی جالب عرضه کرده است: تصور کنید در سوئد در حال عبور از روی یک پل هستید؛ سیستم مذکور سرعت خودروی‌ شما را تشخیص می‌دهد. اگر سرعت قانونی باشد اتفاقی نخواهد افتاد در غیر این صورت و با تشخیص سرعت غیرمجاز، سیستم سرعت‌گیرهایی به شکل فرورفتگی جاده‌ تنها برای خودروی شما ایجاد و آن‌ها را بر سر راه‌تان سبز می‌کند! گاهی اوقات وقوع تصادف روی یک پل موجب مختل شدن عبور و مرور روزانه 500 هزار نفر می‌شود. با وجود چنین سیستمی دیگر شاهد چنین اختلالاتی نخواهیم بود. این پروژه به صورت موفقیت‌آمیز در سوئد پیاده‌‌سازی شده است.
بررسی این مثال‌ها نشان می‌دهد چیزی فراتر از این دستاوردها را هم می‌توان کسب کرد و سوال اصلی من از فعالان این حوزه این است که برای چند سال آینده چه برنامه‌ای برای فعالیت در این حوزه دارند؟ آیا به دنبال مشارکت در چنین پروژه‌هایی هستید؟ یکی از پروژه‌های جالب برنامه‌کاربردی Uber است که تجربه متفاوتی در سفارش تاکسی ایجاد کرده زیرا راننده‌های آن‌ها همیشه لباس رسمی بر تن داشته و سوار بر لوکس‌‌‌ترین خودروها هستند! هنگام پیاده شدن هیچ پولی رد و بدل نمی‌‌شود چراکه هر مسافر پیش از آغاز سفر کارت اعتباری خود را به Uber می‌دهد و این شرکت از آن طریق پس از برداشتن سهم 50 درصدی خود مابقی را به حساب راننده واریز می‌کند. Uber با همین ایده ساده تنها طی چهار سال به یک شرکت ۱۵ میلیارد دلاری با ارایه سرویس در ۴۵ کشور و بیش از ۱۰۰ شهر بزرگ جهان تبدیل شده است.
آیا شما هم به دنبال خلاقیت و تجربه کارهای جدید هستید یا نه؟ بهتر است فعالیت شرکت‌ها و سازمان‌هایی که امور خود را همچنان به روال قدیمی انجام می‌دهند داشته باشید و سعی کنید با نوآوری و پیشنهاد انجام کارها به شیوه‌ای جدید آن‌ها را ترغیب به استفاده از محصول خود کنید.

نوشته شده توسط رمی دکازمیکر در وب‌گاه OpenSource.com