اگر هنگام شروع کار برنامه نویسی این موارد را میدانستم، احتمالا طی 6 سال تا چند برابر بازدهی بیشتری داشتم.
برنامه نویسی منوط به کد نویسی نیست
به نظر شما برنامه نویسی به چه معنی است؟
کد نوشتن؟
کد تمیز نوشتن؟
مسلما نه، این تنها بخشی از حقیقت است.
برنامه نویسی صرفا نوشتن کد نیست، برنامه نویسی توانایی حل مشکلات مربوط به کد نویسی است.
برای مشتریان شما مهم نیست که از چه تکنولوژی، زبان، فریمورک یا معماری استفاده میکنید. آنها فقط به یک چیز اهمیت میدهند و آن این است که آیا محصول شما مشکل آنها را حل میکند یا نه.
به همین دلیل هیچ کس اهمیتی نمیدهد که موتور جستجوی گوگل از چه فناوریهایی استفاده میکند. تا زمانی که افراد نتوانند اطلاعات نسبی در مورد آن پیدا کنند، از آن استفاده خواهند کرد.
این اولین چیزی است که کاش هنگام شروع برنامه نویسی میدانستم.
من وقت کمتری را به نوشتن "بهترین کد" میپردازم و بیشتر زمانم را برای حل مشکلات مشتری صرف خواهم کرد.
فقط برای نوشتن کد برنامه ننویسید، بلکه سعی داشته باشید مشکلات مشتری را با کد حل کنید.
مهارتهای ارتباطی مهمتر از مهارت کد زنی است
وقتی تازه کارم را شروع کردم، کمبود مهارتهای اجتماعی مشکل اصلی من نبود. اما وقتی جلوتر رفتم، به سمت برنامه نویس ارشد و مقام مدیریت، مهارت ارتباطی ضعیف تبدیل به پاشنه آشیلم شد.
هنگامی که شما با گروهی از افراد مختلف (مهندسان، طراحان و مدیران) روی محصولی کار میکنید، ارتباطات تنها چیزی است که شما را به یک تیم تبدیل میکند و به شما کمک میکند تا محصول را به طور موثرتری توسعه دهید.
بالعکس آن هم یعنی کمبود مهارتهای اجتماعی باعث کاهش زمان تولید محصول و بهرهوری کلی میشود.
نمونه زیر یک وضعیت واقعی است که ممکن است با آن روبه رو شوید:
تیم فنی به مدیر محصول خود میگوید که میخواهد یک ویژگی جدید اضافه کند و آن را در نسخه بعدی محصول قرار دهد. ضرورتی در کار نیست، آنها فقط میخواهند که محصول را مثل همیشه در اسرع وقت منتشر کنند.
مدیر محصول با شما تماس میگیرد و میگوید که چه چیزی را برای مرحله ساخت احتیاج دارید و از شما میپرسد، "برای تولید آن چقدر زمان نیاز است؟"
شما هم بعد از یک محاسبه تقریبی میگویید، "من به 20 ساعت زمان نیاز دارم."
مدیر محصول از پاسخ شما راضی نیست. او میخواهد در اسرع وقت آن را منتشر کند و به مدیریت نشان دهد که میتواند سریع نتایج را ارائه دهد (این یک وضعیت بسیار معمول است).
بنابراین او از شما میپرسد، "آیا میتوانید 10 ساعته آن را بسازید؟ ما در عرضه بعدی محصول واقعا به این ویژگی نیاز داریم!"
شما میدانید که اگر جاهایی را برش بزنید (بدون تست و اجرای یک کد نامرتب) از پس آن برمیایید. اما پس از آن باید دوباره آن را refactor کنید و 30 ساعت بیشتر طول میکشد. زیرا مهندسان دیگر نیز هنگام انتشار آن با کد کثیف شما کار میکنند و پس از refactoring باید کد آنها را با کد خودتان ادغام کنید.
بنابراین آنچه در ادامه اتفاق خواهد افتاد این است که اگر مهارتهای اجتماعی ضعیفی داشته باشید، نمیتوانید مدیر محصول را متقاعد کنید که در واقع برای ساخت این ویژگی به 20 ساعت زمان نیاز دارید.
چرا؟
طبق تجربه من، مدیران محصولات اغلب مهارتهای اجتماعی خوبی دارند. بنابراین اگر نتوانید آنها را متقاعد کنید refactoring که بعدا انجام میشود از صرف 20 ساعت حال حاضر بدتر است، او به راحتی به شما میگوید که "بعدا refactoring اشکالی ندارد" و کل تیم 30 ساعت اضافی برای این refactoring از دست میدهند (دقت کنید که زمان مورد نیاز برای رفع اشکالات غیر قابل پیش بینی را هم در نظر نگرفتهام).
اما اگر مهارت ارتباطی خوبی داشته باشید، به راحتی میتوانید او را در عکس این موضوع متقاعد کنید.
بنابراین مهارتهای اجتماعی و همچنین مهارتهای کد نویسی خود را بهبود ببخشید.
و یک حقیقت ساده را به خاطر بسپارید:
افراد با یکدیگر کار میکنند نه با ماشین.
وقفههای منظم به برنامه نویسی بهتر کمک میکند
به مدت 4 سال بود که بعد از کار همیشه احساس خستگی میکردم. به نوعی میتوانستم فقط برای چند ساعت معدودی به طور موثر کار کنم و بعد از آن انرژی زیادی نداشتم. تا اینکه با تکنیک پومودورو آشنا شدم.
این تکنیک کاملا ساده است. شما 25 دقیقه کار میکنید و 5 دقیقه استراحت میکنید.
روال کار به شرح زیر است:
8:00 – 8:25 کار
8:25 – 8:30 استراحت
8:30 – 8:55 کار
8:55 – 9:00 استراحت
من این را به مدت یک هفته امتحان کردم و از اینکه چقدر متمرکز و پرانرژی شدم تعجب کردم (دانش پشت پومودورو).
سپس فراتر رفتم و سیستم 52 + 17 را اجرا کردم و سطح بهره وری من 200 درصد افزایش یافت.
بنابراین اگر میخواهید حداکثر توانایی خود را داشته باشید، استراحت منظم را فراموش نکنید.
مهندسان 10X وجود ندارند
در ابتدای کار فکر میکردم که یک برنامه نویس عالی شخصی است که هزاران زبان برنامه نویسی، فریمورک و متد را بداند. اما سخت در اشتباه بودم.
چنین طرز فکری فقط باعث ایجاد سندرم خود ویرانگری در من شد. فکر میکردم که لیاقت موقعیت فعلی، حقوق و دستمزد خود را ندارم. بنابراین شروع کردم به دنبال توسعه دهندههای محبوب در توییتر، خواندن اخبار تکنولوژی و هزاران وبلاگ دیگر فقط برای اینکه خودم را متقاعد کنم لیاقت آنچه را که هستم دارم و احساس نزدیکی به عنوان "توسعه دهنده بزرگ" را داشته باشم.
این رفتار سالمی نبود، اما به من کمک کرد کشف کنم بسیاری از افرادی که آنها را دنبال میکردم (فکر میکردم مهندسان 10X هستند) در واقع چیزهای زیادی نمیدانند. آنها ممکن است بدانند چگونه برخی کارهای پیچیده را انجام دهند (این به دانش عمیق مختلف در چند زمینه نیاز دارد)، اما در عین حال برخی از کارهای ابتدایی را هم نمیدانند. دوست دارید بدانید که چگونه میتوان معماری پایگاه داده بسیار مقیاسپذیر را طراحی کرد اما نمیدانید چگونه یک عنصر را با CSS تراز کنید.
با تشکر فراوان از توسعه دهندگانی مانند دن آبراموف (خالق Redux) که کمک کردند سندرم خود ویرانگریم درمان شود و به من نشان دادند که ندانستن چیزی عیب نیست.
برنامه نویسی سخت نیست، به شرطی که بدانید چگونه یاد بگیرید
وقتی یادگیری جاوااسکریپت را شروع کردم، کار سختی بود. چون راه اشتباه را یاد گرفتم و بسیاری از نظریهها را بدون تمرین، بدون روال و بدون هدف نهایی میخواندم. به نظر من طبیعی بود که اینگونه یاد بگیرم. مدتها گذشت تا اینکه تمرین آگاهانه را کشف کردم. این یک نوع تمرین هدفمند و منظم در یادگیری است.
تفاوت بین تمرین عادی و آگاهانه این است که آگاهانه نیاز به توجه و تمرکز دارد و با هدف بهبود عملکرد انجام میشود.
بعد از اینکه یک تمرین آگاهانه را انجام دادم، متوجه شدم که در یادگیری جاوااسکریپت با چه سرعتی پیشرفت میکنم. همچنین دانش من نه برای 5 دقیقه بعد از آموزش، بلکه مدت هاست که ثابت میماند. پس از آن هدف نهایی را مشخص کردم، چرا جاواسکریپت یاد میگیرم و میفهمم که چه چیزهایی لازم است یاد بگیرم و چه چیزهایی را نباید بیاموزم.
بنابراین آنچه شما برای انجام یک تمرین آگاهانه نیاز دارید، در اینجا آوردهام:
- معلم: فعالیتهای تمرینی را برای کمک به شما در بهبود عملکرد فراهم میکند.
- انجام حداکثر تلاش: دائما از منطقه راحتی خود خارج شوید.
- اهداف کاملا مشخص: نه فقط "بهبود کلی".
- تمرکز داشتن: توجه کامل خود را به موضوع جلب کنید، بدون حواس پرتی.
- انجام تمرینات آگاهانه: هیچ تمرینی بدون تکرار به مهارت تبدیل نمیشود.
- پاسخ فوری به بازخوردها و اصلاح استراتژی.
وقتی یادگیری زبان، تکنولوژی، فریمورک جدید و هر چیز دیگری را شروع کردید، به این قوانین پایبند باشید تا در اسرع وقت نتایج بزرگی بگیرید.
"بهترین زبان برنامه نویسی" وجود ندارد
در جهان ما هیچ چیزی بهترین نیست. فرض کنید میخواهید ماشین بخرید. چگونه میتوان بهترین ماشین دنیا را انتخاب کرد؟ با سرعت؟ با ایمنی؟ با چه معیارهایی؟ این غیرممکن است.
ما فقط میتوانیم بهترین ماشین را در یک دسته خاص انتخاب کنیم. مثل ایمنترین ماشین یا بهترین ماشین آفرود.
اگر نگاه عمیقتری داشته باشیم، با دستهبندی برخی از مشکلات حل میشوند.
برای مثال
مشکل: ما بچه داریم و آنها را هر روز به مدرسه میبریم، ما میخواهیم فرزندانمان در راه مدرسه ایمن باشند.
راه حل: امنترین اتومبیل را بخرید.
مشکل: ما آخر هفتهها به پیکنیک میرویم، بنابراین به وسیله نقلیهای نیاز داریم که بتواند ما را به راحتی به مکانهایی برساند که دسترسی به آنها دشوار است.
راه حل: بهترین ماشین آفرود را بخرید.
در مورد زبانهای برنامه نویسی نیز همین است. برخی از زبانها و ابزارها در حل برخی مشکلات بهتر از بقیه عمل میکنند.
اگر میخواهیم یک وب سایت تعاملی ایجاد کنیم، جاوااسکریپت را انتخاب کنیم.
اگر میخواهیم با یادگیری ماشین یا هوش مصنوعی همراه شویم، پایتون را انتخاب کنیم.
به یاد داشته باشید بهترین زبان برنامه نویسی وجود ندارد. پس باید بگوییم بهترین زبان برنامه نویسی برای چه کاری. بنابراین ابتدا با یک مسئله شروع کنید، سپس برای حل آن زبان را انتخاب کنید.
سخن پایانی
امیدوارم از خواندن این مقاله لذت برده باشید. نظرات خود را در بخش زیر با ما در میان بگذارید.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید