نشانه های یک برنامه نویس خوب

چهارشنبه 2 دی 1394

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

نشانه های یک برنامه نویس خوب

نشانه هایی که نشان می دهد شما یک برنامه نویس خوب هستید.

1. تمایل به امتحان کردن (تجربه شخصی داشتن)

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

نحوه کسب این ویژگی

آیا شما بیش از حد محتاط هستید؟ آیا  شما تنها زمانی راحتید، که در مرخصی به سر میبرید؟ تا بحال کسی به شما گفته که خیلی غیر فعال و سلطه جو هستید؟ برای کسب این ویژگی اگر جواب سوالات قبل مثبت بود،  برروی شخصیت خود کار کنید .لازم است برخی اوقات اجازه کاری را نداشته باشید(مثلا پروژه شما را محدود کرده باشند) ولی شما برای کسب نتایج دلخواه کمی فراتر برویدوچیزهای جدید را امتحانکنید.مسلما مدیر پروژه هم از دیدن اینکه به نتیجه رسیده اید نه تنها عصبانی نمیشود بلکه متوجه شجاعت شما خواهد شد.توجه داشته باشید : یک برنامه نویس که"راه حلهای عجیب و غریب و غیر واقعی " ارائه می دهد، همیشه یک برنامه نویس بد نیست.این ویژگی می تواند نشانه ای از تفکر خلاق کسی باشد که تایید و تصیح را برعهده میگیرد و از راه دیگری به طرح مورنظر میرسد.

2. عدم وابستگی عاطفی به کد و design

کد مثل دستمال کاغذی : زمانی که قابل استفاده باشد ،از آن استفاده میکنید و زمان طولانی آن را نگه نمیدارید و دور میریزید.به عنوان یک برنامه نویس خیلی به ما تاکید شده است که قابلیت استفاده مجدد از کدها بسیار مهم است.ولی به این معنا نیست که مثل بچه هایتان از آن مراقبت کنید.بنابراین اصرار به حفظ آنها نداشته باشید،اگر مورد استفاده بود آنها را به کار ببرید و اگر نبود کدهای جدید با روشهای جدید بنویسید. اگر از روشهایی که شما را گیج میکند ویا از آنها خیلی خوشتان نمی آیداستفاده نکنید وبجای آنها  از design pattern ها استفاده کنید .خود را ملزم کنید در تمام زمینه ها توانایی داشته باشید نه فقط در یک زمینه.                             

تکنیک دیگر: 1.حفظ کردن کدهای شخص دیگری  ؛2 . از بین رفتن یا نا فرجام ماندن  تهیه نسخه پشتیبان برحسب  اتفاق یا قصد، باعث میشود تا مجبور به دوباره نوشتن کدها میشود و این یک تجربه است.

3. مشتاق به درست کردن چیزی که به نظر درست نمیشود

برنامه نویس ،زیرساخت یک پروژه را ایجاد میکند.برای ایجاد زیرساخت لازم است تمام نیازمندیها شناخته شوند. ولی گاهی اوقات این نیازمندیها تغییر می کنند.برنامه نویس خوب قادر به تشخیص اساسی ترین چیزها  یک برنامه خواهد بود حتی اگر تحلیلگران آن را در نظر نگرفته باشند.این توانایی با خواندن کتابهایی که متولوژیهای مختلف را توضیح میدهند قابل کسب نیست.برنامه نویسان خوب متوجه ارزش کدها هستند.

نحوه کسب این ویژگی

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

در مرحله آخر باید به پروژه باز گردیدو کدهایتان را بخوانید و در باره اینکه هر قسمت چکار میکند فکر کنید. در این باز خوانی : باید برخی از کدها را مرتب کنید،دستورالعملها را یکجا قرار دهید،صفحه را به روزرسانی ، وکد HTMLتولید کنیدوCRUD را روی دیتابیس انجام دهید

هدف از،افزایش اهمیت دستورها:

کدی که همین کار را انجام میدهد، اما کوتاهتر و کارآمدتر است.

کدی که همین کار را انجام میدهد، اما بجای استفاده از ابداعات شخصی خود از مناسبترین "wheel" ها در پلت فرم ها استفاده کنید.

کدی که همین کار را انجام میدهد ،اما اصلاح نیازهای مشابه  آسانتر است کدی که همین کار را انجام میدهد اما  خواندن ودرک آن راحت باشد.

4. جستجو و پیدا کردن مسائل نامفهوم

