مدیران پروژه و به طور کلی کسانی کسبوکارهای حوزهٔ توسعهٔ نرمافزار را رهبری میکنند تمایل دارند تا همواره قیمت تمامشدهٔ محصول (که در اینجا نرمافزار است) را پایین نگاه دارند و یکی از چیزهایی که میتواند در این حوزه ایشان را یاری کند، به استخدام درآوردن دولوپرهایی است که علاوه بر تبحر، از سرعت کدنویسی بالایی هم برخورد باشند. در همین راستا، آنچه در این مقاله قصد داریم مورد بررسی قرار دهیم این است که به چه شکل و با اتخاذ چه استراتژیهایی میتوانیم به برنامهنویس سریعتری تبدیل شویم.
چهطور میتوانیم سرعت کدنویسی خود را افزایش دهیم؟
سؤالاتی همچون این پرسش که آیا این یک مهارت ذاتی است که برخی دولوپرها با آن به دنیا میآیند؟ و یا آیا برای سریعتر شدن باید باهوشتر بود؟ یک پاسخ صریح دارند و آن هم چیزی نیست جز خیر! کدنویسی سریع نَه یک ویژگی ذاتی است و نَه یک قدرت جادویی بلکه در حقیقت فقط یک قانون ساده وجود دارد که اگر به آن عمل کنید، مسئله به طور کامل حل خواهد شد که عبارت است از اینکه:
هر وقت متوجه شدید که کدنویسی را متوقف کرده و مشغول تفکر شدهاید، بدانید که یک جای کار میلنگد!
شاید باور کردنش سخت باشد، اما این قانونی است که واقعاً وجود دارد. تصور کنید پشت سیستم خود نشستهاید و ادیتور را باز کرده اما تحت هیچ عنوان سریع کد نمیزنید. آیا سرعت کم شما به خاطر این است که مهارت تایپ سریع ندارید؟ خیلی بعید است که عامل کاهش بهرهوری یک برنامهنویس سرعت تایپ باشد. در واقع، مکثهایی که بین تایپ کردن دارید، سرعت شما را کاهش میدهد؛ اما در طی این مکثها، برنامهنویس مشغول چه کاری است؟ واضح است، کار را متوقف کرده و فکر میکند (شاید در مورد یک مشکل، شاید در مورد یک ابزار، شاید در مورد یک ایمیل و شاید هم کلی مسائل دیگر) اما هر وقت چنین اتفاقی میافتد، این بدان معنا است که قطعاً مشکلی وجود دارد.
در اینجا مسئلۀ ما خودِ مقولهٔ «فکر کردن» نیست، بلکه فکر کردن نشانۀ وجود مشکلی است. حال این سؤال پیش میآید که پس مشکل اصلی چیست؟ که این همان چیزی است که در ادامه در مورد موارد احتمالیاش توضیح خواهیم داد.
درک ناکافی
یکی از رایجترین دلایلی که باعث میشود در حین کدنویسی به فکر فرو رویم، این است که کلیت زبان برنامهنویسی مورد استفاده را به طور کامل درک نکردهایم که این مسئله از راههای مختلفی میتواند ایجاد شود. بسیاری از توسعهدهندگان به یکباره وارد یک زبان برنامهنویسی جدید میشوند بدون اینکه بدانند کیوردها، علائم، فانکشنها و غیره واقعاً چه معنایی در آن زبان جدید دارند که مسائلی از این دست منجر به فکر فرو رفتن میشوند.
موضوع درک مسئله باید حل شود زیرا وقتی چیزی را به درستی درک کنیم، دیگر مجبور نیستیم برای فکر کردن به آن کار خود را متوقف کنیم؛ بنابراین اگر مشغول کار بودید و یکباره متوجه شدید که به جای کار کردن در حال تفکر هستید، سعی نکیند صرفاً فکر کردن را کنار بگذارید چرا که این پاک کردن صورت مسئله است؛ بلکه شما باید به دنبال مشکل اصلی بگردید و سپس آن را برای همیشه برطرف کنید و در اینجا هم مشکل اصلی، همان موضوع مبهمی است که شما را به تفکر وا داشته است.
نیاز به رسم طرح کلی
گاهی اوقات دلیل غرق شدن در افکار این است که قدرت نگاه داشتن جنبههای مختلف کار را در ذهن خود نداریم. ممکن است موضوعات مختلفی به طرزی پیچیده با کار ما در ارتباط باشند و نتوانیم همهٔ آنها را یکجا در ذهن خود نگاه داریم که در چنین مواردی بهتر است به جای درگیر کردن ذهن خود، طرح کلی کار و مسائل مرتبط با آن را رسم کنید -یا بنویسید- سپس طرح خود را جلوی چشمتان بگذارید و دیگر نگران نگاه داشتن همه مسائل در ذهن خود نباشید.
ناتوانی در شروع کردن
گاهی اوقات مشکل این است که «نمیدانیم از کجا شروع کنیم!» که سادهترین راهحل این مشکل این است که شروع به نوشتن کدهایی کنید که همین الان میتوانید بنویسید. بخشی از مسئله که کاملاً درک کردهاید را در نظر گرفته و شروع به نوشتن راهحلی برای همان بخش کنید (حتی اگر راهحل آن بخش فقط نوشن یک تابع ساده یا یک کلاس ابتدایی باشد.)
معمولاً سادهترین بخش برای شروع کدنویسی، هستۀ نرمافزار است؛ مثلاً اگر قرار است یک اپلیکشین اشتراک ویدیو توسعه دهید، بهتر است با ویدئو پلیر شروع کنید و در ادامه به هر کاری به عنوان یک فرآیند ادامهدار تحویل محصول نگاه کنید. کدی بنویسید که از همان مراحل اول یک محصول باشد و زیاد هم مهم نیست که این محصول اولیه خیلی ساده و یا حتی احمقانه به نظر برسد. در مثال فوق، ویدئو پلیر بدون هیچ رابط کاربری دیگری، خود یک محصول محسوب میشود که میتواند کار مفیدی انجام دهد (یعنی ویدئو را اجرا کند) سپس میتوان این محصول اولیه را مرحله به مرحله به محصول کاملتری تبدیل کرد.
اما اگر باز هم مطمئن نیستید این کد هستهای را چهطور بنویسید، نگران نباشید. نوشتن را با کدهایی آغاز کنید که از ضرورت وجود آنها در برنامۀ خود مطمئن هستید. به طور کلی، هنگامی که قسمتی از یک مسئله حل شود، حل کردن بقیهٔ آن آسانتر خواهد شد. گاهی اوقات حل یک مسئله، مثل بالا رفتن از یک پلکان است؛ وقتی مسئله را در یک پله حل میکنید، راهحل پلهٔ بعدی خودبهخود آشکار میشود. در یک کلام، ابتدا بخشی از برنامه را بنویسید که برای نوشتن آن کمترین نیاز را به فکر کردن دارید.
از قلم انداختن یک مرحله
یکی دیگر از دلایل فکر کردن، از قلم انداختن یکی از مراحل در فرآیند توسعهٔ نرمافزار است. به عنوان مثال، فرض کنیم قصد داریم کلاسی تحت عنوان Bike (دوچرخه) نوشته و از روی آن یک آبجکت (شییٔ) ایجاد کنیم. دوچرخه از چرخ، پدال و بدنه تشکیل شده است؛ پس باید تکتک این ویژگیها را در کلاس خود در نظر بگیریم.
از طرف دیگر، اگر قبل از ایجاد کلاس دوچرخه کلاس Wheel (چرخ) را ایجاد کنید، ممکن است ذهن شما درگیر این شود که چهطور باید از کلاس چرخ در کلاس دوچرخه استفاده کنید. راهحل این مشکل این است که کلاس دوچرخه را تا جایی پیش ببرید که نیاز به کلاس چرخ احساس شود؛ سپس کلاس چرخ را ایجاد نموده و آن را تا جایی پیش ببرید که نیاز فوری شما را در کلاس دوچرخه برطرف کند و در نهایت دوباره به سراغ کلاس دوچرخه رفته و روی آن کار کنید تا زمانی که به یکی دیگر از اجزاء آن نیاز پیدا کنید.
درست مانند بخش قبلی که در مورد نحوهٔ شروع کار صحبت کردیم، در این مورد هم باید به سراغ بخشی از مسئله بروید که برای حل آن نیاز به فکر کردن ندارید و میتوانید بلافاصله آن را حل کنید. اما دقت داشته باشید که هیچ یک از مراحل مورد نیاز برای تکمیل محصول را از قلم نیندازید، زیرا در این صورت محصول کاملی نخواهید داشت.
مشکلات جسمی
اگر گرسنه باشید، این باعث میشود که شروع به فکر کردن کنید. البته نه اینکه لزوماً در مورد گرسنگی و یا غذا فکر کنید؛ منظور این است که اگر گرسنه باشید، نمیتوانید روی کدنویسی متمرکز شوید و اگر بیمار باشید، نیاز به خواب داشته باشید و یا هر مشکل جسمی دیگری داشته باشید، ممکن است در تمرکز شما اختلال ایجاد شود (البته مشکلات جسمی به اندازهٔ مشکلات ناشی از «درک ناکافی» رایج نیستند؛ بنابراین اگر تمرکز ندارید، اول مطمئن شوید که همه چیز را به خوبی درک کردهاید بعد به دنبال مشکلات جسمی احتمالی بگردید.)
حواسپرتی
وقتی حواس شما با چیزی (مانند صدا) به اصطلاح پرت میشود، باید کمی فکر کنید تا بفهمید کجای کار بودید. راهحل این مشکل، نسبتاً ساده است. قبل از اینکه شروع به کدنویسی کنید، سعی کنید محیطی را فراهم کنید که در آن دچار حواسپرتی نشوید. بعضی افراد درب اتاق کار خود را میبندند، بعضی دیگر از هدفون استفاده میکنند تا صداهای خارجی را نشنوند و برخی هم از هشدارهایی با مفهوم «مزاحم نشوید!» استفاده میکنند (ممکن است لازم باشد با رئیس یا همکاران خود -و یا اگر فریلنسر هستید، با اعضای خانوادهٔ خود- در مورد حذف عوامل مزاحم مشورت کنید.)
نبود اعتماد به نفس
گاهی اوقات برنامهنویس به این دلیل غرق فکر کردن میشود که به خود و تصمیماتش اعتماد ندارد. راهحل این مسئله نیز مثل راهحلی است که در مورد مشکل «درک ناکافی» مطرح شد. در مورد هر چیزی که شک دارید، آنقدر جستجو کنید و یاد بگیرید تا شکتان برطرف شده و بتوانید کد مورد نیاز را بنویسید (در همین راستا، توصیه میکنیم به مقالهٔ Imposter Syndrome چیست و چگونه میتواند موفقیت حرفهای ما را تحتالشعاع قرار دهد؟ مراجعه نمایید.)
اگر خود را به عنوان یک برنامهنویس باور ندارید، معنایش این است که موارد متعددی وجود دارد که درک صحیحی از آنها ندارید؛ یک به یک به سراغ این موارد رفته و سعی کنید هر کدام را به طور کامل درک کنید و سپس به سراغ مسئلۀ بعدی بروید (البته نیاز به یادگیری، موضوعی است که در طی کدنویسی همواره وجود دارد و هیچ وقت دست از سر شما بر نخواهد داشت؛ اما هرچه بیشتر و بیشتر یاد بگیرید، سریعتر شده و کمتر به آن فکر خواهید کرد.)
دیدگاههای نادرست
بسیاری از مردم تصور میکنند که فکر کردن کاری است که افراد باهوش انجام میدهند؛ بنابراین آنها نیز برای اینکه تصمیمات هوشمندانهتری بگیرند، شروع به فکر کردن میکنند که چنین دیدگاهی نمیتواند همیشه درست باشد که اگر قرار بود آدمها صرفاً با فکر کردن به جایی برسند، الان همه باید اَنیشتین میبودند!
آدمهای واقعاً باهوش ابتدا مشاهده کرده، سپس تصمیم میگیرند و در نهایت یاد میگیرند که در همین راستا، توصیه میکنیم به مقالهٔ چگونه یاد میگیریم؟ (درآمدی بر پروسهٔ یادگیری) مراجعه نمایید. آنها یاد میگیرند و سپس از دانش خود برای حل مسائل پیشرو بهره میبرند. پس اگر واقعاً میخواهید باهوش باشید، سعی کنید از دانش خود در دنیای واقعی استفاده کنید، نه اینکه بنشینید و در افکار خود غرق شوید.
در این مقاله سعی کردیم عوامل اصلی کاهش سرعت کدنویسی را مورد بررسی قرار داده و راهکارهایی ارائه دهیم تا با عمل به آنها به یک برنامهنویس به قول معروف دست به کد و سریع تبدیل شویم. اساساً با آنچه در این مقاله مطرح شد موافقید یا مخالف؟ همچنین آیا خود را دولوپر سریعی میدانید؟ نظرات، دیدگاهها و تجربیات خود را با سایر کاربران سکان آکادمی به اشتراک بگذارید.