تقریباً تمامی کسانی که در حوزهی نرمافزار مشغول بکار هستند، برنامهنویسی (بعنوان یک شغل) را تجربه کردهاند. به جرِِأت میتونیم ادعا کنیم که موقعیت هر فرد در این رشته، رابطهی مستقیمی با مهارتها و تجربهی برنامهنویسی وی داره. بعد از برنامهنویسی، موقعیتهای شغلی مختلفی همانند تحلیلگر، طراح، معمارنرمافزار، مدیریت پروژه و … درپیشِ روی هر فرد قرار داره (البته بسته به دیدگاه هر سازمان، ممکنه نقشهای فوق دارای نامهای متفاوتی باشند).
در طی این حرکتِ رو بجلو، همیشه یک سؤال ذهن افراد را بخودش مشغول میکنه: “تا چه زمانی باید برنامهنویسی کنم؟“، “در حال حاضر تا چه حد باید از جزییات برنامهنویسی آگاه باشم؟“ و سؤالاتی از این دست.
اهمیت این سؤال زمانی آشکار میشه که بدونیم برنامهنویسی جزو یکی از سختترین مشاغل دنیا به حساب میآد. خستگی فکریِ ناشی از برنامهنویسی، چیزی فراتر از حدتصوره. شخصاً فکر میکنم هر فرد بصورت خوشبینانه حداکثر تا 10سال میتونه برنامهنویس باشه (کسی هست که عدد دیگهای پیشنهاد بده ؟). یه برنامهنویس در زمان کار باید تعاملات میان تمامی اجزای سیستم، بهمراه اثرجانبی هر تغییر برروی مؤلفههای سیستم (و خیلی پارامترهای دیگه) رو تماماً در کل یک روزِکاری در ذهنش آماده داشته باشه! (خصوصاً با این وضعیت فعلی نرمافزار در ایران که مستندسازی به نحو خندهداری صورت میگیره و هر فرد علاوه بر زیرسیستمهایی که مستقیماً بر عهدهی اون هستند، باید به جزییات زیرسیستمهای دیگه هم تا حدود زیادی وارد باشه!!!)
از بحث اصلی دور افتادم. خب، فرض کنید که شما طراح یک سیستم هستید، و یا یک معمار نرمافزار. جوابتون به این سؤال چیه؟ فکر میکنید که یک طراح تا چه حد میتونه طراحی خودش رو براساس مفاهیم و ایدههای انتزاعی انجام بده و تا چه حد باید به پلتفرم نهاییِ پیادهسازی آشنا باشه؟ مثلاً اگر فرض کنیم پلتفرم نهایی net. باشه، آیا فقط دونستن مفهوم remoting برایش کافیه؟ آیا لازمه خودش رو به دردسر بندازه و به جزییات برنامهنویسی و نحوهی عملکرد remoting هم آشنا بشه یا اینکه صرفاً براساس مفاهیمِ کلی هم میشه سیستم رو طراحی کرد؟
برای جلوگیری از طولانی شدن این پست، ادامهی بحث رو موکول میکنم به پست بعدی. و در ضمن، حالا که صورت مسأله رو بیان کردم، خوشحال میشم که نظرات شما رو هم بشنوم…
مربوط به موضوع های: مهندسی نرم افزار | بر چسب ها: موقعیت شغلی, برنامهنویس, تحلیلگر, طراح



شخصاً در یکی از شرکت های به قول خودشون نرم افزاری، مراحل تولی نرم افزارهاشون رو بررسی کردم. تمامی کارها (اعم از شناخت خواسته های سیستم، تحلیل، پیاده سازی و …) توسط یک نفر برنامه نویس انجام می شد و بقیه که شامل تقریباً 15 نفر بودن، برای بازاریابی و تست و پشتیبانی و غیره استفاده می شدن.
من تاحالا در شرکت های نرم افزاری که از نزدیک برخورد داشتم کار گروهی درست حسابی ندیدم. هیچکدوم مسائل مهندسی خواسته ها و مهندسی سیستم و در مجموع اصول مهندسی نرم افزارو رعایت نمی کردن.
به نظر من اگر هر برنامه نویس با توجه به تخصصی که داره یک کلاس از سیستم رو با استفاده از مستندات پیاده سازی کنه، خیلی از مشکلات رفع میشه و در نتیجه محصول بسیار با کیفیتی تحویل مشتری داده میشه.
ممنون فراسان. چند تا نکتهی اساسی رو اشاره کردی که هرکدوم واسه خودشون یه پست طولانی میخوان، مثلاً عدم بازدهی کارهایِ گروهی، مشخص نبودن جایگاهِ اصلی هر فرد در سازمان (معمولاً حیطهی وظایف و مسوؤلیتهای هر فرد کاملاً مشخص نیست)، کمتوجهی به تخصص و …
پس منتظر پست های بعدیت هستم، منم سعی میکنم در مورد این موارد بیشتر بنویسم.
چون توی چند شرکت نرم افزاری بودم و با چشم خودم دیدم.
[...] Sharpedia When a C# Developer Inspects the World « برنامهنویسی تا کجا؟ [...]
[...] اینکه دو نوشتهی قبلی من (برنامهنویسی تا کجا 1 و 2) قرار بود از دید یک فرد «فنی» به مشکلات بپردازه. بر طبق [...]