ضد برنامه‌نویس

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

۱- فلانی خدای C است و همه برنامه‌هایش را با C می‌نویسد حتی برنامه‌های تحت وبش را —> هر کاری ابزار مخصوص به خودش را لازم دارد. هیچ لزومی ندارد برای کوبیدن یک میخ ۲ سانتی از یک پتک ۲۰ کیلویی استفاده شود.

۲- یک برنامه نوشته ۱۰ هزار خط —> ملاک خوب بودن یک برنامه تعداد خطوط آن نیست بلکه چیزهایی مثل کاربردی بودن، بهینه بودن و قابل نگهداری بودن آن است.

۳- خودش رفته SQL Server نوشته —> اولاً که اختراع مجدد چیزهایی که از قبل اختراع شده‌اند یک دوباره‌کاری و اشتباه بزرگ است. ثانیاً این که MS SQL Server در یک DVD جا می‌شود، می‌توان آن را از بازار رضا به قیمت ۴ هزار تومان خرید و این که محصول شرکت فحش‌خوری مثل مایکروسافت است دلیل نمی‌شود که هر کسی که از گرد راه رسید بتواند SQL Server بنویسد. به قولی کار هر بز نیست خرمن کوفتن، گاو نر می‌خواهد و مرد کهن.

۴-  چون خدای برنامه‌نویسی است از هیچ library و کتابخانه‌ای استفاده نمی‌کند و خودش utilityهای مورد نیازش را می‌نویسد —> بنا به تجربه چندین و چند باره این مورد معمولاً نشانه دو چیز بیشتر نیست: یا طرف سواد استفاده و config کردن libraryهای موجود را ندارد یا آنقدر در بی‌خبری به سر می‌برد که نمی‌داند چنین چیزهایی هم وجود دارند.

۵- همه موضوعات و تکنولوژی‌های برنامه‌نویسی را بلد است از php بگیر تا ASP.NET، از C#‎ بگیر تا Java از Socket Programming بگیر تا jQuery —> معمولاً همه کاره هیچ کاره است.

۶- فلانی خدای برنامه‌نویسی امنیت موبایل است —> قدرت او در شناخت و کار با مفاهیم امنیت موبایل است نه مهندسی نرم‌افزار. در واقع او همچنان یک مهندس مثلا مخابرات است و کارش ربطی به نرم‌افزار ندارد.

۷- خدای C#‎ است —> ممکن است فقط C#‎ بلد باشد و به هیچ یک از مفاهیم مهندسی نرم‌افزار آشنا نباشد. مهم‌تر این که C#‎ و دیگر زبان‌های برنامه‌نویسی ابزاری هستند جهت رسیدن به اهداف مهندسی نرم‌افزار و الا به تنهایی هیچ کاربردی ندارند.

۸- آنقدر همه چیزهای برنامه‌نویسی را خوب یاد گرفته که حالا دیگر اشباع شده و تغییر شغل داده —> احتمالاً اشباع نشده بلکه آنقدر از شاخه‌ای به شاخه دیگر پریده که تجربه و سوادش سطحی شده و حالا به خاطر فرار از شکست، فیلد کاری‌اش را عوض کرده است.

۹- فلانی برنامه‌نویس فلان اداره عریض و طویل دولتی است —> ادارات دولتی معمولاً تیم برنامه‌نویسی درست و حسابی ندارند و کارشان را به شرکت‌های خصوصی می‌سپارند. معمولاً هم کار شرکت‌های دولتی در حد نگهداری و پشتیبانی است نه کارهای جدی برنامه‌نویسی.

۱۰- فلانی یک نرم‌افزار نوشته ۴۰ میلیون فروخته —> موفقیت‌های مالی لزوماً نشئت گرفته از کار برنامه‌نویسی خوب نیست. فروش خوب تابع فاکتورهای خیلی خیلی زیادی است.

