بهزاد مرادی

وجه اشتراک ورزش و کدنویسی: انجام اصولی هر دو دشواره!

بهزاد مرادی مدرس، کپی‌رایتر و دولوپر

این محتوا بدون نظارت تیم سکان آکادمی تولید شده و صرفاً نظرات شخصی بهزاد مرادی می‌باشد.

پیش از این در مقاله‌ای تحت عنوان «درس‌هایی که دولوپرها می‌توانند از باشگاه بدنسازی بگیرند!» به یکسری نکات اشاره کردم که به نظرم می‌تونه به موفقیت دولوپرها کمک کنه که از طریق لینک زیر در دسترس هست:

https://sokanacademy.com/blog/6179/post

اما چند روز پیش در باشگاه تجربه‌ای کسب کردم که برایم خیلی گرانبها بود و اون هم چیزی نیست جز اینکه اگر بخواهیم در حین ورزش حرکات رو درست و اصولی انجام بدیم، هم فشار بیشتری بهمون وارد می‌شه و هم مقدار وزنهٔ کمتری رو می‌تونیم بلند کنیم که بلافاصله به ذهنم رسید که این اصل در کدنویسی هم می‌تونه مصداق عینی پیدا کنه!

پشت بازو طناب
توی باشگاه داشتم ۵۰ کیلو پشت بازو طناب می‌زدم که وقتی مربی دید، بهم تذکر داد که حرکت اشتباهه و من رو زد کنار و درستش رو بهم نشون داد. ازش تشکر کردم و شروع کردم طبق گایدلاین مربی ادامهٔ سِت رو درست زدن اما در کمال ناباوری دیدم که وقتی حرکت درست رو می‌زنم، چنان فشار عجیبی بهم وارد می‌شه که تحت هیچ عنوان نمی‌تونم ۵۰ کیلو رو بلند کنم و مجبور شدم وزنه‌ها رو تا ۳۵ کیلو کاهش بدم.

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

کدنویسی اصولی کار هرکسی نیست!
به نظرم (که می‌تونه نظرم کاملاً اشتباه باشه) همچون ورزش (مثلاً بدنسازی) که اگر بخواهیم اصولی وزنه بزنیم هم به دردسر می‌افتیم و هم بهمون فشار می‌یاد، در کدنویسی هم کار درست و اصولی سخته و بعید به نظر می‌رسه که هرکسی از عهده‌اش بربیاد. اجازه بدید برای روشن‌تر شدن این مطلب، یک مثال از دنیای واقعی بزنم.

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

هر دو دولوپر اپلیکیشن مذکور رو می‌نویسن و خروجی در کل قابل‌قبول هست و End User از تجربهٔ کار با هر دو اپلیکیشن راضی هست؛ در واقع، ظاهر قضیه اصلاً نشون نمی‌ده که پشتش چه خبره اما وقتی که به بررسی سورس‌کد نوشته شده توسط بهزاد و سهند می‌پردازیم، تازه پرده برداشته می‌شه!

نگاهی به فرایند توسعهٔ نرم‌افزار بهزاد
بهزاد بلده کد بزنه اما از اون بالا شروع می‌کنه به نوشتن الی آخر و تقریباً می‌شه گفت که چون چیزی از MVC ،OOP و Design Pattern نمی‌دونه، خیلی هم سریع کد می‌زنه و شاید در کل زمان کمتری نسبت به یک دولوپر باتجربه برای توسعهٔ اپلیکیشن اختصاص بده و در کل، همچون بدنسازی که حرکت اشتباه می‌زنه اما در عین حال می‌تونه وزنهٔ بیشتری بلند کنه، سختی کمتری می‌شه و کد بیشتری هم می‌تونه بزنه.