برنامه نویسان باید از همه علوم مختلف در کارخود استفاده کنند و از آنها feed back  بگیرند تا ذهنیات خود را وسیع کنند. آنها باید از همه چیز اطلاع داشته باشند و از آنها برای رفع نیازهای برنامه نویسی استفاده کنند. از علم زیست شناسی الگوریتم ژنتیک را بیاموزند و از علم هواشناسی تئوری cheos را فرا بگیرند و روشهایی برای حل مسائل ریاضی  ومسائل تبدیل فوریه پیدا کند.هم اکنون زیست شناسان با  استفاده از علم کامپیوتر زنتیک  و DNA موجودات زنده را شبیه سازی میکنند و هواشناسان با برنامه های نوشته شده شرایط جوی و آب وها را پیشبینی میکنند. برنامه نویسان وقتی به چیز تازه ای برمیخورند که نسبت به آن آشنایی ندارند و درباره آنها چیزی نمیدانند باید از ابزارهایی مثل اینترنت و سایتهای گوگل و ویکیپدیا  برای جستجو و پیدا کردن موضوع مورد نظر کمک میگیرند.

.5 اجبار به یادگیری

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

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

نشانه هایی که نشان میدهد شما یک برنامه نویس فوق العاده هستید

1. صبر بی پایان داشتن

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

2. کمال گرایی بیش از اندازه

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

علائم :1.کوتاه کردن تاریخ تحویل ، 2.فاکتور گیری مجدد اساسی در زمان پایانی پروژه ،3. تمایل به پاداش ،رتقا ودادن سهام به تشخیص مصلحت

3. درک دانشنامهای مربوط به پلت فرم ها

اغلب برنامه نویسان وقت خود را روی زبانهایی که در حال منسوخ شدن می باشند ،نمی گذارند . بیشتر آنها از پلت فرم ها ی به اشتراک گذاشته شده ومتن باز استفاده می کنند. بهترین برنامه نویسان اصرار به استفاده از  Oxford  را دارند: اگر برنامه نویسان زبان لاتین و ریاضیات را یاد بگیرند ،میتواند همه ابزاری که نیاز به آنها دارند را بدست بیاورند. برنامه نویسان از کتابخانه های استاندارد مثل کتابخنه های C استفاده  کنند و داکیومنت پروژه را مرحله به مرحله آماده کنند.برنامه نویسان به سرعت در حال شناسایی اشکالات ناشی ازهماهنگ سازی در الگوریتم TCP's Sliding Window هستند.

چگونگی بدست آوردن این ویژگی

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

تلاش برای حل مشکلات ،مستلزم پیدا کردن خود مشکل میباشد .

نوشتن درباره چگونگی حل مسائل دشوار 

بازتاب چگونگی حل مشکلات دشوار

4. فکر کردن به کدها

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

چطور این ویژگی ها را باید کسب کرد؟

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

5. ایجاد ابزار خاص خود

علائم

سرور ساخت خود را ، خودکار تعیین کرده است

معیار یا پروفایلر تخصصی خود را نوشته است

حفظ یک پروژه منبع باز در GitHub

حداقل یکبار روش جدیدی برای  LISP ابداع کند

می داند  هر دامنه  با زبان خاصی طراحی شده است و برای یک مترجم نوشته شده .

گسترش DE/Editor با custom macros.

مشخصه هایی فراتر از یک برنامه نویس خوب

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

1. بی تفاوتی نسبت به سلسله مراتب

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

2. برانگیخته شدن به وسیله شکست

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

3. بی تفاوت نسبت به شرایط
"ذهن محلی خصوصی است با ذهن میتوان بدترین جا را به بهشت و بهترین جا را به جهنم تصور کرد."

برنامه نویس باید به شرایط و محلی که در آن کار میکند خود را وفق بدهد تا در محیط کار آرامش داشته باشند و بی تفاوت به شرایط محیطی باشند تا محیط برای او آزار دهنده نباشد و بتواند به خوبی فکر کند.

4. تعهدات آنها را تحت تاثیر قرار نمیدهد

5. جایگزین کردن انگیزه به جای تعهد

بجای اینکه از کارمندان خود تعهد بگیرند باید به انها انگیزه دهند و برای آنها امکاناتی فراهم کنند تا برای ادامه کار انگیزه داشته باشند. شرکتها متشکلند از: 1. کاهش هزینه های معامله، و 2.خدمات پشتیبانی از مشتری.

6. هدایت در جهت تجربه خاص دیگران

بزرگترین چالش های برنامه نویسی هنوز ناشناخته است آنها نتوانسته اند کاملا مسائل P = NP را حل کنند و بیشتر شبیه این است که نمیداند چگونه آن را به مشتری نشان دهد .
 

ایمان مدائنی

نویسنده 1299 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید