به باورهای خود رحم نکنید: مجموعه‌ای از راه کارهای خودآزمایی برنامه نویسان

برخی از کسانی که تازه از دانشگاه از رشته ی نرم‌افزار فارغ التحصیل می‌شوند بر این باورند که یک برنامه نویس هستند و از فردا می‌توانند مشغول به کار شده و اصطلاحاً دست به کد شوند. خبر ناامیدوار کننده برای این دست تحصیل کرده های رشته ی نرم‌افزار این است که بازار کار برنامه نویسی به مراتب بی رحم تر از آنی است که تصور می شود! حرفه ی برنامه نویسی کاری است بسیار لذت بخش، درآمد ساز و در عین حال کاربردی اما در کنار این ویژگی‌ها، می بایست دشواری حرفه ی برنامه نویسی را هم افزود چرا که حساسیت این کار نسبت به خیلی از مهارت ها و رشته‌های دیگر بیشتر است (از معدود رشته‌هایی که اشتباه در آن مهلک تر از برنامه نویسی است شاید بتوان به علم پزشکی اشاره کرد که اشتباه مساوی است با مرگ!) در این مقاله قصد داریم به بیان راه کارهایی بپردازیم که از آن طریق، هم برنامه نویسان حرفه‌ای و نیمه حرفه‌ای و هم کسانی که علاقمند به فراگیری اصول برنامه نویسی هستند می توانند نرم افزارهای پایدارتری طراحی کرده و توسعه دهند که در نهایت تجربه ی کاربری خوب تری برای End User ها به ارمغان خواهد آورد. با سکان آکادمی همراه باشید.

خیلی از برنامه نویسان هستند که کدهای تمیزی می نویسند، الگوریتم ها را به خوبی پیاده‌سازی می کنند،‌ مفاهیم شیئ گرایی را می دانند، به برنامه نویسی سه لایه تسلط دارند اما غافل از اینکه کدهای خود را آن طور که باید و شاید تست کنند. این عدم تست کامل و جامع نرم افزار، منجر می‌گردد تا کاربران بالقوه ی خود را به تست کننده های نرم‌افزار مبدل ساخته و به جای آنکه خود به سردردهای شدید به خاطر کار نکردن نرم‌افزار دچار شویم، ایشان را روانه ی بیمارستان (و گاهی هم تیمارستان) می کنیم!

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

حال ممکن است این سؤال برای شما پیش بیاید که پس در اینجا نقش مهندس AQ یا Quality Assurance چیست؟ کاری که یک مهندس یا کارشناس کنترل کیفیت انجام می‌دهد این است که مثلاً برای فرم‌های وب سایت طراحی شده توسط شما یک بار عدد ۰ را وارد می‌کند و بار دیگر عدد ۹۹۹۹۹۹۹۹۹۹۹۹. گاهی هم به جای وارد کردن آدرس ایمیل، آدرسی همچون lkjfdapifkn;dajf d را وارد می کند. همین و بس! و این در حالی است که یک نرم‌افزار Enterprise یا تجاری که قرار است به درآمد زایی برسد نیاز به چیزی بیش از این حرف‌ها دارا است.

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

برای روشن‌تر شدن این مسأله مثالی در مورد نام کاربران می زنیم. فرض کنیم نرم افزاری نوشته‌ایم که در آن کاربران می بایست اسم خود را وارد کنند. به طور معمول، برنامه نویسان چنین پیش‌فرض هایی در مورد اسامی کاربران دارند:

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

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

- ماه های سال صرفاً ۳۰ یا ۳۱ روزه هستند.
- تعداد روزهای یک سال ۳۶۵ روز است.
- سروری که نرم‌افزار ما روی آن نصب است همواره بر اساس زمان GMT کار می کند.
- سروری که نرم‌افزار ما روی آن نصب هست، همواره مثل ساعت کار می کند!
- اگر هم‌ زمان سرور اشتباه باشد، این اختلاف ساعت صرفاً در حد ثانیه است.
- زمان سرور و زمان ست شده روی سیستم کاربر همواره یکسان هستند و ...

در واقع پیش فرض هایی که ما برنامه نویسان در مورد زمان داریم، گاهی اوقات کاملا اشتباه از آن درآمده و همین مسئله منجر می گردد تا کاربران اپلیکیشن، وب اپلیکیشن یا نرم افزار ما سر در گم شوند. به عنوان مثالی دیگر هم می‌توان جنسیت کاربران را مد نظر قرار داد. خیلی از برنامه نویسان بر این باورند که:

- کاربران یا مذکر هستند یا مونث.
- جنسیت صرفاً از روی بیولوژی یک فرد تعیین می شود.
- وقتی کاربری در حین ثبت نام جنسیت خود را تعیین کرد، این جنسیت دیگر تغییر نخواهد کرد!
- اگر هم جنسیت بخواهد تغییر کند، این تغییر جنسیت صرفاً از مذکر به مونث یا بالعکس خواهد بود.
- آدم بدون جنسیت نداریم و …

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

- مکان ها صرفاً دارای یک نام رسمی هستند.
- شهرها و کشورهای مختلف دنیا در تمامی زبان‌ها یک‌جور تلفظ می شوند.
- نام مکان های جغرافیایی با استفاده از استانداردهای زبان معیار همان کشور نوشته می شود.
- با کاراکترهای رایج هر رسم الخطی می‌توان نام مکان های جغرافیایی را نوشت.
- در هر شهری در ایران، صرفاً یک خیابان با نام «خیابان ولی عصر» وجود دارد و ...

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

نظر شما چیست؟ اگر به غیر از موارد فوق الذکر می توانید پیش فرض های اشتباه دیگری که برخی برنامه نویسان دارند را برشمارید، می توانید نظرات خود را با سایر کاربران به اشتراک بگذارید.

0


بهزاد مرادی

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






از طریق این فرم، می توانید بدون ثبت نام نظر دهید و یا اگر قبلا ثبت نام کرده اید، با ورود ناحیه ی کاربری می توانید علاوه بر ثبت نظر، به مدیریت نظرات خود نیز بپردازید.
(فیلد اجباری)
(فیلد اجباری)
(فیلد اجباری)
(فیلد اجباری)