ویژگی های یک برنامه نویس حرفه ای

ویژگی های یک برنامه نویس حرفه ای

برنامه نويسي حرفه اي

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

درست به مانند یک ساختمان که پیش از شروع کار، ابتدا نقشه آن طراحی می شود (مستندات و مدارک پروژه)، و سپس اسکلت های فلزی آن زده می شوند، در یک برنامه حرفه ای نیز، اوضاع دقیقا به همین صورت است. پروژه شما می بایست ابتدا مستندات و مدارکی داشته باشد و سپس ساختار آن (اسکلت فلزی) طراحی شود.

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

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

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

برخی دیگر به طور اتفاقی برنامه نویسان حرفه ای می شوند. مثلا شخصی یک برنامه کوچک برای کمک در محل کار خود می نویسد و همکارانش به او می گویند: "اوه این عالی است، شما می توانید برنامه بنویسید! شما اکنون برنامه نویس ما هستید!"

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

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

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

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

اولین کار من در دانشگاه

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

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

بین "توانایی برنامه نویسی" و "برنامه نویس حرفه ای" بودن فاصله زیادی وجود دارد. 8 سال طول کشید تا من از یک برنامه نویس مبتدی برای خود، به برنامه نویس از راه دور شرکت Lokasoft تبدیل شدم. سپس 10 سال دیگر برنامه نویسی برای Lokasoft، من را به یک حرفه ای تبدیل کرد – و هنوز هم در حال یادگیری هستم.

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

معنای "برنامه نویس حرفه ای"

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

نیاز به کمک یا مشاوره دارید؟ با شماره 77647948-021 تماس بگیرید. ما آماده پاسخگویی هستیم!

قابل اعتماد بودن

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

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

کار تیمی

آیا واقعاً با هم تیمی های خود همکاری خواهید کرد؟ آیا به نفع تیم خود و نه فقط به نفع خودتان می توانید کار کنید؟ آیا می توانید به تیم خود برای همکاری اعتماد کنید؟ آیا می توانید سهم خود را از کار انجام دهید و به تیم خود برای انجام بقیه اعتماد کنید؟ و آیا می توانید خود و یا زیر دستان خود را برای انجام پروژه، مدیریت کنید؟

رهبری

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

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

ارتباطات

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

ارتباط با مشتری، برای کمک به او و نیز دریافت بازخورد، بسیار اهمیت دارد. از مشتری خود بپرسید که آیا مشخصات و جزییاتی که به شما ارائه می دهد واقعا برای رساندن پروژه به هدفی که در ذهن او است کافی است؟

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

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

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

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

اساساً شما نیاز دارید که علاقه واقعی به حرفه خود داشته باشید و به طور گسترده مطالعه کنید تا بدانید چه چیزی در حرفه شما وجود دارد و سپس در چه زمینه هایی باید عمیقاً مطالعه کنید. شما همچنین باید بپذیرید که حتی (یا باید بگویم "به خصوص") بهترین برنامه نویسان هنوز در حال یادگیری هستند.

کاهش ریسک

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

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

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

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

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

مسئولیت پذیری و پاسخگویی

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

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


همانطور که می بینید، شکاف بزرگی بین «کد نویسی» و «برنامه نویسی حرفه ای» وجود دارد. بیشتر دوره های برنامه نویسي بر روی جنبه های برنامه نویسی تمرکز می کنند و مهارت های حرفه ای معمولا نادیده گرفته می شوند و یا اصلا پوشش داده نمی شوند. ما مرتبا این مهارت‌ها را به همکاران جدید خود آموزش می‌دهم، آن هایی که نیاز به «آموزش مهارت‌های حرفه‌ای» دارند.

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

اصول یک برنامه حرفه ای

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

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

  • بخش ورود فاکتورها

  • بخش جستجو در فاکتورها

  • بخش نمایش فاکتورهای ثبت شده

  • بخش اطلاعات آماری کل فاکتورهای ثبت شده، نظیر مبلغ کل، فاکتورهای پرداخت نشده، فاکتورهای پرداخت شده.

  • بخش مشاهده مشتریان با امکان مشاهده فاکتورهای آنها

  • بخش ثبت اطلاعات مشتریان

  • بخش جستجو در مشتریان

همانطور که مشاهده می شود، این پروژه به 7 بخش تقسیم شده است که هر بخش وظیفه خاصی را انجام می دهد.

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

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

به این برنامه نویسی، اصطلاحا برنامه نویسی شی گرا یا Object Oriented Programming نیز اطلاق می شود و هدف آن، تنها نزدیک تر کردن دنیای برنامه نویسی با اشیایی است که در بیرون از محیط برنامه وجود دارند (به عنوان مثال فاکتورها و یا مشتریان)

هنوز نظری ثبت نشده است.

یک نظر بگذارید

کد امنیتی: