گشتی میان اعضای تیم فنی طاقچه به مناسبت روز برنامه نویس
امروز (۱۲ سپتامبر) روز برنامه نویس است و به همین بهانه از علی میر فردوس خواهش کردیم کمی درباره تیم فنی طاقچه بنویسد و از حال و هوای این بخش از طاقچه کمی ما را باخبر کند. از علی میرفردوس یادداشت دیگری در وبلاگ طاقچه با عنوان «گلدونها را چه کسی اب میدهد؟» منتشر شده است که در آن علی سامانه شخصیسازی طاقچه را معرفی کرده است. سخن کوتاه کنیم و برویم سر اصل مطلب و یادداشت علی را به مناسبت روز برنامه نویس بخوانیم:
آدمها ۱۰ دستهاند: آنهایی که باینری میدانند و آنهایی که نمیدانند!
اگر متوجه شوخی جمله اول نشدید احتمالا از دسته دوم هستید. باینری به مبنای دو اعداد گفته می شود؛ یعنی اعداد را فقط با ۰ و ۱ نشان دهیم و ۱۰ در این مبنا می شود همان ۲.
روز ۱۲ سپتامبر روز برنامه نویس نامگذاری شده، چون ۲۵۶ امین روز سال است. این عدد برای این انتخاب شده که بزرگترین توان ۲ کوچکتر از ۳۶۵ روز سال است! کلا برنامهنویسها علاقه زیادی به مبنای دو دارند چون اساس تمام کامپیوترها بر همین ۰ و ۱ بنا شده.
به مناسبت روز برنامه نویس تصمیم گرفتیم یادداشتی بنویسیم که کمی بیشتر با برنامهنویسها و به خصوص از نوع طاقچهایَش آشنا شوید.
کد میزنم پس هستم
اسمهای مختلفی روی ما میگذارند؛ برنامهنویس، کدنویس، توسعهدهنده و یا به قول همکارانمان در طاقچه، بچههای فنی! کارمان نوشتن کد است. کدها دستوراتی هستند که اگر در محیطی مناسب و با ترتیب و قواعدی درست نوشته شوند به شما یک خروجی میدهند. مثلا همین صفحهای که در حال خواندنش هستید، توسط یک سری کد نوشته شده. همهی نرمافزارهایی که ازشان استفاده میکنید از همین کدها تشکیل شدهاند و گاهی پشت یک کار سادهی این نرمافزارها محاسبات و الگوریتمهای پیچیدهای قرار دارد.
ممکن است با شنیدن نام «برنامهنویس» تصویر پسر نوجوانی، با موهای ژولیده و عینکِ نزدیکبین در ذهتان شکل بگیرد که تمام روز را به صفحهی کامپیوتر خیره شده. خب شاید برایتان جالب باشد که اولین برنامهنویس در دنیا، خانم اِیدا لاولِیس، ریاضیدان و کنتس انگلیسی است.
کار برنامهنویسها بهطور گستردهای بسته به نوع کسب و کاری که آنها برای آن برنامه مینویسند متفاوت است. شاید بشود برنامهنویسها را به دو دستهی کلی تقسیم کرد؛ backend developer و frontend developer.
بکاندیها کسانی هستند که پشت پرده کار میکنند و منطق پشتِ برنامهها را پیاده میکند و فرانتاندیها، قسمتهایی را کار میکنند که شما در نرمافزار میبینید و در کار خوشکلسازی و ساختن تجربهی درست و خوب از نرمافزار، برای شما هستند. حجت و سجاد بک اندی های طاقچهاند. بعضی از برنامهنویسها، مثل بازیکنهای دو پای فوتبال میتوانند هم در بکاند کار کنند و هم در فرانت. یک جوراهایی همه فن حریف هستند و ما اسمشان را میگذاریم فول استک (full-stack). مهدی، محمد، پدرام، بهنام و نرگس فول استکهای طاقچه هستند.
البته تقسیمبندیهای دیگر هم وجود دارد. مثلا ما در طاقچه اینها را داریم؛
توسعهدهنده اندروید: ایمان و سلطان برنامهنویسهایی هستند که روی دستگاههای اندرویدی کارمیکنند. بیشتر با دو زبان کار میکنند؛ فارسی و جاوا.
توسعهدهنده آیاواس: امید روی برنامهنوسی آیپد و آیفون کار میکند. بیشتر از دو زبان برنامهنویسی swift یا objective-c استفاده میکند و یک جاهایی ما هم نمیفهمیم چه میگوید.
توسعهدهنده ویندوز: بهزاد برنامهنویسی است که نسخهی ویندوز طاقچه را توسعه داد. میتواند به زبانهای مختلفی از جمله C# یا C++ و ترکی استفاده کند.
دانشمند علوم داده: متخصصی است که با استفاده از آمار و ساختن مدل های یادگیری ماشین برنامههایی طراحی میکند تا پیش بینی هایی را انجام دهد و به سؤالات کلیدی در کسب و کارها پاسخ دهد. من (علی) دانشمند علوم داده طاقچه هستم. البته بیشتر از اینکه یک دانشمند باشم شبیه یک دانشجو هستم 🙂
همه دبه میکنیم یا به عبارتی دیگر، ما چطور در طاقچه کار میکنیم؟
روال اضافه شدن یک ویژگی در نسخههایی از طاقچه که در دست دارید با نیازسنجی شروع میشود. ابتدا آنچه مورد نیاز کاربر است با شیوههای مختلف، استخراج میشود و تجربهکاربری آن طراحی میشود. سپس طراحی را به توسعهدهندگان میدهند تا کار برنامهنویسی انجام شود.
برای چابک بودن تیم توسعه، فرآیند توسعه به مدت زمانهای تقریبا دو هفته تا یک ماهه به نام اسپرینت (sprint) تقسیم میشود که در ابتدای این جلسهها تصمیم میگیریم با توجه به نیازهای کاربرها، الویتها و امکاناتی که داریم به ترتیب چه چیزی را پیادهسازی کنیم. در انتهای این دورهها نیز بررسی میکنیم که کارکرد مواردی که طراحی کردهایم چطور بوده و چه چیزهایی مشکلساز بودهاند.
گاهی بین بحثهای فنی پیش میآید که کسی دبه کند و بگوید بخشی را نمی شود پیاده کرد. دبه کردنها معمولا به خاطر مشکلات فنی است که پیش میآید و از مواردی است که باعث میشود برگردیم و مجدد از دیدگاه دیگری به مسائل نگاه کنیم. گاهی هم برای شوخی الکی دبه می کنیم! راستی، حجت که سرور طاقچه را طراحی میکند بیشترین دبه را میکند! 🙂
فامیل دور فامیل نزدیک
بچههای برنامهنویسی برخلاف چیزی که ممکن است از بیرون به نظر برسد، آنقدرها هم خشک و جدی و خیره به کامپیوتر نیستند. شاید مدل شوخیها و سرگرمیهایمان کمی متفاوت یا عجیب باشد. مثلا چند سال پیش ابوذر یک عروسک فامیل دور آورد. همه خیلی از این عروسک استقبال کردیم و کم کم به عنوان یک عضو همکار در تیم فنی آن را پذیرفتیم و یک جورهایی شد نماد تیم ما!حالا ابوذر از طاقچه رفته و این عروسک روی میزها میچرخد و یکی از تفریحاتمان این است که با آن در موقعیتهای مختلف عکس بگیریم.
جنگیر کَشمیر
بارها شده که به خاطر مسائل فنی سرورها طوری که باید عمل نمیکردهاند. در این موارد که رفع و شناسایی مشکل آنها دشوار است، میگوییم سرورها جنزده شدهاند و عملیات دیباگ کردن را جنگیری مینامیم.
یک بار که مشکلاتی ناشی از cache که یک حافظه موقت سریع است، به وجود آمده بود تا پاسی از شب درگیر آن بودیم و بعدش برای رفع خستگی برای آن شعر و لطیفه تعریف کردیم که اینجا چند تایی از آنها را میآورم:
حجت: «بر او راست کَش کرد و کَش کرد راست / خروش از خم چرخ سرور بخاست»
مهدی: «یاری اندر کَش نمیبینم، یاران را چه شد؟»
حجت: «سرور تو کَشان به دست گیرد / بازار باگان شکست گیرد»
مهدی: «کَش طاقت این داده ندارد که تو داری»
علی: «نشسته ام، به کَش نگاه می کنم، سرور آه می کشد، تو از کدام راه میرسی»
مهدی: «کَشی که به کلاینت رواست، به سرور حرام است»
علی: «به کَشی که سید باشه چی میگن؟ کشمیر»
علی: «ای کَش چه به سر داری برگو چه خبر داری از سرور بیمار و از مردم بیدار»
حجت: «روزها دل طلب جام کَش از ما میکرد / آنچه Mem داشت ز بیگانه تمنا میکرد»
علی: «به کشی که خیلی خفن باشه چی میگن؟ کشکول»
امید: «میدونی غذای سرور چیه؟ کش کبادمجون»
چند اصطلاح فنی
یکی از همکارهای غیرفنی! (وقتی به ما میگویید فنی ما باید به شما چه بگوییم؟!) یک بار به من گفت که بچههای فنی از اصطلاحات و واژگان انگلیسی زیاد استفاده میکنند در حالی که بعضی از این اصطلاحها، معادل فارسی هم دارد، مثلا به دورکاری میگویند ریموت. در همین لحظه یکی از بچه های فنی رسید و به دکمه روشن و خاموش کامپیوتر گفت پاور!
در این بخش تصمیم گرفتم چند اصطلاح رایج برنامهنویسها را توضیح بدم. اگر پیشنهاد معادل فارسی دارید، خوشحال میشوم برایم بنویسید:
- کد زدن: نوشتن برنامهی نرمافزاری با استفاده از یکی از زبانهای برنامهنویسی.
- باگ: به هر خطا و اشتباهی که در برنامه به وجود می آید. علت این نامگذاری هم داستان جالبی دارد. ترجمهی «باگ» میشود «حشره». در روزگاران قدیم که برنامهها به شکل فیزیکی روی کاغذ پانچ میشدند و به کامپیوترهایی غول آسا داده می شدند، گاهی در این مسیر حشرهای وارد میشد و کل برنامه را به هم میریخت. (پیشنهاد فارسی: خطا)
- دیباگ: فرآیند شناسایی و اصلاح کردن باگ. (پیشنهاد فارسی: ؟)
- سرور و کلاینت: در یکی از متداولترین معماریهای نرمافزاری، یک برنامه روی کامپیوتر اصلی اجرا میشود که به آن سرور میگویند و وظیفه پاسخگویی به درخواستهای باقی برنامهها را دارد. کلاینت برنامههایی است که روی دستگاه (موبایل مثلا) کاربران نصب میشود و متناسب با ورودی کاربر از سرور درخواست اجرای بخش خاصی از کد را میکند و سرور پس از پردازش لازم، خروجی را به کلاینت برمیگرداند. (پیشنهاد فارسی: ؟)
- دیتا (Data): به تمام اطلاعات، دانستهها و آماری که در بخشهای مختلف وجود دارد، دیتا میگویند. (پیشنهاد فارسی: داده)
- دولوپ (develop): به فرآیند طراحی و پیاده سازی و به عبارتی توسعه نرمافزارها توسعه (دولوپ) گفته میشود و به کسی که این کار را انجام میدهد دِوِلوپر (doloper نخوانید) گفته میشود. (پیشنهاد فارسی: توسعه، توسعهدهنده)
امیدوارم این یادداشت که به مناسبت روز برنامه نویس نوشتهایم، کمک کرده باشد کمی با بچههای برنامهنویس، به خصوص از نوع طاقچهایَش بیشتر آشنا شوید. داکریم!