تفاوت توسعه دهنده باهوش و عاقل

Senior and Junior Developer توسعه دهنده مبتدی و باتجربه
فهرست مطالب

مقدمه

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

بیشتر توسعه دهنده‌ها در زمینه کدنویسی باهوش هستند اما این باهوش بودن گاهی برای آنها یک نقطه ضعف است. 

عامل تجربه و عاقلانه عمل کردن در حین برنامه نویسی گاهی از بروز مشکل جلوگیری میکند. مهم این است که تشخیص بدهیم که کی کد نویسی کنیم و کی یک ویژگی را حذف کنیم تا از بروز مشکل جلوگیری کنیم.

دانستن اینکه چه زمانی سکوت کند، چه زمانی بجنگد و چه زمانی بدود و پنهان شود، به توسعه‌دهنده عاقل ( با تجربه) برتری نسبت به توسعه‌دهنده باهوش (تازه کار) می‌دهد.

 تفاوت بین باهوش و عاقل چیست؟

معمولا توسعه دهنده‌ها ۵۰ درصد وقت کار خود را صرف کدنویسی میکنند. (مطلبی در این مورد)

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

 پیشگیری بهتر از درمان است

انیشتین

یک فرد باهوش یک مشکل را حل می کند. یک فرد عاقل از آن اجتناب می کند.

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

معمولا توسعه دهنده‌های تازه کار شبیه به انسانی عمل میکنند که گمان میکند شاه کلید رفع مشکلات را دارد(مثل حسن کلید :-D). با دیدن هر مشکلی آن را به دید فرصت جدید برای کد نویسی میبینند.

در حالی که نوشتن کد همیشه باید آخرین گزینه باشد. زیرا هر خط کدی که اضافه میشود مسئولیت جدیدی به تیم توسعه اضافه میکند. با اضافه شدن کد جدید پیچیدگی کد پایه بیشتر میشود.

در کد کوتاهتر رفع مشکل زمان کمتری میبرد، اما کد بیشتر یعنی پیچیدگی بیشتر و یعنی رفع مشکل در زمان طولانی تر.

برنامه نویس باتجربه تا زمان مشخص شدن الزامات هیچ کدی نمی‌نویسد و هنگام کدنویسی فقط ویژگی‌های الزامی را به کد اضافه میکند، بدون هیچ اضافاتی، تمام!

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

این عامل تفاوت در خروجی را برجسته می‌کند، اما تفاوت بزرگتری بین توسعه دهنده تازه‌ کار (باهوش) و توسعه دهنده باتجربه (عاقل) وجود دارد و دانستن زمان نوشتن کد است.

سادگی در کدنویسی

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

توسعه دهنده مجرب به دنبال مفروضات هستند و الزامات را تأیید می‌کنند. مهم نیست که چقدر خوب کد نویسی میکنید اگر در خروجی کار اشتباهی انجام شود.

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

زمانی که باید گوش کنید، صحبت نکنید

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

توسعه دهندگان عاقل ( باتجربه) می‌دانند که در ایجاد نرم افزار متخصص هستند و کاربران در تجارت خود متخصص هستند. ایجاد نرم افزار یک همکاری بین متخصصان تجاری و فنی است.

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

اشتباه رایج زمانی رخ می‌دهد که توسعه دهندگان تازه کار به اندازه کافی الزامات را بخوانند تا مسیر شاد را درک کنند و آن را ایجاد کنند. بعداً، وقتی مسیر ناخوشایند و استثناها ظاهر می‌شوند، توسعه‌دهنده تازه کار مجبور است به تغییر کد ادامه دهد تا یکی پس از دیگری باگ را برطرف کند.

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

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

کار خودت را انجام بده

توسعه نرم افزار به یک تیم برای انجام آن نیاز دارد و این نیاز دارد که همه کار خود را انجام دهند. 

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

توسعه دهندگان عاقل مطمئن می شوند که افرادی که بخش‌های پروژه را مدیریت می کنند، این کار را انجام می دهند.

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

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

با واقعیت همسو باشد

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

توسعه دهندگان تازه کار با واقعیت مبارزه می‌کنند، توسعه دهندگان باتجربه با آن هماهنگ می‌شوند.

شما نمی‌توانید مشکلات، اشکالات و مشکلات را متوقف کنید، اما می‌توانید برای آنها آماده شوید و مطمئن شوید که آنها به فاجعه ختم می‌شوند. بلایای فنی نباید توسعه دهندگان را ناآماده گرفتار کند.

آموزش رایگان گیت git - جلسه پنجم - استفاده از تگ
آموزش رایگان گیت – جلسه چهارم

جلسه چهارم
آموزش کار با شاخه‌ها
در این جلسه قصد داریم که به شما مفهوم برنچ‌ها را آموزش دهیم و نحوه استفاده از آن و دستورات ضمیمه آن نظیر chekout و merge را آموزش دهیم.

ادامه مطلب »
ارسال رایگان

برای سفارشات بالای ۳ میلیون تومان

گارانتی ویژه

برای محصولات شرکت

مشاوره رایگان

در امور تخصصی