PDA

View Full Version : چه کنیم برنامه نویس باشیم, نه کد نویس؟



me.enik
دوشنبه 06 شهریور 1391, 09:38 صبح
سلام.
احتمالا جای این تاپیک اینجا نبوده, ولی جای مناسب تری پیدا نکردم, ببخشید.

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

پیشاپیش ممنونم.

tdkhakpur
دوشنبه 06 شهریور 1391, 10:02 صبح
یعنی چی برنامه نویس باشیم و کد نویس نشیم؟
اصوالا برنامه نویس باید از تجزیه و تحلیل سیستمها هم اطلاع داشته باشه اما اگه کد نویس رو صرفا ادمی بدانیم که فقط کدهای برنامه رو مینویسه میشه گفت که تجزیه و تحلیل سیستمهاش خیلی ضیف هست.
در ضمن همون کد نویس بازم باید الگوریتم بدونه تا بتونه حلقه بسازه و یا اینگه واسه برنامه شرط بزاره به همین دلیل اگه به آخر قضیه نگاه کنید همون کد نویسی هم خودش یه پارچه برنامه نویس هست.

me.enik
دوشنبه 06 شهریور 1391, 11:45 صبح
اساتید خودشون اطلاعات کافی در این ضمینه دارند, اما در جواب به سوال شما :

