کارگران مشغول کار اند

script

Simplicity is the ultimate sophistication

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

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

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


عنوان:‌ Leonardo da Vinci

Known Bugs

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

مهر سال ۹۸ بود که قرار شد وب سایت شرکت رو راه‌ اندازی کنیم. از اونجایی که از php فراری و توهم زدن هر پروژه ای از صفر ما رو در بر گرفته بود شروع کردیم کار رو با CSharp انجام دادن. نیازمندی اولیه معرفی شرکت و اعضاش و یک بخش اخبار و مقالات بود.

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

- اتصال ادمین پنل به SSO

- آپلود یک/چند عکس برای پست

- WYSIWUG

- آپلود ویدیو برای پست

- دو/چند زبانه بودن وبسایت

- پست های جدا برای زبان های مختلف

- ترجمه یک پست، در زبان دیگه

- نمایش بعضی پست ها با یه الگوریتم خاص توی صفحه اصلی

- افزودن لینک آپارات و نمایش اون مثل بقیه عکس ها/ویدیو ها

 

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

میخوام بگم که، اگر خیلی از اون مشکلات رو بجای توی ذهنم توی ترلو مینوشتم و همه میدیدیم که سایت چنین مشکلاتی رو داره، و حالا میخوایم اینها رو رها کنیم و بریم روی پروژه جدید، شاید جدی تر گرفته میشد، شاید از نظر یک نفر دیگه اولویتش بیشتر از پروژه جدید بود، و دچار این تلنبار نمیشدیم. چیزی که هست اینه که بهرحال مشکلاتی که برنامه نویس میدونه توی پروژه اش وجود داره باید حل بشه، حالا یا در برابر کار جدید مقاومت میکنه و اول اون مشکلات رو حل میکنه، یا در آینده مجبور به context switching میشه.

انتخابش با خودمونه. و من امروز یاد گرفتم بهتره کدوم رو انتخاب کنم.

Designed By Erfan Powered by Bayan