نویسار

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

نویسار

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

نویسار

اینجا صرفا محلی برای یاداشتها و بیان تجربه های شخصی صاحب وبلاگ می باشد.

پیوندهای روزانه

4 مهارت مهم برای یک توسعه دهنده نرم افزار

جمعه, ۲۱ تیر ۱۳۹۲، ۰۶:۲۷ ب.ظ

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

بعضی ها از من به عنوان توصیه می پرسند که چگونه یک برنامه نویس بهتری باشم؟

در اغلب موارد، سوال کسی که می پرسد بر این پایه است که آیا آنها وقت خود را بر روی یک تکنولوژی یا یک زبان برنامه نویسی خاص در مقابل دیگر زبان برنامه نویسی سرمایه گذاری کنند یا خیر؟

مدتی است که به این فکر می کنم که مهمترین و بی پایان ترین مهارتهایی که یک توسعه دهنده نرم افزار باید داشته باشد، تا به آنها بهترین فرصت های شغلی را بدهد و آنها را تاثیر گذار کند، چیست؟

 

مهارت 1:  توانایی حل مساله

یادگیری چگونگی حل یک مساله بسیار مهم می باشد و برای یک توسعه دهنده نرم افزار این توانایی بسیار ضروری است.

توسعه نرم افزار 100% با حل مساله سر و کار دارد. "بدون مشکل، به توسعه دهنده نرم افزار هم نیازی نخواهد بود."

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

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

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

من دائما شکایت هایی رو از توسعه دهندگان درباره مصاحبه می شنوم که اینکار بسیار مشکل است چون مصاحبه کنندگان از توسعه دهندگان می خواهند که چند تا مساله مشکل رو حل کنند.

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

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

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

بریدن چوب پایه ای ترین مهارت یک نجار است، درست مثل توانایی حل مساله برای یک توسعه دهنده نرم افزار.

مهارت 2: آموزش خود

احتمالا در زندگی چیزی مهمتر از آموزش خود وجود ندارد.

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

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

در عوض شما باید این توانایی رو داشته باشید که بتونید سریعا تکنولوژی رو که برای کارتون بهش نیاز دارید رو در دستانتون داشته باشید.

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

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

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

اگر شما می توانید خودتون رو با تغییرات سریع بازار توسعه نرم افزار و تکنولوژی های وابسته به اون وفق بدهید، شما مهارتی رو خواهید داشت که همیشه مورد تقاضا خواهد بود.

 

مهارت 3: نامگذاری

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

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

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

"هر زمان که شما دارید کدنویسی می کنید، در واقع دارید چیزها رو نامگذاری می کنید."
 وقتی که شما کدی رو می خونید که خودتون یا یه نفر دیگه نوشته، شما بیشترین درک خود از کد رو توسط خواندن نام اشیاء درون کد بدست می آورید.

بعضی وقتا من می توانم با دقت، سطح مهارت یک برنامه نویس را با نگاه کردن به اینکه چطور متد ها، اشیاء، کلاس ها و متغییرها رو در کدهایی که نوشته، نام گذاری کرده پیش بینی کنم.

"برنامه نویسی که فاقد این توانایی است که درون کدها به مفاهیم و داده ها نام های خوب بدهد مثل یک مترجم لال است."

مهم نیست که شما چیزی رو می فهمید، اگر که نتونید اون رو توضیح بدهید، وقتی که یادتون رفت، دیگه رفته.

بهترین راه برای یادگیری این مهارت تمرین است. من اغلب، موقع خواندن کدها، چیزها رو دوباره نامگذاری می کنم تا بتونم اونها رو درک کنم.

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

من اینکارو وقتی که دارم کدها رو می خوانم انجام میدهم، نه حتی وقتی که تغییر منطقی در کدها داده ام. هر چی که بیشتر روی دادن نام های خوب روی اشیاء تمرکز می کنید، بیشتر پیشرفت می کنید.

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

 

مهارت 4: رابطه با افراد

من این رو به عنوان آخرین مهارت نام می برم اما شما در بسیاری از موارد می توانید این رو به عنوان اولین و مهمترین مهارت به شمار آورید.

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

