برنامه نویس حرفه ای کیست؟

یکشنبه 6 دی 1394

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

برنامه نویس حرفه ای کیست؟

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

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

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

افراد دیگری دنبال گرفتن مدرک نیستند اما  برای رسیدن به هدف مایل اند بطور فعال با برنامه نویسان کار کنند.

برنامه نویسی حرفه ای به نام  Sarah George می گوید:

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

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

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

بین "کسی که قادر به برنامه نویسی است " و "یک برنامه نویس حرفه ای " کاملا فاصله وجود دارد.در آن زمان 15 سال طول کشیدتا از مبتدی بودن به برنامه نویس ماهری تبدیل شوم ، وپس از آن 10 سال دیگر تا از ماهربودن به حرفه ای بودن برسم و من هنوز هم بدنبال یادگیری هستم.

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

معنای "حرفه ای"

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

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

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

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

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

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

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

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

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

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

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

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

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

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

یکی دیگر از راههایی که معمولا برای مدیریت ریسک نادیده گرفته میشود این است که کدی را که به خوبی و سادگی مدل دادید و برای خود نگه دارید(خصوصی کنید) . اگر هر کسی بتواند کد شما را ببیند و بفهمد که شما چکارکرده اید ،شما از آن به بعد احتمال کمی در پیدا کردن باگ های برنامه دارید،و در این صورت هر برنامه نویس تازه واردی میتواند آنها را تغییر دهد.

خطر دیگری که وجود دارد این است که ذهنیات مشتری در حال تغییر است،و یا بیشتر مشخصاتی که مشتری در خاطر نداشت را خودمان تغییر بدهیم.

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

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

 

 

 

برنامه نویسان

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

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

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