وقتی بحث پیچیدگی کد پیش میآید، اغلب برنامهنویسان میگویند که میخواهند کدهای سادهای بنویسند اما محدودیت زمان و یا مسائلی مانند دانش ناکافی، امکان تکمیل کار و سپس سادهسازی را به آنها نمیدهد! البته درست است که برنامهنویسانی که زمان پروژه را رو به پایان میبینند و فشار آن را حس میکنند، کدهای پیچیدهتری مینویسند اما در واقع این محدودیت زمان نیست که آنها را مجبور به این کار میکند؛ به جای این که برنامهنویسی بگوید «محدودیت زمان اجازهٔ سادهنویسی کدها را نمیدهد»، میتواند بگوید «من آنقدر سرعت عمل ندارم که بتوانم در این زمان محدود، کدهای سادهای بنویسم». یعنی هر چقدر سرعت شما در برنامهنویسی بیشتر باشد، محدودیت زمانی تأثیر کمتری بر کیفیت کدهای شما خواهد داشت. به طور کلی، آنچه در این مقاله قصد داریم مورد بررسی قرار دهیم این است که به چه شکل و با اتخاذ چه استراتژیهایی میتوانیم به برنامهنویس سریعتری تبدیل شویم.
حالا سوال این است که چطور سرعت کدنویسی خود را افزایش دهیم؟ آیا این یک مهارت ذاتی است که افرادی با آن به دنیا آمدهاند؟ آیا برای سریعتر شدن باید «باهوشتر» از دیگران بود؟ یا مسئله چیز دیگری است؟ در پاسخ به این سوال بایستی گفت که خیر! کدنویسی سریع نه یک ویژگی ذاتی است و نه یک قدرت جادویی؛ در واقع فقط یک قانون ساده وجود دارد که اگر به آن عمل کنید، مسئله به طور کامل حل خواهد شد:
هر وقت متوجه شدید که کدنویسی را متوقف کرده و مشغول فکر کردن شدهاید، بدانید که یک جای کار میلنگد!
شاید باور کردنش سخت باشد، اما این قانونی است که واقعاً وجود دارد. تصور کنید جلوی کامپیوتر یا لپتاپ خود نشستهاید و ادیتور را باز کردهاید اما تحت هیچ عنوان سریع کد نمینویسید. آیا سرعت کم شما به خاطر این است که مهارت تایپ سریع ندارید؟ خیلی بعید است که عامل کاهش بهرهوری یک برنامهنویس نوع تایپ کردن باشد. در واقع مکثهایی که بین تایپ کردن دارید، سرعت شما را کاهش میدهد. اما در طی این مکثها، برنامهنویس مشغول چه کاری است؟ واضح است، کار را متوقف کرده و فکر میکند. شاید در مورد یک مشکل، شاید در مورد یک ابزار، شاید در مورد یک ایمیل و شاید در مورد هر چیز دیگری. اما هر وقت چنین اتفاقی میافتد، یعنی این که قطعاً مشکلی وجود دارد. در اینجا مسئلۀ ما، خودِ «فکر کردن» نیست، بلکه فکر کردن نشانۀ وجود مشکلی است. پس مشکل اصلی چیست؟ این همان چیزی است که در ادامه در مورد موارد احتمالیاش توضیح خواهیم داد.
درک ناکافی
رایجترین دلیلی که باعث میشود در حین کدنویسی به فکر فرو برویم، این است که بخشی از سینتکس زبان برنامهنویسی را به طور کامل درک نکردهایم؛ این مسئله از راههای مختلفی میتواند ایجاد شود. بسیاری از توسعهدهندگان به یکباره وارد یک زبان برنامهنویسی جدید میشوند بدون اینکه بدانند علائمی مانند ()، []، {}، +، *، % و غیره واقعاً چه معنایی در آن زبان جدید دارند. بعضی از توسعهدهندگان هم درک صحیحی از نحوۀ کار سیستم ندارند. بعضی دیگر در مورد نوع یک متغییر و مسائلی از این دست اطلاعات کافی ندارند که همهٔ اینها منجر به فکر فرو رفتن میشوند.
موضوع درک مسئله باید حل شود زیرا وقتی چیزی را به درستی درک کنیم، دیگر مجبور نیستیم برای فکر کردن به آن، کار خود را متوقف کنیم. بنابراین اگر مشغول کار بودید و یکباره متوجه شدید که به جای کار کردن دارید فکر میکنید، سعی نکیند صرفاً فکر کردن را کنار بگذارید چرا که این پاک کردن صورت مسئله است بلکه شما باید به دنبال مشکل اصلی بگردید و سپس آن را برای همیشه برطرف کیند و در اینجا هم مشکل اصلی، همان موضوع درک نشدۀ شما است.
دنبال منابعی برای درک این موضوع باشید تا آن را بفهمید. حتی هنگامی که مشغول نوشتن مقالهای هستید ممکن است ناخودآگاه کار را متوقف کرده و به این فکر کنید که «آیا کاربری این مقاله را خواهد خواند؟» شاید شما امکان بررسی تجربهٔکاربری را نداشته باشید اما میتوانید طرح کلی کار خود را به چند نفر نشان داده و نظر آنها را جویا شوید زیرا با نشستن و فکر کردن، دردی دوا نمیشود بلکه باید وارد عمل شد.
نیاز به رسم طرح کلی
گاهی اوقات دلیل غرق شدن در افکار این است که قدرت نگاه داشتن جنبههای مختلف کار را در ذهن خود نداریم. ممکن است موضوعات مختلفی به طرزی پیچیده با کار ما در ارتباط باشند و نتوانیم همهٔ آنها را یکجا در ذهن خود نگاه داریم؛ در چنین مواردی بهتر است به جای درگیر کردن ذهن خود، طرح کلی کار و مسائل مرتبط با آن را رسم کنید -یا بنویسید- سپس طرح خود را جلوی چشمتان بگذارید و دیگر نگران نگه داشتن همه مسائل در ذهن خود نباشید.
ناتوانی در شروع کردن
گاهی اوقات مشکل این است که «نمیدانیم از کجا شروع کنیم!» سادهترین راهحل این مشکل این است که شروع به نوشتن کدهایی کنید که همین الان میتوانید بنویسید. بخشی از مسئله که کاملا درک کردهاید را در نظر گرفته و شروع به نوشتن راهحلی برای همان بخش کنید. حتی اگر راهحل آن بخش فقط نوشن یک تابع ساده یا یک کلاس کماهمیت باشد.
معمولاً سادهترین بخش برای شروع کدنویسی، هستۀ اپلیکیشن است؛ مثلاً اگر قرار است یک اپلیکشین یوتیوب را بنویسید، بهتر است با ویدئو پلیر شروع کنید و در ادامه، به هر کاری به عنوان یک فرآیند ادامهدار تحویل محصول نگاه کنید. کدی بنویسید که از همان مراحل اول، یک محصول باشد و زیاد هم مهم نیست که این محصول اولیه خیلی ساده و یا حتی احمقانه به نظر برسد. در مثال فوق، ویدئو پلیر بدون هیچ رابطکاربری دیگری، خود یک محصول محسوب میشود که میتواند کار مفیدی انجام دهد (یعنی ویدئو را اجرا کند). سپس میتوان این محصول اولیه را مرحلهبهمرحله به محصول کاملتری تبدیل کرد.
اما اگر باز هم مطمئن نیستید این کد هستهای را چطور بنویسید، نگران نباشید. نوشتن را با کدهایی آغاز کنید که از ضرورت وجود آنها در برنامۀ خود مطمئنید. به طور کلی، هنگامی که قسمتی از یک مسئله حل شود، حل کردن بقیه آن آسانتر خواهد شد. گاهی اوقات حل یک مسئله، مثل بالا رفتن از یک پلکان است. وقتی مسئله را در یک پله حل میکنید، راهحل پله بعدی خودبهخود آشکار میشود. پس ابتدا بخشی از برنامه را بنویسید که برای نوشتن آن کمترین نیاز را به فکر کردن دارید.
از قلم انداختن یک مرحله
یکی دیگر از دلایل فکر کردن، از قلم انداختن یکی از مراحل در فرآیند توسعهٔ نرمافزار است. به عنوان مثال، فرض کنیم قصد داریم کلاسی تحت عنوان دوچرخه نوشته و از روی آن یک آبجکت یا شیٔ ایجاد کنیم. دوچرخه از چرخ، پدال و بدنه تشکیل شده است. پس باید تکتک این ویژگیها را در کلاس خود در نظر بگیریم.
از طرف دیگر، اگر قبل از ایجاد کلاس دوچرخه، کلاس چرخ را ایجاد کنید، ممکن است ذهن شما درگیر این شود که چطور باید از کلاس چرخ در کلاس دوچرخه استفاده کنید. راهحل این مشکل این است که کلاس دوچرخه را تا جایی پیش ببرید که نیاز به کلاس چرخ احساس شود. سپس کلاس چرخ را ایجاد نموده و آن را تا جایی پیش ببرید که نیاز فوری شما را در کلاس دوچرخه برطرف کند. سپس دوباره به سراغ کلاس دوچرخه رفته و روی آن کار کنید تا زمانی که به یکی دیگر از اجزاء آن نیاز پیدا کنید.
درست مانند بخش قبلی که در مورد نحوهٔ شروع کار صحبت کردیم، در این مورد هم باید به سراغ بخشی از مسئله بروید که برای حل آن نیاز به فکر کردن ندارید و میتوانید بلافاصله آن را حل کنید. اما دقت داشته باشید که هیچ یک از مراحل مورد نیاز برای تکمیل محصول را از قلم نیندازید، زیرا در این صورت محصول کاملی نخواهید داشت.
مشکلات جسمی
اگر گرسنه باشید، این باعث میشود که شروع به فکر کردن کنید. البته نه این که لزوماً در مورد گرسنگی و یا غذا فکر کنید. منظور این است که اگر گرسنه باشید نمیتوانید روی کدنویسی متمرکز شوید. اگر بیمار باشید، نیاز به خواب داشته باشید و یا هر مشکل جسمی دیگری داشته باشید ممکن است در تمرکز شما اختلال ایجاد شود. البته مشکلات جسمی به اندازه مشکلات ناشی از «درک ناکافی» رایج نیستند. بنابراین اگر تمرکز ندارید اول مطمئن شوید که همه چیز را به خوبی درک کردهاید بعد به دنبال مشکلات جسمی احتمالی بگردید.
حواسپرتی
وقتی حواس شما با چیزی (مانند صدا) به اصطلاح پرت میشود، باید کمی فکر کنید تا بفهمید کجای کار بودید. راهحل این مشکل، نسبتاً ساده است. قبل از این که شروع به کدنویسی کنید، سعی کنید محیطی را فراهم کنید که در آن دچار حواسپرتی نشوید. بعضی افراد درب اتاق کار خود را میبندند، بعضی دیگر از هدفون استفاده میکنند تا صداهای خارجی را نشنوند، بعضی دیگر از هشدارهایی با مفهوم «مزاحم نشوید!» در مکان مناسب استفاده میکنند. ممکن است لازم باشد با رئیس یا همکاران خود -و یا اگر فریلنسر هستید، با اعضای خانوادهٔ خود- در مورد حذف عوامل مزاحم مشورت کنید.
عدم اعتماد به نفس
گاهی اوقات برنامهنویس به این دلیل غرق فکر کردن میشود که به خود و تصمیماتش اعتماد ندارد. راهحل این مسئله نیز مثل راهحلی است که در مورد مشکل «درک ناکافی» مطرح شد. در مورد هر چیزی که شک دارید آنقدر جستجو کنید و یاد بگیرید، که شکتان برطرف شده و بتوانید کد مورد نیاز را بنویسید.
اگر خود را به عنوان یک برنامهنویس باور ندارید، معنایش این است که موارد متعددی وجود دارد که درک صحیحی از آنها ندارید. یکبهیک به سراغ این موارد رفته و سعی کنید هر کدام را به طور کامل درک کنید و سپس به سراغ مسئلۀ بعدی بروید. البته نیاز به یادگیری، موضوعی است که در طی کدنویسی همواره وجود دارد و هیچ وقت دست از سر شما برنخواهد داشت، اما هرچه بیشتر و بیشتر یاد بگیرید، سریعتر شده و کمتروکمتر به آن فکر خواهید کرد.
دیدگاههای نادرست
بسیاری از مردم تصور میکنند که فکر کردن کاری است که افراد باهوش انجام میدهند؛ بنابراین آنها نیز برای این که تصمیمات هوشمندانهتری بگیرند، شروع به فکر کردن میکنند. اما این دیدگاه درستی نیست. اگر قرار بود آدمها صرفاً با فکر کردن به جایی برسند، الان همه باید انیشتین میبودند! آدمهای واقعاً باهوش مشاهده میکنند، تصمیم میگیرند و در نهایت یاد میگیرند. آنها یاد میگیرند و سپس از دانش خود برای حل مسائل پیشرو بهره میبرند. پس اگر واقعاً میخواهید باهوش باشید، سعی کنید از دانش خود در دنیای واقعی استفاده کنید، نه این که بنشینید و در افکار خود غرق شوید.
سخن پایانی
در این مقاله سعی کردیم عوامل اصلی کاهش سرعت کدنویسی را مورد بررسی قرار داده و راهکارهایی ارائه دهیم تا با عمل به آنها به یک برنامهنویس پرسرعت تبدیل شویم؛ اما همۀ این راهکارها وقتی به کار میآیند که بنشینیم و کد بنویسیم. اگر تمام روز مشغول خواندن ایمیلها و شرکت در جلسات متعدد بوده و از تمرکز کافی برخوردار نباشیم، اصلاً نرمافزاری تولید نخواهد شد!
اگر قبلا در بیان ثبت نام کرده اید لطفا ابتدا وارد شوید، در غیر این صورت می توانید ثبت نام کنید.