تا زمانی که شما دارید تنهایی و برای خودتون کار می کنید، این دیگر افراد هستند که روی حرفه شما به عنوان یک توسعه دهنده نرم افزار تاثیر می گذارند.

رابطه با افراد چیزی بیشتر از تنها ناراحت نکردن افراد است. من همیشه به افراد معروف مثل Dale Carnegie در این زمینه مراجعه می کنم، خواندن کتاب ایشون “How to Win Friends and Influence People” برای موفقیت در رابطه با افراد بسیار مهم است.

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

البته که ما دوست داریم برای کارهامون علت منطقی داشته باشیم، اما حقیقت اینه که اکثر تصمیمات ما بیشتر احساسی هستند تا منطقی.

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

در جامعه برنامه نویسان فعال و درگیر باشید که این می تونه فوق العاده در حرفه شما موثر باشه.

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

انجام  موفقیت آمیز این کارها مستقیما بر روی توانایی شما در رابطه با افراد تاثیر خواهد گذاشت. (می خواهید یک میانبر سریع برای یادگیری رابطه با افراد بدونید؟ "خوش اخلاق باشد." ).

 

مهارت های عملی چی؟

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

البته این خیلی مهمه که شما در یک رشته خاص مهارت کار با چند تکنولوژی یا زبان را داشته باشید اما هیچ کدوم از اینها به اندازه این چهارتایی که من در لیست بالا آوردم نیستند.

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

 

با توجه به گفته های بالا، البته این مهمه که شما یک یا دو زبان برنامه نویسی رو بلد باشید و یک مجموعه ای از تخصص ها رو داشته باشید اما تا زمانی که شما تمرکز خودتون رو روی این چهار مهارت مهم گذاشته اید ، پس انشاالله که مشکلی نخواهید داشت :)

 

 


پ.ن : این مطلب ترجمه ای آزاد از این مطلب وبلاگ simpleProgrammer می باشد.

نظرات  (۸)

۱۲ مرداد ۹۷ ، ۱۳:۰۹ سیمین تابان
عالی بود مرسی
سلام ممنون وبلاگ خوبی دارید
خیلی مفید بود تشکر. موفق باشید.
khayli sepas , khyli vaght bud save kardeh budam in page ta alan khundamesh
man taze shoru kardam , hatman mad nazar daram va dobareh roju mikonam be in maharat ha bishtar dark khakam kard.
khyli Mamunam
۰۸ اسفند ۹۲ ، ۱۵:۱۷ مهرداد پاک نژاد
بسیار عالی بود از همه این روش ها استفده می کنم و خواهم کرد
با تشکر
۱۸ مرداد ۹۲ ، ۰۱:۳۵ سارا زکی زاده
مطالبتون بسیار عالی بود. دقیقا همون حرف هایی رو زدید که من مدتی است دارم با خودم مرور می کنم و تصوراتم در مورد یک برنامه نویس رو با توجه به اونا تغییر می دم.
یادم میاد روزی که برای مصاحبه کارآموزی رفتم ، کارفرما به من گفت چقدر پشت کار دارید؟؟ اون موقع با خودم فکر کردم شاید چون کارآموزیه و ممکنه خیلی به ما سخت بگیرند این سوالو پرسیدند..... ولی با گذشت زمانی نه چندان طولانی به این نتیجه رسیدم که یکی از خصوصیاتی که یک برنامه نویس باید داشته باشه " صـــــــــــبر "
هستش.
نقشی رو برای من بازی کرد که شاید اطلاعات فنی من هیچ وقت نتونند جای اونو بگیرند.

ممنونم
۱۰ مرداد ۹۲ ، ۰۱:۴۱ مهدی رافعی
خیلی خوب بود
استفاده کردم
۰۳ مرداد ۹۲ ، ۱۳:۱۱ میثم هوشمند
دقیقا به نکات خیلی خوبی اشاره کردید
خیلی خوب
دقیقا همینه؛ از یک بعد که به قضیه ی برنامه نویسی نگاه کنیم دقیقا همین موارد به چشم می خورد
چیزهای غیر فنی
چیزهایی که هیچ ارتباطی با زبان و تکنولوژی ندارند.
ممنون مطلب خوبی بود
در بلاگم باز نشر داده شد

ارسال نظر

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