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