۱۱- فلانی خدای FoxPro بوده—> یادش بخیر! الان به چه چیزی تسلط دارد؟ توی این ده پانزده سال فرصت نکرده خودش را به روز کند؟

۱۲- وقتی پای کامپیوتر می‌نشیند تا ساعت‌های متمادی بلند نمی‌شود —> زیاد کار کردن به معنای خوب کار کردن نیست.

۱۳-

تعدادی از افرادی که این طور مشکلات را به وجود می‌آورند معمولاً برنامه نویس یک حوزه خاص مثل Autocad، سخت‌افزارهای خاص منظوره، الگوریتم‌های محاسبات خاص ریاضی و… هستند. در واقع این طور اشخاص خبره سیستم‌های مالی اداری، پروتکل‌های مخابراتی، داشتن اطلاعات عمومی از یک حوزه خاص مثل بازار مسکن و… هستند. بعضی از آنها هم مهارتشان در راهبری شبکه‌های کامپیوتری، مدیریت IIS، SQL Server و… است. بعضی‌ها هم به خاطر مسائلی مثل زیر دچار این قبیل مشکلات می‌شوند:

۱- تحصیلات نامربوط،  مثلاً طرف مهندسی شیمی خوانده ولی سر از برنامه‌نویسی درآورده.
۲- پرستیژ کاری عنوان برنامه‌نویس برای خیلی‌ها
۳- یادگیری تکنولوژی‌ها و تکنیک‌های جدید از طریق پروژه‌های عملیاتی. بعضی از دوستان پروژه‌های عملیاتی را محلی برای تست چیزهایی می‌دانند که به تازگی یاد گرفته‌اند.
۴- نا آگاهی و به روز نبودن نسبت به تکنولوژی‌ها و روش‌های جدید.
۵- خودنمایی با استفاده از روش‌های پیچیده و غیر ضروری در تولید نرم‌افزار، تقریباً همان کاری که در فوتبال به آن شیرین‌کاری و حرکات نمایشی گفته می‌شود.
۶-

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

۱- به روز بودن نسبت به اخبار و تغییرات دنیای برنامه‌نویسی و نرم‌افزار
۲- مطالعه مداوم در زمینه برنامه‌نویسی
۳- آشنایی با مفاهیم مهندسی نرم‌افزار مثل اصول طراحی، software re-use، test، معماری نرم‌افزار و…
۴- آشنایی با متودولوژی‌های تولید نرم‌افزار
۵-

Comments

  1. ناشناس

    بيل گيتس هم رشته‌اش فيزيك بوده حتي تمامش هم نكرد
    بنابراين بر اساس رشته قضاوت نكنيد
    بر اساس تعداد ساعات مطالعه و كار انجام شده بايد قضاوت كرد و نه مدركي كه ابتدايي اصول را هم اكثرشون نمي‌دونند و در كار گير مي‌كنند

  2. Afshar Mohebbi

    ‫@Anonymous: زمانی که بیل گیتس فیزیک می‌خوند رشته کامپیوتر به گستردگی امروز وجود نداشت. اکثر کامپیوتری‌های اون موقع از رشته‌های برق، ریاضی یا فیزیک بودند. حتی خیلی از ابداعات مهم کامپیوتر مثل وب از دل پروژه‌های تحقیقاتی فیزیک بیرون آمده‌اند.

    اما الان با آن زمان فرق کرده. شما به شرکت‌های معاصرتر مثل گوگل نگاه کنید که بنیانگزارانش دکترای کامپیوتر داشته‌اند. به فهرست کارمندان برنامه‌نویس حال حاضر مایکروسافت هم اگر نگاهی بیندازید می‌بینید همه تحصیلات مرتبط با کامپیوتر داشته‌اند. مثلا مبدع تکنولوژی لینک در دات نتی یک دکترای کامپیوتر است.

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

  3. ali aghdam

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

  4. Afshar Mohebbi

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

  5. امیرلو

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

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *