PDA

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



eshpilen
یک شنبه 02 خرداد 1389, 13:40 عصر
بنظر شما یک برنامه نویس واقعی چه کسیه و باید چطور عمل کرد و چه چیزهایی رو یاد گرفت تا یک برنامه نویسی واقعی شد، و به چه چیزی میگن برنامه نویسی؟
مثلا شاید به بعضی برنامه نویسی ها بیشتر باید گفت برنامه سازی و کسانی که اون برنامه ها رو ایجاد میکنن میتونن لزوما یک برنامه نویس واقعی نباشن!

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

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

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

برای شروع ما نیاز به تعریف دقیق علمی داریم، بعد از اون معیار و ابزار ارزیابی رو بدست میاریم و میسازیم.

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

Asad.Safari
یک شنبه 02 خرداد 1389, 13:50 عصر
یک برنامه نویس خوب چه ویژگی هایی دارد ؟

* Passion : اشتیاق و عشق علاقه به امر برنامه نویسی
* Self-teaching and love of learning : عشق به یادگیری و توانایی خود آموزی
* Intelligence : با هوشی
* Hidden experience : تجربیات قبلی که پنهان است و در موقع کار آشکار می شود
* Variety of technologies : آشنایی به فن آوری های گوناگون
* Formal qualifications : مدارک بین المللی و معتبر در زمینه گسترش نرم افزار

موفق باشید

sky_in_iran
یک شنبه 02 خرداد 1389, 13:55 عصر
سلام
به نظر من برنامه نويس كسيه كه قدرت درك و تحليل و بررسي مسئله رو داشته باشه و يك قدرت بالاتر از اين داشتن توانايي حل مسئه به صورت هاي مختلف (اولين راه هميشه بهترين راه نيست) . برنامه نويس خوب بايد تئوريك و عمل قوي داشته باشه و داشتن يك بعد زياد كارساز براي برنامه نويس شدن نيست .
اما بنظ ميرسه متاسفانه تو ايران تو گزينش ها اونجوري كه من ديدم بيشتر از عمل رو تئوريك پا فشاري مي كنند . براي برنامه نويس شدن بايد راه تولاني و رفت با تلاش و پشت كارو هميت و تكرار و تمرين و از همه مهمتر بودن محيطي براي ياد گيري (به نظر من يك محيط كار بسيار بسيار مفيدتر از يك محيط آموزشي براي برنامه نويس شدن است) . بهتره نگيم برنامه ساز به نظرم بگيم تايپيست كد بهتره برنامه ساز باز يك درجه بالاتر از تاپيست كد در حال حاضر به نظر مياد تايپيست كد زياد البته به نظر مياد

1485159
یک شنبه 02 خرداد 1389, 14:10 عصر
به نظر من برنامه نویسی یعنی پیاده سازی الگوریتم. حالا هر الگوریتمی که باشه.
نه طراحی فرم و گذاشتن چنتا دکمه کنار هم.......

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

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