نگاهی به فرایند توسعهٔ نرم‌افزار سهند
در مقابل، سهند پس از تحلیل نرم‌افزار، وب اپلیکیشن‌اش رو بر پایهٔ معماری سه‌لایهٔ مدل، ویو و کنترلر (MVC) می‌گذاره و به شکل دیوانه‌واری از شیئ‌گرایی در کدنویسی استفاده می‌کنه به طوری که نسبت به قانون DRY یا Don`t Repeat Yourself معتاد شده. همچنین با آشنایی با دیزاین پترن‌های مختلف، می‌دونه که کجا باید از کدوم الگوی طراحی استفاده کنه اما این کار سهند یک مشکل (البته در ظاهر) داره و اون هم اینکه رعایت تمامی این موارد سخته (دقیقاً مثل پشت بازو طناب) و مستلزم صرف زمان بیشتری نسبت به یک دولوپری است که از بالا شروع می‌کنه به کدنویسی الی آخر.

اگرچه نیازی به توضیح در مورد نتیجهٔ کار دو دولوپر فوق‌الذکر نیست، اما بد نیست به این نکته اشاره کنیم که Maintenance (توسعه و نگهداری سورس‌کد) پروژهٔ بهزاد باعث می‌شه آدم رَبِش رو یاد کنه به خصوص اگر دولوپری دیگری بخواد این کار رو بکنه اما در مقابل، درسته که سهند در حین کدنویسی از یکسو بیشتر سختی کشیده و از سوی دیگر سرعت پیشرفتش پایین آمده، اما در Long Term (بلندمدت) موفقیت از آنِ سهند هست و خواه خودش، خواه هر دولوپر دیگری که بخواد پروژه رو پیش ببره، تکلیفش با خودش روشن هست.

درس اخلاقی
برخی فرهنگ‌ها هستن که در اون‌ها کمیت بیش از کیفیت حائز اهمیته. مثلاً یادمه وقتی که کلاس سوم ابتدایی بودم، یک معلم داشتیم به اسم خانم نباتی که به عنوان کاردستی گفت که همه‌مون از این چرخ‌هایی که قدیمی‌ها روی چاه می‌گذاشتن تا از داخل چاه آب بکشن بیرون درست کنیم.

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

مثال در زمینهٔ کمیت و کیفیت کم نیست. مثلاً یادم هست از روزی که عقل‌برس شدم، همیشه و همه‌جا می‌گفتن یک صلوات بلند بفرست و مثلاً اگر در مدرسه کوتاه صلوات می‌فرستادیم، مجبور به تکرار صلوات می‌شدیم و یک بار آرزو به دلم موند که یکی بیاد بگه زیرلب و حتی توی دلت صلوات بفرست، اما از تَه دل باشه!

مثال در این زمینه زیاد هست که از اون جمله می‌شه به دوران مدرسه اشاره کرد که هرکسی که گُنده‌تر بود، مبصر می‌شد غافل از اینکه شاید یک بچه‌ٔ ریزه‌میزه بود که مهارت لیدرشیپ داشت و بهتر می‌تونه دیگر بچه‌ها رو با خودش همراه کنه یا اینکه وقتی انشاء می‌نوشتیم، مجبور بودیم که حداقل دو صفحه باشه (کمیت) در صورتی که شاید یک بچه می‌تونست یک پاراگراف یا حتی یک جمله (کیفیت) بنویسه که کار همون دو صفحه رو بکنه.

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

ممنون که وقت گذاشتید. جای نظر، انتقاد و پیشنهاد شما در بخش کامنتینگ است.

ایدهٔ خود را در سکان‌پلاس بنویسید!

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
حسین قربانی
حسین قربانی
۱۳۹۷/۰۴/۱۱
آقای مرادی عزیز
سلام
دم شما گرم با این مقاله خوب و ارزشمندتون
امیدوارم تنتون سالم باشه و دور بازهای بالا و شکم سیکس پکی داشته باشید😁
در مورد اصولی کار کردم هم نباید دید کوتاه مدت داشت، درسته منتها بخشی از اصول به درد کوتاه مدت هم می‌خوره، مثلاً در نوشتن کامنت، اگر پروژه از یک حدی بزرگتر باشه، خود برنامه‌نویسش هم یادش نمی‌آد چی به چی بوده.
علاوه بر اینکه اصولی نوشتن (کلا داشتن یک قانون در کار) در کار گروهی بیشتر به چشم میاد، همیشه که آدم تنها و تکی برنامه‌نویسی نمی‌کنه که. والا🤓
موفق باشید
بهنام صباغی
بهنام صباغیتوسعه‌دهنده c++ (دیتا ویژوال و nosql)
۱۳۹۷/۰۲/۲۷
اکثریت قبول میشند حتی اگر اشتباه کنند .
این رو بارها باهاش مواجه شدم من بهترین شاگرد ریاضی کلاس بودم سال اول دبیرستان معلم یه سوال ساده داده بود .
تمامی اعداد بین فلان عدد و فلان عدد را در مجموعه اعداد حقیقی بنویسید .
من نوشتم نمیشه بینهایت عدد بین اینهاست .
بعد امتحان چون خیلی تعجب کرده بودم از بقیه پرسیدم و فهمیدم که همه فکر کردند منظورش اعداد حسابی هست و نوشتند یک مجموعه چند عضوی .
وقتی شاگرد اول (کسی که همه درسهاش نمرش معمولا بیست بود ) فهمید مخش منهدم شد . هفته بعد جوابها اومد همه نمره رو گرفته بودند و این برام عجیب بود وقتی معلم رسید به برگه من گفت : فقط صباغی فهمیده بود نمیشه نوشت و بقیه همه اشتباه کرده بودند فکر کردند اعداد حسابی رو میخوام و خودمم حواسم نبوده میخواستم بنویسم اعداد حسابی ولی من نمره رو به همه دادم چون همه اشتباه کرده بودند .

و این گونه بود که فهمیدم وقتی داری اشتباه میکنی باید دسته جمعی اشتباه کنی تا دیگه کار اشتباهت عواقب نداشته باشه .

این معلم کسی هست که نمره میانترم من رو داد 20 ولی من دو تا اشتباه کوچیک داشتم و با خودکار قرمز درستش رو نوشته بود و بهم نمرش رو داده بود شاید بتونم بگم این یکی از بزرگ ترین خیانت هایی بود که میشد بهم کرد . یک استاد هم توی دانشگاه داشتیم که برنامه نویسی تدریس میکرد و واضح بخوام بگم بلد نبود اشتباه میگفت ساعت اول بهش تذکر میدادم میگفت نه من درست میگم وسط ساعت میرفت بالا اتاق اساتید از روی کتابی که از بچه ها قرض گرفته بود میخوند ساعت بعد میومد میگفت اره اشتباه شده .
اخر ترم هم برای این که دهن منو ببنده بهم داد 20 با این که تمرین حل نکرده بودم و نمره تمرین تاثیر مستقیم داشت ترم دوم هم برنامه نویسی پیشرفته رو با این که توی برگه خراب کردم (درگیر کاری بودم وقت نشد بخونم ) باز بهم داد 20 .

بعضی وقتا تنبیه نکردن میتونه بزرگ ترین خیانت باشه و به بقیه یاد بده که میتونند اشتباه کنند و تنبیه نشند ولی توی زندگی عادی اینطوری نیست برای همین که این همه ادم داریم با کسب و کار شکست خورده چون فکر میکنند اگر اشتباه کنند یکی هست نمره رو بهشون بده و بگه عیب نداره پیش میاد .
کاربر میهمان
کاربر میهمانمن یک کاربر مهمان هستم
۱۳۹۷/۰۲/۲۷
مقاله‌ی جالبی بود. خسته نباشید
راستش انتظار داشتم در عنوان مقاله به‌جای کلمه‌ی "اشتراک" از کلمه‌ی "تسمیه" استفاده میکردید ولیکن با خوندن مقاله متوجه شدم که در سکان‌پلاس روال کار بر اینه که مقاله‌ها یک‌مقدار عامیانه‌تر تالیف بشن!
امیـــرم
امیـــرم
۱۳۹۷/۰۲/۲۷
با تشکر از اینکه محتواهای یونیک و کاملا جدیدی رو بر اساس تفکر خودتون (که خیلی هم ارزشمند هست) تولید میکنید و در بصورت رایگان در سکان قرار میدید.
بله من هم فکر میکنم که یادگیری اصولی کمی سخت تر (!) هست و بیشتر باید روش وقت گذاشت اما تجربه ثابت کرده که اثر مهم تری هم داره (اصولا کسی که اصولی یاد میگیره و ارزش کار رو میدونه یجورایی توی مسیر خودش نان استاپ میشه)
ولی خب مهمترین چیز در این روزا ثبات هست و به قولی consistency is power