آقای تاجیک در پست شماره 4, کاملا به این مسئله پرداخته اند.
پست (http://barnamenevis.org/showthread.php?358115-%D8%AF%D9%84%D9%81%DB%8C-%D8%A8%D9%87-%D8%AF%D8%B1%D8%AF-%D8%A2%DB%8C%D9%86%D8%AF%D9%87-%D9%85%DB%8C%D8%AE%D9%88%D8%B1%D9%87%D8%9F&p=1579585#post1579585)

سوال منم در یک جمله این هستش : چه کار کنیم تا تبدیل به یک برنامه نویس شویم؟ ::> نکته : برنامه نویس نامساوی کد نویس است.

tdkhakpur
دوشنبه 06 شهریور 1391, 13:33 عصر
اساتید خودشون اطلاعات کافی در این ضمینه دارند, اما در جواب به سوال شما :

آقای تاجیک در پست شماره 4, کاملا به این مسئله پرداخته اند.
پست (http://barnamenevis.org/showthread.php?358115-%D8%AF%D9%84%D9%81%DB%8C-%D8%A8%D9%87-%D8%AF%D8%B1%D8%AF-%D8%A2%DB%8C%D9%86%D8%AF%D9%87-%D9%85%DB%8C%D8%AE%D9%88%D8%B1%D9%87%D8%9F&p=1579585#post1579585)

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

me.enik
دوشنبه 06 شهریور 1391, 13:44 عصر
خالا توی اون پست اعلام شده که باید از جزئیات ریز هم سر در بیاریم صحیح نیست کسی که php کار میکنه اسمش خیاط که نیست خب اونم داره واسه خودش برنامه ریزی میکنه اما برای صفحات وب حالا این شخص چه احتیاجی به دانست thread یا جزئیات اون داره.

اونی که شما خواندید پست 3 بود, پس 4 را مطالعه فرمایید.

tdkhakpur
دوشنبه 06 شهریور 1391, 14:43 عصر
اونی که شما خواندید پست 3 بود, پس 4 را مطالعه فرمایید.
عجبا!!
چه فرقی داره اونجا کلی گویی شده ما هم کلی عرض کردیم خدمدتان.
در کل برنامه نویسی سطح داره نه اسم مصل برنامه نویسی سطح پایین که با اسمبلی و سی هم میشه نوشت و برنامه نویسی سطح بالاتر مثل دلفی و از اون بالاتر ویژال بیسیک و برو تا اخر که به php و .... غیره و ذالک ختم بشه.
بنابر این همه این شاخه ها یه نوع برنامه نویسی هستن اما با سطحوح مختلف.
حالا یکی میخاد چرخ رو از ابتدایش بسازه کسی جلوشون نگرفته میتونه بره سراغ برنامه نویسی سطح پایینتر.

me.enik
دوشنبه 06 شهریور 1391, 19:51 عصر
آقا شما از اون اولش نفهمیدید که من چی میخوام ... !
من چی کار دارم که مثال طرف چرخ رو اختراع کنه یا نکنه !؟

من دارم میام میگم, چی کار کنیم که برنامه نویس باشم, نه کد نویس !!؟
احتمالا این رو میدونید که برنامه نویس با کد نویس فرق داره دیگه.

tdkhakpur
دوشنبه 06 شهریور 1391, 19:54 عصر
من دارم میام میگم, چی کار کنیم که برنامه نویس باشم, نه کد نویس !!؟
احتمالا این رو میدونید که برنامه نویس با کد نویس فرق داره دیگه.
اینم تازه مد شده ما هم اون مثالها رو برایتان آوردیم که بدانید کدنویس و برنامه نویسی هر دوتاشون یکیه.(کد نویس اسم با کلاسه برنامه نویسه)
این تاپیک رو توی بخش گفتگوها مزاشتید بهتر بود چون همش باید کل کل بشه.

me.enik
دوشنبه 06 شهریور 1391, 20:03 عصر
آقا مد چیه.
این حرف من نیستش که, حرف خیلی از آدم های بزرگ همین وبسایت و بقیه کسانی که من میشناسم هستش.

مثالش آقای تاجیک که همون ایشون باعث شدن که من بیافتم دنبال این مسئله.

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

منم هدفم کل کل و اینجور صحبت ها نیستش, هدفم این هستش که توی سوالم هم گفتم, سوالم هم چیز اثبات شده ای هستش و ... .

tdkhakpur
دوشنبه 06 شهریور 1391, 20:16 عصر
اصلا بحث مد و این حرفا نیستش, اتفاقا کد نویس سطح پایین تر از برنامه نویس هستش, چون برنامه نویس یه کد نویس هستش, ولی کد نویس یه برنامه نویس نیستش.
به به عجب شعری گفتی.
حالا یه نفر یه حرفی رو زده مگه قراره هر کی هر چی گفت درست باشه.
در ضمن منظور از اون مطلبی که گفته شده برنامه نویس با کد نویس فرق داره به نظرم از مطلب نظر انشاء درست نوشته نشده شاید منظور این بوده که برنامه نویسان جدید الاتاسیس های امروزی بدون اینکه زبانهای سطح پایین رو قشنگ یاد بگیرن مستقیم رفتن برنامه نویسی سطح بالا و اگه ازشون یه مقدار سوال تخصصی پرسیده بشه چیزی در بساط ندارن رو کنن.
اما اگه اسرارا مطلب طور دیگه ای باشه حتما چیزی هست که ما خبر نداریم اینجا ارسال کنن ما هم یه فیض ما لم یجبی ببریم.

eshpilen
دوشنبه 06 شهریور 1391, 21:30 عصر
بنظر منم این اصطلاحات یک مقدار کلی و مبهم و مطابق تفسیر و نظر شخصی هستن.
منظور افراد از کدنویس، وقتی ازش بعنوان یک اصطلاح تنزل دهنده استفاده میکنن، احتمالا همون شبه برنامه نویسه.
بنظرم شبه برنامه نویسها اصولا در چیزهای پایه ای مثل حل مسئله و دانش تئوریک کافی و طراحی الگوریتم و ساختمان داده و غیره هم مشکل دارن. منتها بالاخره به زور و هرجور غیراصولی و با هر کلک و ترفند و کپی پیست و استفاده از کدهای آماده و وصله و پینه و کمک گرفتن از این و اون و آزمون و خطاهای بسیار، بالاخره یه چیزی سرهم میکنن که ممکنه در ظاهرا کامل و جالب هم باشه.
البته همین اصطلاح شبه برنامه نویس هم میتونه همینطور کلی و مبهم و مطابق تفسیر و نظر شخصی باشه که ما از خودمون درآوردیم. اما بهرصورت فکر میکنم از اصطلاح کدنویس خیلی واضحتر باشه.

من خودم تحلیلگر نیستم و کار تجاری چندانی هم انجام ندادم و حتی کار عملی زیادی هم نداشتم، ولی فکر میکنم بقدر کافی تلاش کردم و سواد و توانایی دارم که یک برنامه نویس نامیده بشم. یعنی از نظر الگوریتم بگی، از نظر امنیت و علم پایه، واسه خودمون کلی بارمونه. اینقدری که مطالعه کردم و توانایی دارم، خودم رو پیش یک تحلیلگر کوچکتر و ناتوان احساس نمیکنم (حالا باید دید اون تحلیلگر از بعد برنامه نویسی/کدنویسی در مقایسه چطوریه)، اما خب تحلیلگر یک تخصص و توانایی و مهارت خاصی داره که بخصوص در خیلی کارهای تجاری نیازه و بنابراین بهش بابت این پول میدن و احتمالا فرصت شغلی و درآمد بهتری میتونه داشته باشه. من برنامه نویسی رو هیچوقت با هدف کار تجاری و درآمد دنبال نکردم، یعنی این اولویت اولم نبوده؛ بیشتر از روی علاقه به دانستن و توانستن و انجام اهداف شخصی دنبالش رفتم. در چیزهایی هم که دوست داشتم بدونم و بتونم تاحالا بنظر خودم بقدر کافی موفق بودم و کم نیاوردم. تاحالا برنامه هایی رو که نیاز داشتم با سرعت و راحتی خوبی ساختم. اینقدر هم سواد و توانایی داشتم که مثلا به تنهایی یک RFC رو کامل خوندم و یک پروتکل رو Implement کردم (البته بصورت محدود/یک بخشی از اون رو)؛ بدون هیچ کد آماده/نمونه، داکیومنت مکمل/ساده تر/فارسی و بدون هیچ کمکی از هیچ کس دیگری. تاجاییکه من میدونم این سطح کمی نیست از نظر دانش و توانایی. همینطور مقالات/ترجمه های نابی که درمورد موضوعات مهمی دادم که نمونهء خیلی از اونا رو سراغ ندارم کسی حداقل بین ایرانیها داده باشه. یعنی حداقل توی اینترنت که تاحالا ندیدم و سرچ کردم چیزی نیامد.

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

me.enik
سه شنبه 07 شهریور 1391, 08:37 صبح
آره درسته, احتمالا حق با شماست.

ولی من دارم میگم, الآن من ادعای برنامه نویس بودن میکنم و اگر یکی ازم بپرسه که چه زبانی کار میکنی؟ میگم دلفی, در صورتی که حتی نمیدونم این کد implementation که هستش, اصلا برای چی هستش و چی کار میکنه, اسم خودم رو هم گذاشتم برنامه نویس ... !

من میگم برنامه نویسم, در صورتی که حتی نمیدونم ویندوژ چی جوری کار میکنه و اصلا برای چی ساخته شده.
من میگم برنامه نویسم, در صورتی که به قول آقای تاجیک, نمیدونم فرق user mode با kernel mode چی هستش.
من میگم برنامه نویسم, در صورتی که .... .

الآن تمام هدف من اینه که اون سه نقطه ها ( قرمز ) رو به کمک هم پر کنیم و طوری که بعد از یاد گیری اون سه نقطه ها, دیگه بتونیم اسم خودمون رو واقعا بزاریم برنامه نویس.

AMIBCT
سه شنبه 07 شهریور 1391, 09:00 صبح
این دو واژه که شما به کار بردید با هم مخالف نیستند

احتمالا منظور شما «توسعه دهنده یا developer» و «کدنویس یا coder» است

رسیدن به مرحله‌ی «توسعه دهنده» یعنی جایی که برنامه‌نویس طوری برنامه بنویسید که برنامه‌اش قابل توسعه باشد
یعنی طوری که اگر مشتری ویژگی‌های جدیدی درخواست کرد نیاز به مخالفت و مانع تراشی نباشد
این قابلیت توسعه نباید تنها توسط خود برنامه‌نویس انجام‌شدنی باشد
برنامه باید طوری نوشته شود که هر توسعه‌دهنده‌ی دیگر هم بتواند این کار را به انجام برساند

رسیدن به این مرحله نیازمند مطالعه و صرف زمان است
بدون مطالعه و بدون گذشته زمان نمی‌شود به این توانایی دست پیدا کرد

یکی از کارهایی که برای رشد مهارت‌ها باید انجام دهید این است که کدهای با کیفیت را مطالعه کنید
ببینید برنامه‌نویسان و توسعه‌دهندگان بزرگ چگونه کدهای خود را سازماندهی می‌کنند
و چگونه کد می‌نویسند

کد منبع پروژه‌های متن‌باز و بزرگ را دریافت کنید و با دقت ساختار و شیوه‌ی کدنویسی آن‌ها را مطالعه کنید
کتاب‌های دایتل را که منبعی باارزش از نکات برنامه‌نویسی هستند بخوانید
استانداردهای کدنویسی پروژه‌های مختلف مثل استانداردهای وردپرس را مطالعه کنید
با گذشت زمان تجربه و مهارت شما هم افزایش پیدا می‌کند

me.enik
سه شنبه 07 شهریور 1391, 09:13 صبح
رسیدن به مرحله‌ی «توسعه دهنده» یعنی جایی که برنامه‌نویس طوری برنامه بنویسید که برنامه‌اش قابل توسعه باشد
یعنی طوری که اگر مشتری ویژگی‌های جدیدی درخواست کرد نیاز به مخالفت و مانع تراشی نباشد
این قابلیت توسعه نباید تنها توسط خود برنامه‌نویس انجام‌شدنی باشد
برنامه باید طوری نوشته شود که هر توسعه‌دهنده‌ی دیگر هم بتواند این کار را به انجام برساند

رسیدن به این مرحله نیازمند مطالعه و صرف زمان است
بدون مطالعه و بدون گذشته زمان نمی‌شود به این توانایی دست پیدا کرد

یکی از کارهایی که برای رشد مهارت‌ها باید انجام دهید این است که کدهای با کیفیت را مطالعه کنید
ببینید برنامه‌نویسان و توسعه‌دهندگان بزرگ چگونه کدهای خود را سازماندهی می‌کنند
و چگونه کد می‌نویسند

کد منبع پروژه‌های متن‌باز و بزرگ را دریافت کنید و با دقت ساختار و شیوه‌ی کدنویسی آن‌ها را مطالعه کنید
کتاب‌های دایتل را که منبعی باارزش از نکات برنامه‌نویسی هستند بخوانید
استانداردهای کدنویسی پروژه‌های مختلف مثل استانداردهای وردپرس را مطالعه کنید
با گذشت زمان تجربه و مهارت شما هم افزایش پیدا می‌کند

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

:::: ببخشید, دکمه تشکر براش یه مشکلی پیش اومده, در اولین فرصت حتما این کار رو میکنم, برای همین مجبور شدم این پست رو بدم, معذرت میخواهم. ::::

AMIBCT
سه شنبه 07 شهریور 1391, 09:38 صبح
همون طور که عرض کردم باید مطالعه کنید
و زیاد مطالعه کنید

چهار مطلب که بنده در مورد «کد قابل توسعه» نوشتم رو می‌تونید در وبلاگم مشاهده کنید
برای شروع کار خوب است ولی برای کسب تجربه‌ی بیشتر باید جاهای دیگر را هم مطالعه کنید

http://amib.ir/weblog/?tag=%DA%A9%D8%AF-%D9%82%D8%A7%D8%A8%D9%84-%D8%AA%D9%88%D8%B3%D8%B9%D9%87

eshpilen
سه شنبه 07 شهریور 1391, 15:39 عصر
این توسعه پذیری و اینا که میگید درست، ولی توانایی حل مسئله، طراحی و تحلیل الگوریتم، دانستن کامل و دقیق مکانیزم ها، ساختمان داده ها، مباحث امنیت و رمزنگاری (که در بعضی حیطه ها مثل وب خیلی مهمتره)، اطلاع کافی از پروتکل ها و استانداردها و غیره یه چیز پایه تری هست که تاجایی که خودم تاحالا دیدم عدهء بسیار معدودی در همهء اینها دانش و توانایی کافی دارن. یعنی طرف ممکنه حتی از نظر توسعه پذیری کد خوبی هم بنویسه با رعایت اصول شیء گرایی و الگوهای طراحی نرم افزار، اما اگر کلیات و جزییات الگوریتم و امنیت و بقیهء مباحث پایه ای تر برنامش رو بررسی کنی میبینی که کاملا مشخصه که طرف در این وادیها دارای دانش و بینش گسترده و عمیق و اصولی نبوده.
بعد مثلا روی یک چیزهایی مدام بحث میکنن و وقت و انرژی تلف میشه درحد پیش پا افتاده.
یا مثلا روی بهینه سازی های جزیی و وسواسی بحث و اتلاف وقت و انرژی میکنن، درحالیکه همونطور که گفتم در وادیهای دیگر چه بسیار چیزهای مهمتر و کاربردی تر برای دانستن و انجام دادن هستن.
استفاده از امنیت از طریق تیرگی که بین برنامه نویسان ما حتی اونایی که خیلی ادعای حرفه ای بودنشون میشه تاحالا کاملا معمول و گسترده و اساسی بوده (خوبه حالا بنده چند وقت پیش برای اولین بار یک مطلبی در این باره گردآوری و ترجمه کردم و گذاشتم که اصلا خیلی ها تازه فهمیدن چنین اصطلاح و مبحثی هم وجود داره!).
اینا همش عدم دانش و توانایی واقعیه.

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

طرف تا میاد دوتا شیء گرایی و MVC و این حرفا یاد میگیره و پیاده میکنه فکر میکنه دیگه سطوح قبلی رو بقدر کافی کامل کرده و حالا به این سطح پیشرفته وارد شده!

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

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

یعنی هرکسی که برنامش در ظاهر کاملا توسعه پذیر هم بود دلیل نمیشه شبه برنامه نویس نباشه.

me.enik
سه شنبه 07 شهریور 1391, 15:54 عصر
اهااا, همینه, تازه داریم به یه جایی میرسیم.

پس شما چیزهایی که میتونه به معنای واقعی برنامه نویس شدن به ما کمک کنه, اینها را میدانید :
1. تحلیل مسئله
1. طراحی و تحلیل الگوریتم
1. دانستن کامل و دقیق مکانیزم ها
1. ساختمان داده ها
1. مباحث امنیت و رمزنگاری

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

ممنون میشوم اگر مورد دیگه ای هم هست آن را ذکر کنید, و اگر میتوانید در مورد هرکدام یک توضیح یک دو خطی بدهید و اگر نه هم, به هر حال ازتون ممنونم.
این چیزایی که گفتم رو نه تنها eshpilen (http://barnamenevis.org/member.php?148005-eshpilen) عزیز میتواند ذکر کند, بلکه شما بقیه دوستان نیز میتوانید ما را در این امر یاری کنید.

eshpilen
سه شنبه 07 شهریور 1391, 16:30 عصر
آره دیگه یعنی دانش گسترده و عمیق در هرچیزی که واقعا باهاش سروکار داریم. بصورت علمی. اغلب نقش بخش تئوریک در برنامه نویسی دست کم گرفته میشه.
البته توسعه پذیری رو هم میشه به این لیست اضافه کرد. منافاتی نداره.

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

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

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

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

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

me.enik
سه شنبه 07 شهریور 1391, 17:34 عصر
آقا ممنون که حوصله کردید که اومدید و این همه تایپ کردید.

اینم لیست آپدیت شده با توجه به صحبت های شما:

1. تحلیل مسئله
1. طراحی و تحلیل الگوریتم
1. دانستن کامل و دقیق مکانیزم ها
1. ساختمان داده ها
1. مباحث امنیت و رمزنگاری
1. توسعه پذیری
1. زبان انگلیسی


چون بر اساس دانش و توانایی و گفتار و رفتارشون نتیجه گرفتم که بیشترشون واقعا کم سن و سال و نوجوان هستن!
خب به منم بگید چند سالمه, سعی میکنم بهم بر نخوره. :چشمک: جدی میگم, بگید.

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

eshpilen
سه شنبه 07 شهریور 1391, 18:28 عصر
خب به منم بگید چند سالمه, سعی میکنم بهم بر نخوره. :چشمک: جدی میگم, بگید.

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

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

fjm11100
یک شنبه 12 شهریور 1391, 22:41 عصر
دوستان توجه کنید که فرق است بین
Coder, Programmer, Developer, Designer, Architecture
بعضی از دوستان تحلیل و طراحی و حتی معماری نرم افزار را جزو وظایف برنامه نویس می دونند درحالیکه برنامه نویس یا پروگرامر کسیه که علاوه بر تسلط بر یک یا دو زبان به زبانهای دیگه هم آشناست. یک برنامه نویس مسلط به سی شارپ شاید نتونه بخوبی کدنویس کد جاوا بنویسه اما مفاهمی شی گرایی را بلده و می تونه با یک نگاه به نمونه کد یا راهنما یک کلاس کامل توی جاوا بنویسه. برنامه نویس بجای تمرکز روی کد به مفاهیم مسلطه. مثلا میدونه که وب سرویس چیه و فرقش با سوکت داره حالا زبون هرچی باشه با یک مطالعه جزیی میتونه پیاده سازی کنه. ضمنا یک برنامه نویس حقیقی روی ابزار تعصب نداره و هر ابزاری را جاش استفاده میکنه(مثل بعضی از دوستان نیست که بگه ته زبون C++ است و یک سیستم اتوماسیون اداری تحت وب را هم بخواهند با C++ پیاده سازی کنند)
اما کدنویس درواقع تایپیستی است که بخوبی با ide کار میکنه. بلده متد یا رویداد بنویسه. نگارش و کلمات یک زبان برنامه نویسی را خوب میشناسه.
ولی کلا در ایران همه اینها یکنفر هستند جز مدیر پروژه که همون مدیر عامل یا رفیق یا داداش مدیر عامله. تحلیل گر هم مخ مدیرعامل با تخیلات عجیب غربشه. باقی موارد از گرافیست آیکون ساز تا تستر و مسئول نصب و ... همه یک مهندس درواقع کارمند بیچاره است

FastCode
دوشنبه 13 شهریور 1391, 03:02 صبح
جالبه
هنوز کسی به SWEBOK اشاره نکرده

eshpilen
سه شنبه 14 شهریور 1391, 20:44 عصر
بنظر من آشنایی با نرم افزار آزاد/بازمتن و پلتفرمهای باز و آزاد مثل GNU/Linux میتونه واقعا گسترهء بینش و کارایی و پیشرفت یک برنامه نویس رو افزایش بده.

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

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

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

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