eshpilen
یک شنبه 02 خرداد 1389, 15:06 عصر
همین الان تاپیکی یکی دوتا بالاتر یا پایینتر از این تاپیک در این تالار هست با این عنوان: چرا افراد به شکل صحیح نمی تونن سوال بپرسن؟ (http://barnamenevis.org/forum/showthread.php?t=222659)
و توش ببینید چه جمله ها و عناوین خنده آوری رو بیان کرده که البته واقعی و روزمره هستن و میبینی کسانی این تاپیکها رو تاسیس میکنن که دارن برنامه نویسی میکنن (بقول خودشون) و بعضیاشون تاحالا چنتا پروژه هم نوشتن و دستمزد گرفتن. آخه چطور کسی که قادر نیست یک عنوان غیرابلهانه برای یک تاپیک پیدا کنه میتونه یک برنامه نویس باشه؟!
بنظر بنده اول باید منطق و جمله بندی زبان معمولی و روش و ماهیت علم رو یاد بگیریم و بعد بریم سراغ زبان برنامه نویسی.
جالب اینکه میبینیم خیلی ها که حتی توسط دیگران بعنوان حرفه ای شناخته میشن اغلب برای تاپیکهای خودشون هم نمیتونن یک عنوان که بحد کافی دقیق و علمی باشه پیدا کنن. یا مثلا اصول بدوی روش علمی رو رعایت نمیکنن. مثلا یک لینک میذارن و هیچ توضیحی نمیدن که محتواش چیه. یا مطلبی میذارن اما هیچ رفرنسی پاش قرار نمیدن. این کارها همه ابلهانه هست و مشکل داره.
و این یعنی چی؟ ببخشید؛ ولی یعنی بی سوادی!
متاسفانه برنامه نویسی یک فعالیت تجربی شمرده میشه؛ بیشتر از اونکه علمی و تئوریک شمرده بشه.
درسته که نیاز به تجربه هست و فوت و فن هم در عمل درگیر هست، اما بخش تئوری اساس کاره.

sky_in_iran
یک شنبه 02 خرداد 1389, 15:47 عصر
دوست عزيز لطفا از كلمات توهين آميز استفاده نكن هركسي براي خودش شخصيتي داره و اعتقادي ونظري شايد از اون تيتر شما برداشت لازمه نكرديد و يا چيزه ديگري اين بدان معني نيست كه اون شخص بي سواده و يا ... .
بدم ما اينجا جم شديم تا عقلامونو سرهم بزاريم به هم كمك كنيم تا پيشرفت بكنيم و كمك هم باشيم نه پا پي هم اينجا براي يكي شدن نه چيزه ديگه .
بعدم درست برنامه نويسي علم است اما علم بدون عمل بدردنميخوره يك پزشك اگر 100 سالم تو كلاس و دانشگاه باشه بازم دكتر خوبي نميشه زماني خوب ميشه كه سر جنازه بره براي تشريح تو بيمارستان بره پرستاري كنه تو اتاق عمل بره كمك پرستار باشه تا بعد 10 الي 15 سال بعد بتونه بگه من دكترم برنامه نويسيم اينه شما هرچقدرم msdn بخوني يا اينكه 100 تعريف از كلاس و شي داشته باشي نميتوني بگي برنامه نويسم هر وقت تونستي جايگاه و منطق و نوع استفاده و چگونگي انعطاف پذير كردن و ... ياد بگيري ميتوني بگي كلاس و من ميفهمم برنامه نويسي شي گرا رو درك مي كنم پس ابتداي كار با تئوريك اما از 20 به بالا خاصي بري بايد عمل كني و تجربه كسب كني دركنارش تئوريكم فراموش نكني تا بشي برنامه نويس

eshpilen
یک شنبه 02 خرداد 1389, 17:46 عصر
دوست عزيز لطفا از كلمات توهين آميز استفاده نكن
کدام کلمات توهین آمیز؟ اونم به شخص حقیقی خاصی بوده مگه؟
بنظر شما مثلا کلمهء بی سواد به خودی خود یک کلمهء زشت هست؟
اگر بخوایم میتونیم جایگزین دیگه ای براش بذاریم که لقمه رو دور سرمون بچرخونیم ولی دست آخر مفهومش و کلیتش همون چیزه و فقط بیان رو بیخودی پیچوندیم و حجمش رو زیاد کردیم در عین حالی که مبهم شده.
آیا شما میفرمایید بطور کلی بیان این مفاهیم تابو هستن و اگر خواستیم نظرمون رو بیان کنیم نباید اینکار رو بکنیم؟!


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


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



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

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


بعدم درست برنامه نويسي علم است اما علم بدون عمل بدردنميخوره يك پزشك اگر 100 سالم تو كلاس و دانشگاه باشه بازم دكتر خوبي نميشه زماني خوب ميشه كه سر جنازه بره براي تشريح تو بيمارستان بره پرستاري كنه تو اتاق عمل بره كمك پرستار باشه تا بعد 10 الي 15 سال بعد بتونه بگه من دكترم برنامه نويسيم اينه شما هرچقدرم msdn بخوني يا اينكه 100 تعريف از كلاس و شي داشته باشي نميتوني بگي برنامه نويسم هر وقت تونستي جايگاه و منطق و نوع استفاده و چگونگي انعطاف پذير كردن و ... ياد بگيري ميتوني بگي كلاس و من ميفهمم برنامه نويسي شي گرا رو درك مي كنم پس ابتداي كار با تئوريك اما از 20 به بالا خاصي بري بايد عمل كني و تجربه كسب كني دركنارش تئوريكم فراموش نكني تا بشي برنامه نويس
به بخش عملی که بنده هم اشاره کردم و جایی هم مخالف چیزایی که شما میگی حرف نزدم.
ولی شما فقط گیر دادید به این مسائل و تکرارش میکنید و جوری صحبت میکنید انگار بنده عملا هیچ برنامه ای ننوشتم یا فقط یه چیزی مثل msdn خوندم.
اگر گفتار بنده رو دقیق و کامل و بدون غرض شخصی بخونید میبینید که هیچ چیز غیرمنطقی و غیرمستدلی درش نیامده و همش روشن و کامل و اصولیه.
من گفتم که تئوری پایه و اساسه، بدین معنی که قبل از عمل باید پایهء تئوریک رو کامل و قوی کرد، نه اینکه به عمل نیازی نیست و تجربه کاره ای نیست و با تئوری محض کسی همه کاره میشه. ولی ظاهرا خیلی ها این رویه رو دارن که این مسیر رو حداقل تاحدی معکوس کردن و بعید میدونم این راه درست یا بهینه ای باشه.

eshpilen
یک شنبه 02 خرداد 1389, 20:44 عصر
یه نکتهء دیگه بگم.
بنظرم بعضیا که اول یک رفرنس خوب رو کامل نمیخونن فکر میکنن این روش بهینه تریه و زرنگی کردن که با کار عملی برنامه نویسی و زبان و کتابخانه رو یاد میگیرن. یعنی هم کار انجام میدن و هم یادگیری تئوری همزمان و برای هرچیزی موقع نیاز خودش وقت و انرژی میذارن.
بنظر من این تفکر سطحی هست. چرا؟
چون این افراد بنظر من درواقع زمان و انرژی بیشتری در مجموع صرف میکنن، اما چون این وقت و انرژی بیشتر در طول یک زمان طولانی مثلا چند ساله پروژه و کار عملی و احتمالا کار تجاری تقسیم و پنهان شده به چشمشون نمیاد.
بنظر من اگر رفرنس و تئوری رو اول کامل کنیم، در مجموع بازدهی بیشتر هست.
بعنوان مثال اگر از ابتدا بصورت کامل بدونی یک فریمورک چه امکاناتی داره دیگه وقتت میتونه روی استفاده از امکانات اشتباه یا روشهای ناکارامد یا دستی (که فریمورک امکانی رو از قبل برای اون گذاشته) تلف نشه. یا همینطور برای سوال پرسیدن و غیره وقت تلف نمیشه (چون خیلی بیشتر میدونی اون فریمورک چی داره و چی نداره و از چی برای چه کاری استفاده میشه و چطوری و غیره).
وقتی آدم کد مینویسه و باگ و نقص داره که بیشتر وقتش تلف میشه تا اینکه از ابتدا بدونه چیکار میکنه!
خوندن رفرنس به این کمک میکنه که قبل از کدنوشتن بتونی تصمیم بهتری بگیری و کم نقص تر عمل کنی و کمتر باگ داشته باشی و علت باگهات رو هم راحتتر و سریعتر بفهمی و رفع کنی.
وگرنه با تجربه و آزمون و خطا هم میشه به خیلی چیزها رسید. ظاهرا اونی که رفرنس میخونه زمان زیادی رو برای خوندن چیزایی میذاره که ممکنه تامدتها بعد از اون بهشون نیاز پیدا نکنه، اما این در صرفه جویی طولانی مدت بهتر هست. از طرف دیگه دانش کامل و عمیق باعث بینش بهتری در برنامه نویسی میشه. یکی با تجربه بعد از 5 سال به امکانات و ساختار یک فریمورک مسلط میشه و این باعث میشه تا قبل از اون دارای تسلط کافی نباشه و این بازدهی رو کم میکنه؛ اونی که رفرنس خونده هم درسته بدون تجربهء عملی تسلط کافی نداره اما تسلطش از ابتدا بیشتر هست و در زمان کمتری به تسلط کافی میرسه.

shirin_sh1024
یک شنبه 02 خرداد 1389, 22:39 عصر
اول اینکه دوستان خواهشا به همدیگه احترام بزارید و با هم دعوا و جر وربحث نکنید به خدا فقط اعصاب خودتون خورد میشه تاپیک هم به هیچ جا نمیرسه:ناراحت:
به نظر من برنامه نویسی یه حرفه ایه که نمیشه تو مدت زمان کم کسی بهش برسه چون کاریه که بر اساس تجربه و تمرین و روبرو شدن با مسائل مختلف بدست میاد
شما هر چقدرم تو برنامه نویسی حرفه ای باشی بازم یا مطالب جدیدی هست که هنوز دربارش نمیدونی یا مطالب جدیدی هست که اضافه شده باشه.
به نظر من کسی که میخواد برنامه نویسی کنه نیاز به هوش و خلاقیت داره تا بتونه بهترین روش رو برای حل مسئله پیدا کنه همین طور خستگی ناپدیری و صبر زیادی میطله هم برای شروع و هم برای رفع کردن مشکلات برنامه . ما همه یه دستی تو برنامه نویسی داریم حالا بعضی از دوستان به صورت خیلی حرفه ای و بعضیا کم و بیش مبتدی. میدونیم که پیدا کردن مشکل برنامه گاهی واقعا حوصله آدم سر میبره و حلش نیاز به علاقه و صبر و پشتکار داره.
کسی که بتونه رو مفاهیم برنامه نویسی مسلط بشه و هر کدی یا کامپوننتی رو در جای خودش استفاده کنه برنامه ای بنویسه که واقعا مهندسی تحلیل و طراحی شده باشه به نظر من میشه گفت یک برنامه نویس خوبه.
تفاوت یک برنامه نویس واقعی با برنامه نویسی که برنامه ی قوی و اصولی نمینویسه و بدون تحلیل و درک صحیح فقط کد میزنه مثله تفاوت یه ساختمون مهندسی ساز که همه چی در اون دقیقا محاسبه و پیش بینی شده با یه ساختمون بنایی سازه که بعد از چند ماه که از ساختش همه طبقاتش شروع میکنه به نم دادن به همدیگه و بروز مشکلات دیگر
حتی یه برنامه نویس آماتورم میتونه برنامه نویس خوبی باشه به شرطی که تو سطح پروژه خودش حتی اگر کوچک و ساده هم باشه اصول مهندسی رو رعایت کنه حرفه ای شدن به مرور زمان و با کسب تجربه بدست میاد

مرتضی پیروزی
یک شنبه 02 خرداد 1389, 23:32 عصر
در ایران:
فلانی کیست؟؟
- من!
فلان کار چیست؟
- کاری که من میکنم!
-----------------
تا وقتی اینطور فکر کنیم به هیچ نتیجه ای نخواهیم رسید، خودتون رو خسته نکنید، با هم دوست باشید:قلب:

sky_in_iran
دوشنبه 03 خرداد 1389, 07:31 صبح
برادر/خواهر eshpilen (http://barnamenevis.org/forum/member.php?u=148005) دوست عزيز شما آزاديد هرچي مي خوايد بگيد كسي اينجا آزادي شمارو نگرفته بعدم به نظر شما به كاربردن كلمه "ابله" كلمه خوبيه ؟؟؟ نه نيست شايد كسي عنواني ب مفهوم گذاشته خوب قبول يا رفرنسه نا مربوطي گذاشته اينم قبول اما خوب اگر ما همه چي تكميل بوديم و يا همه چي و ميدونستيم پس اينجا واسه چي اومديم ؟ اينجا محل نقد كردن و نقد شدن متاسفانه ما انقدري كه به دنبال فروعاتيم اصول يادمون رفته انقدرم دنبال چيزه خاص نباش من كلي گويي كردم منظورم نه شخص خاصي نا تاپيك خاصي و نه پست خاصي به هر حال اگر حرفي زدم كه باعث مكدر شدن خاط شما دوست عزيز شده من معذرت مي خوام .
بعدم يه سوال شما كه مي فرماييد ما اول بريم همه چيزو ياد بگيريم تئوريك و و بعد وارد گود بشيم به نظر شما اگه شما بر فرض كل فريم ورك و داده ها و همه چيزه دات نت و ياد گرفتي وقتي به مدت تولاني باهاشون سركار نداري فكر نمي كني فراموش بشه ؟ و اگه فراموش كني به هنگام كار بايد بري يه بار ديگه مطالعه كني خوب اين دوباره كاري نميشه ؟ منظورم اصول نيستا منظور آشنايي با يكشري از امكانات و خود فريم وركه!!!! بعدم به نظر شما تا شما به مشكلي بخوري كه توش گير كني كلي بگردي و نتوني حل كني بعد بري سراغ يك تكنيك جديد اين جوري بهتر درك مطلب ميشه يا نه تا امروز گفتن آقا چيزي اومده به نام linq براي اينه بدويي بري 2تا مقاله بخوني از فردا همرو بر اساس اون تكنينك جديد بنويسي ؟؟؟؟ كدوم بهتره ؟

eshpilen
دوشنبه 03 خرداد 1389, 09:32 صبح
اول اینکه دوستان خواهشا به همدیگه احترام بزارید و با هم دعوا و جر وربحث نکنید به خدا فقط اعصاب خودتون خورد میشه تاپیک هم به هیچ جا نمیرسه:ناراحت:
شما به اینا میگی بی احترامی و دعوا؟! :قهقهه:
یخورده قوی و جنگنده باشید.
البته شما که دختری ظاهرا، ولی از پسرها انتظار بیشتری میره.
آدم وقتی در دنیای علم پا میذاره باید اصول اون رو رعایت کنه و ضعف های شخصیت خودش و انتظارات بیجا رو توش دخیل ندونه.
آدم اگر میخواد پیشرفت کنه باید قوی و جنگنده باشه.
منظورم از جنگندگی دعوا نیست. ببین مثلا توی یه باشگاه رزمی آدم با حریفش مبارزه میکنه و تازه کتک هم میخوره و درد هم میکشه و ظاهرا تحقیر هم میشه، اما اینا نه توهین هست نه دعوا و نه از شخص مقابل باید کینه بدل گرفت (تازه بقول استاد ما باید ازش تشکر کنید که باعث پیشرفت شما میشه. و همیشه آدم باید با قوی تر از خودش مبارزه کنه تا پیشرفت کنه).
این نازک نارنجی ها کم سن و سال هستن و بخاطر غرور جوانی و نپخته بودن از بیان خیلی چیزها و رودررویی فکری هراس دارن. البته حتی مردهای گنده هم هستن که اینطورن. آدم باید به رشدی برسه و اهل عمل و مبارزه باشه.
اونم توی یه محیط مجازی که آسیب و درد جسمی نداره واقعا دیگه نهایت ناتوانیه که آدم نتونه چنتا برخورد افکار و حرف درشت یا صریح رو تحمل بکنه.
تازه من فقط نظر خودش رو بیان کردم و قصد تحقیر و توهین کسی رو نداشتم.
میخوام فکرم قوی و کامل بشه و قدرت و انسجامش رو دربرابر افکار و توانایی هام رو دربرابر توانایی های دیگران محک بزنم. برای اینکه اینکار بصورت بهینه انجام بشه باید کاملا صریح و بدون محدودیت باشه. مثلا میگم فلان چیز رو بلدی؟ واقعا میتونی فلان الگوریتم رو درک کنی؟ میتونی فلان مسئله رو بصورت اصولی حل کنی؟ اینا هیچکدام از نظر بنده توهین یا خودپرستی نیستن (حالا تقصیر من چیه که یک عده آدمهای بیخود هم با نیت دیگری این حرفا رو میزنن؟).

shirin_sh1024
دوشنبه 03 خرداد 1389, 10:06 صبح
شما به اینا میگی بی احترامی و دعوا؟! :قهقهه:
یخورده قوی و جنگنده باشید.


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

eshpilen
دوشنبه 03 خرداد 1389, 10:07 صبح
برادر/خواهر eshpilen (http://barnamenevis.org/forum/member.php?u=148005) دوست عزيز شما آزاديد هرچي مي خوايد بگيد كسي اينجا آزادي شمارو نگرفته بعدم به نظر شما به كاربردن كلمه "ابله" كلمه خوبيه ؟؟؟

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


نه نيست شايد كسي عنواني ب مفهوم گذاشته خوب قبول يا رفرنسه نا مربوطي گذاشته اينم قبول اما خوب اگر ما همه چي تكميل بوديم و يا همه چي و ميدونستيم پس اينجا واسه چي اومديم ؟ اينجا محل نقد كردن و نقد شدن متاسفانه ما انقدري كه به دنبال فروعاتيم اصول يادمون رفته انقدرم دنبال چيزه خاص نباش من كلي گويي كردم منظورم نه شخص خاصي نا تاپيك خاصي و نه پست خاصي به هر حال اگر حرفي زدم كه باعث مكدر شدن خاط شما دوست عزيز شده من معذرت مي خوام .
بنظر من آدم اول باید جایگاه خودش رو دقیق و صریح بدونه، همینطور دیگران رو نسبت به خودش. تا بعدش بتونه روی چیزای دیگه تصمیم درستی بگیره.
من منتظر بودم مثلا شما بگید خب شما که اینقدر ادعا میکنی چه تجربهء عملی ای داری و چه برنامه هایی نوشتی و غیره. هرچند بحث ما لزوما به این چیزا ربطی نداره و تئوری و استدلالش از نوع محض هست، اما همین رودررویی و جسارت ها نشان از توان و عمل و حقیقت جویی داره.
در بعضی فرومها از اینطور چیزها خیلی راحتتر گفته میشه. مثلا یجا واسم گفتار لینوس رو رو مطرح کردن که آخرش این بود که Show me your code.


بعدم يه سوال شما كه مي فرماييد ما اول بريم همه چيزو ياد بگيريم تئوريك و و بعد وارد گود بشيم به نظر شما اگه شما بر فرض كل فريم ورك و داده ها و همه چيزه دات نت و ياد گرفتي وقتي به مدت تولاني باهاشون سركار نداري فكر نمي كني فراموش بشه ؟کل فریمورک دات نت رو که باید یاد گرفت. البته میتونیم اون بخشهایی رو که لازم نداریم یاد نگیریم. مثلا من چون با PHP برنامه نویسی وب بلد هستم فعلا به یادگیری ASP.NET حداقل اولویت نمیدم.
بعد اینکه در جریان یادگیری تئوری هم شما بیکار نیستی که. کد نمونه باید بخونی و تحلیل کنی و تمرین و غیره داره. معمولا انتهای یادگیری هر زبان و فریمورکی هم خیلی مناسبه که آدم یک پروژهء ای که زیادی بزرگ نباشه انتخاب کنه و به جایی برسونه. این به رفع ضعفها و مشکلات و چیزهایی که نمیدونیم که نمیدونیم کمک میکنه و باعث میشه مطالب خونده شده در ذهن معنای کامل و درست و مطمئن پیدا کرده و در حافظه تثبیت بیشتری بشن (حافظهء بلندمدت تر). با اینکار مهارت عملی آدم هم بحدی میرسه که بتونه کارهای عملی رو فورا و بدون هراس و عدم اطمینان مفرط شروع کنه (مثلا وقتی یک سفارش رو باهاتون مطرح میکنن).
نهایتا بعد از اینا هم اگر آدم کار عملی داشت که داشت، اگر برای مدت طولانی هم نداشت و یادش رفت که چه ربطی به یادگیری تئوری داره؟ یعنی شما میفرمایید ما بهتره دنبال تئوری نریم چون ممکنه یه مدت طولانی امکان کار عملی کافی نداشته باشیم و یادمون بره؟


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


بعدم به نظر شما تا شما به مشكلي بخوري كه توش گير كني كلي بگردي و نتوني حل كني بعد بري سراغ يك تكنيك جديد اين جوري بهتر درك مطلب ميشه يا نه تا امروز گفتن آقا چيزي اومده به نام linq براي اينه بدويي بري 2تا مقاله بخوني از فردا همرو بر اساس اون تكنينك جديد بنويسي ؟؟؟؟ كدوم بهتره ؟
معمولا برای یادگیری و ورزیدگی فکر اونقدری چیز ندونسته و نیازها هست که آدم وقت و انرژی خودش رو روی چیزهایی که قبلا حل شدن و راهکار آماده دارن تلف نکنه. اصولا اگر بخوای هرچیزی رو اینطور خودت اینقدر فکر کنی یا کد بزنی که به بن بست برسی بعد تازه بری سراغ اینکه ببینی راهش که از قبل موجود باشه چیه، خیلی غیربهینه هست و بنظرم عمر آدم تموم میشه بدون اینکه دانش و توانایی های لازم رو بدست آورده باشه.
مثل این هست که شما بگی ما تمام علم رو از ابتدا یاد بگیریم و تلاش کنیم هرچیزی رو خودمون اختراع و کشف کنیم، بدون اینکه قبلش منابع رو بخونیم و بدونیم گذشتگان چی کشف و اختراع کردن. این یعنی نظام آموزشی مدرسه ها رو اصلا عوض کنیم و کتابهای فعلیشون رو جمع کنیم یا تغییر بدیم. اما این یک اشتباه بزرگه.
شما چرخ رو از اول اختراع میکنید؟ هرچیزی رو میخواید مدتها تلاش کنید که آیا خودتون میتونید بفهمید و کشف و اختراع کنید؟
میدونید حجم دانشی که از گذشتگان به ما رسیده چقدر عظیمه و همینطور حجم دانش و ابزاری که امروزه هر روز تولید میشه؟ اگر بشر میخواست روش شما رو پیش بگیره هرگز اینقدر و با این سرعت پیشرفت نمیکرد. قدرت کلیدی بشر در استفاده از تجربه ها و دستاوردهای گذشتگان و اتحاد جمعی کامل در جنبه های مختلف هست و اینکه لازم نیست بخش بزرگ و سخت کار رو هرکس خودش دوباره انجام بده. یک نفر یا گروه یا یک نسل انجام دادن و الان نیازی نیست ما خودمون انجام بدیم، بلکه فقط نیاز هست یاد بگیریم و درک کنیم و بعد استفاده کنیم. این درک با استفاده از منابع علمی موجود هست و درحد کشف و اختراع و طراحی و ساخت اولیه هزینه بر نیست.
همین درک هم چیز کمی نیست. آدم سالها تحصیل میکنه و تفکر و تحقیق تا خیلی چیزهایی رو که باید بفهمه میفهمه. نهایت قدرت فکر و حافظهء شما برای یادگیری و درک و کسب توان استفاده از منبع دانش بشر تا امروز، بکار گرفته میشه. چون حتی درک و انجام خیلی از کارهای انجام شده هم کار کوچکی نیست و اغلب نیاز به دانش و مهارت پایه و فعالیت ذهنی سنگینی در حد نهایت قدرت و منابع بشر داره. چیزی که برای گذشتگان خیلی بیشتر از ما هدر رفته وقت و انرژی بوده چون نیاز به زمان طولانی ای برای پیشرفت و کشف و اختراع داشتن.
بعضی وقتا آدم یه چیزهای محدودی رو که خودش تشخیص میده توی اون جنبه ضعف اساسی داره یا لازمه خودش رو تقویت کنه بصورت تمرین انجام میده، اما اینا محدود و هوشمندانه انتخاب شدن و اینطور نیست که آدم درمورد هرچیزی و همیشه اینطور عمل کنه.
من میگم ما تئوری رو اصولی و کامل یاد بگیریم، شما میگی سخته یا بهینه نیست، بعد خودتون یه چیزی میگید که صد برابر از چیزی که من میگم و اصول آموزش هست سخت تر و طولانی تره!

saber187518
دوشنبه 03 خرداد 1389, 23:32 عصر
به قول مهندس پویا لعل بخش (استاد دانشگاه):" برنامه نویسی هنر است ، هنر استفاده از ابزار محدود در خلق موجودیت نامحدود."
با توجه به این سخن به نظر من برنامه نویس یک هنر مند است.