
اینکه برنامه نویس Junior (مبتدی، ساده، جوان) باشید، Mid-Level (متوسط، سطح میانی) یا Senior (حرفهای، ارشد، پیر، کارکشته) صرفاً به سابقۀ برنامهنویسیِ شما وابسته نیست. یک جونیور دولوپر حتی ممکن است از یک برنامهنویس سنیور مسنتر ولی همچنان جونیور باشد. مهارتِ توسعهدهنده است او را در یکی از این سه دسته قرار میدهد. البته این بدان معنا نیست که سنیور دولوپر هر چیزی بلد است؛ بلکه به این معناست که یک توسعهدهندۀ سنیور مهارتِ بسیار بیشتری از برنامهنویسانِ جونیور و میانی دارد. ولی آیا به جزء فاصلۀ مهارتی تفاوتهای دیگری هم وجود دارد؟
سطحِ دانش
بدیهی است که توسعهدهندۀ سنیور اطلاعاتِ بسیار بیشتری از توسعهدهندگان جونیور و Mid-Level دارد. او به خوبی با الگوهای طراحی، معماری، تستِ خودکار، مباحثِ پرفرمنس، امنیت و … آشناست. البته صرفِ یادگیری اینها کسی سنیور دولوپر نمیشود. دانش فقط یکی از فاکتورها است. مواردِ مهمتری هم هست که در ادامه خواهید خواند.
کدنویسی
علی رغمِ تصورِ مردم، کدنویسی راهی برای ارتباط با رایانه نیست بلکه راهی برای ارتباط با انسانها و دستور دادن به کامپیوتر است. هر کدی در هر زبانی بالاخره موقعِ کامپایل به کدهایِ زبانِ ماشین یعنی صفر و یک تبدیل میشود.
کد باید طوری نوشته شود که در آینده سایرِ توسعهدهندهها به راحتی آن را بفهمد. یعنی یک تیمِ ناآشنا باید راحت کد را باز کند و شروع به توسعۀ فیچرهای جدید و اشکالزداییِ برنامه کند. اینجاست که بین جونیور و سینیور تفاوتِ بزرگی دیده میشود.
در این مقایسه برنامهنویسِ متوسط را کنار میگذارم چون این گروه در منطقۀ خاکستری قرار میگیرد و به لحاظِ مهارتهای کدنویسی بین جونیور و سینیور قرار دارند. Mid-Levelها بیشتر به برنامهنویسانِ سینیور نزدیک هستند تا جنیور چون لااقل یکبار چرخۀ کامل توسعه (development cycle ) را تجربه کردهاند. این افراد مرتکبِ اشتباهات و درسهای زیادی از آن گرفتهاند.
نشانۀ جونیورها
جونیور دولوپرها بیتجربه هستند. برخی از آنها تازه فارغالتحصیل شده و تازه مشغولِ انجامِ یک کارِ تمام وقت شدهاند. تفکرِ اغلبِ برنامهنویسان جونیور کدنویسی حداقلی است. یعنی همین یک چیزی کار کند بس است. از نظرِ آنها فرقی بین نرمافزارِ خوب و بد وجود ندارد. همین که برنامه کار کند کافی است.
نوشتنِ کدهای سرراست و ساده کارِ سختی است که اغلبِ جونیورها از انجام آن سرباز میزنند. توسعهدهندگان جونیور بیشتر تمایل دارند کدهای تک خطی و Abstraction Layer های پیچیده تعریف کنند تا به دیگران تواناییِ خود را (من میگویم جونیور بودن خود را) ثابت کنند. سنیورها میدانند که چنین شیوۀ کدنویسی اشتباه است. جونیورها فقط به کامپیوتر اهمیت میدهند و کمتر به جنبههای انسانی توجه دارند.
نشانۀ سینیورها
وقتی به کدِ توسعهدهندگان سنیور نگاه میکنید از خودتان میپرسید که آیا همۀ کدها همین است؟ پس بقیهاش کو؟ برنامهنویسان سینیور کدها را سرراست و به طرز احمقانهای ساده مینویسند. این یکی از مهمترین خصوصیاتِ برنامهنویسان حرفهای است. سنیورها از قاعدۀ KISS پیروری میکنند. Keep It simple, Stupid یعنی به طرزِ احمقانهای کد را ساده نگه دار.
تفکرِ سینیورها نسبت به جونیورها فرق میکند. آنها با تفکرِ نگهداری و توسعهپذیر بودن پروژه کدنویسی میکنند. ارزشِ افراد نزد سینیورها بیشتر از کامپیوتر است؛ و این فرای تفکرِ جونیورها است که فقط به کامپیوتر و ماستمالی کردن کد فکر میکنند.
چیزی فراتر از مهارتهای کدنویسی
علاوه بر مهارتهای کدنویسی فاکتورهای دیگری نیز وجود دارد که نشان میدهد شما جزو کدام دسته از برنامهنویسها هستید.
جونیور دولوپرها به طورِ کلی سادهترین تسکها یا تسکهایی که کمترین تاثیر را روی سیستم بر جای میگذارند انجام میدهند و هیچگاه به معماریِ برنامه دست نمیزنند. برنامهنویسان سطحِ میانی نیز اغلب راهکارِ جدیدی ارائه نمیدهند بلکه بیشتر روی انجامِ تسکهایی در محدودۀ تواناییِ خود تمرکز میکنند. تفاوتِ این گروه با برنامهنویسان جونیور این است که مادامی که وظایفِ محوله در چارچوب مهارتشان باشد چندان نیازی به نظارت روی کارشان نیست.
برنامهنویسان ارشد (Senior) بهتنهایی میتوانند کلِ سیستم را در هر سطحی توسعه دهند. این بدان معنا نیست که سینیورها هیچ سوالی ندارند. همۀ برنامهنویسها هر روز با سوالاتِ زیادی مواجه میشوند و این یک چیزِ طبیعی است. اما تفاوتِ سنیورها با برنامهنویسان ردهپایین در این است که میدانند چگونه سوال بپرسند و چگونه این سوالات را به جواب برسانند.
برنامهنویسان میانی تنها زمانی میتوانند سوالاتِ درست بپرسند که با وظایفِ روزانۀ آنها ارتباط داشته باشد و سوال در چارچوبِ دانش و سطحِ مهارتشان باشد ولی برای کارهایی خارج از حیطۀ مهارتی نیازمندِ راهنمایی هستند. از توسعهدهندگان جونیور نباید انتظارِ سوالات مناسب داشت. آنها به خاطرِ کمتجربگی به کمکِ برنامهنویسان باتجربهتر نیازمندند.
ترفیعِ درجه
همۀ ما دوست داریم برنامهنویسان بهتری شویم. ولی برای صعود به جایگاهِ بالاتر به چه چیزهایی نیاز داریم؟
حرکت از جونیور به میانی
برنامهنویسان جونیور به خاطرِ کمتجربگی دستکم باید چندبار کل چرخۀ توسعه را طی کنند. این کار شما را با چالشهای مختلفی درگیر کرده و یاد میدهد که چگونه در آینده گرفتارشان نشوید. یاد بگیرید کدها را ساده بنویسید. هنگامِ کدنویسی به افرادی فکر کنید که قرار است کدِ شما را بخوانند. طوری بنویسید که همۀ افراد به سادگی درک کنند. در مورد دیباگ بیشتر مطالعه کنید. اشکالزدایی بهترین روش برای درکِ فرایندهاست. همچنین با best practice ها، معماری، پرفرمنس، امنیت و … آشنا شوید. تفاوتِ اصلی برنامهنویسان جونیور و Mid-Level سطحِ دانشِ آنهاست. سعی کنید با مطالعه و تمرین دانشِ لازم برای تبدیل شدن به یک برنامهنویسِ میانی را کسب کنید.
حرکت از میانی به سینیور
تبدیل شدن از یک توسعۀدهندۀ میانی به یک برنامهنویسِ سنیور نسبت به تبدیل شدن از یک جونیور دولوپر به یک توسعهدهندۀ میانی سختتر است. تعدادی از دولوپرها در تمامِ دورانِ کاری در همان سطحِ میانی باقی میمانند. برای تبدیل شدن به یک برنامهنویسِ سنیور باید روی تسکهایی کار کنید که هیچکس جوابش را نمیداند. شما باید بیشتر از آنچه لازم است یاد بگیرید.
به عنوانِ یک برنامهنویسِ سینیور به توسعهدهندگانِ کمتجربه کمک کنید. فراموش نکنید وقتی یک توسعهدهندۀ مبتدی با مشکلی برخورد کرده و از همه جا درمانده شده شما کلیدِ نجات او هستید. احتمالاً این را هم میدانید که توسعهدهندگان سینیور به استکِ (Stack) مورد استفاده در شرکت تسلطِ کامل دارند. بنابراین برای تبدیل شدن به یک برنامهنویسِ سنیور به چیزی بیشتر از کدنویسی نیاز دارید. شما باید با برنامهها، تکنولوژیها و ابزارهایی که در شرکت از آن استفاده میشود تسلطِ کامل داشته باشید.
نتیجهگیری
تفاوتِ برنامهنویسان جونیور،میانی و سنیور تنها در سابقۀ کاری آنها خلاصه نمیشود. اما با خیالِ راحت میتوان گفت که سینیور دولوپرها مهارتی به مراتب بیشتر از برنامهنویسان جونیور و متوسط دارند. البته دانش به تنهایی کافی نیست. برنامهنویسانِ سنیور کدها را سادهتر نوشته و تفکر متفاوتی از جونیورها دارند. این موضوع فقط به مهارتِ آنها برنمیگردد؛ بلکه در چگونه سوال پرسیدن و پیگیری مشکلاتشان نیز هویداست.
برای ارتقاء از یک جونیور به یک برنامهنویسِ میانی باید روی سادهنوشتن کدها تمرکز کنید و چندین بار چرخۀ توسعۀ نرمافزار را طی کنید. برای ارتقاء از یک توسعهدهندۀ میانی به یک برنامهنویسِ سینیور باید چیزی بیشتر از وظایف روتینی که انجام میدهید انجام دهید. شما باید آمادگی لازم برای مواجهه با تسکهای دشوار و اضافه کردن تکنولوژیها و ابزارهای جدید به استک خود داشته باشید. مسئولیت دیگرِ سینیور دولوپرها کمک به برنامهنویسانِ کمتجربه است.
این مطلب را با نقلِ قول جالبی از مارتین فولر به پایان میبرم:
هر ابلهی میتواند کدی بنویسد که کامپیوتر آن را درک کند. برنامهنویسانِ خوب کدی مینویسند که انسانها بتوانند درک کنند.
مارتین فولر
منبع: Medium
2 دیدگاه
مطلب خیلی خوبی بود و به عنوان راهنما برای بعضی از شاگردهام ارسال کردم فقط موضوعی که توی این پست دیدم و توجه من رو جلب کرد استراتژی شما برای استفاده از سیستم تگ هست، تو مطلب شما تگ ها به کاربرها کمکی برای پیدا کردن مطالب مرتبط نمی کنن و هر تگ رو که باز میکنی با یک صفحه آرشیو تک مقاله ای بی ارزش روبرو میشی.
به هرحال متشکر از مطلب خوبتون.
با سلام
در صورتی که بر روی هر برچسب کلیک کنید اگر با مقاله های دیگه برچسب یکسانی داشته باشه مقاله های دیگر نمایش داده میشه