تمرکز روی کاربر یا تمرکز روی کد

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