سلام به همگی در تلاش هستم، یک پادکست جدید در باب اینکه چطور میتونیم یک برنامهنویس کاراتر و بهتر باشیم صحبت کنم.
برای همین برام جالبه که شما چه ایدههای در مورد این داستان دارید.
خوشحال میشم نظرات و تجربههاتون رو به اشتراک بزارید تا حتی در پادکست مورد نظر ازش استفاده کنیم
پیشاپیش تشکر از وقتی که میزارید.
@hesammousavi
به نظر من بهترین چیز برای اینکه یه برنامه نویس خوب باشه کسی اینه کدهارو جوری بنویسه بقیه بفهمن چیه تا یه برنامه نویس دیگه بیاد سر پروژه سرسیلندر نسوزونه برای فهمیدن کدها . بخدا فشار میاد به ادم دوستان میفهمن چی میگم .
جدا از شوخی این موارد مهمه :
خوانا بودن کدها ، استفاده نکردن الکی از پکیج ها و ابزار هایی که نباشن هم فرقی نمیکنه .
درست نوشتن کدها و استاندارد بودن کار .
کامنت گذاری خوب نه زیاده روی بشه نه مخفف زده بشه خود طرفم دو رو بعد نفهمه چی هست .
در مورد همچی اطلاعات داشته باشه ولی یچیزو توش متخصص باشه . مثلا تو وب بدونه جاوا اسکریتب چیه و چطور کار میکنه بتونه استفاده کنه یا سرور رو بدونه و هاست و ... کاربردی بدونه ولی مثلا php رو حرفه ای بشه توش .
این مفهوم رو هم بفهمونه به خودش قرار نیست همچی رو بلد باشی . بقیه هم هستن میتونی کمک بگیری و همکاری کنی .
در نهایت باز میگم ادم با html سایت ایستاتیک بیاره بالا هزار بار بهتر از اینه با php بیاره بالا معلوم نیست توش چی به چیه.
سلام خسته نباشید-
به نظر من کار گروهی انجام دادن خیلی عالیه - من در حال حاظر خودم رو میگم بایه برنامه نویس ارشد همکار شدم هر روز چیزهای جدیدی پیش ایشون یاد میگیرم مخصوصا شگردهایی که ایشون تو برنامه نویسی به کار می برن - من که چند ساله دارم برنامه نویسی کار می کنم باز پیش ایشون هیچی بلد نیستم - حس میکنم توانایی هایی که همکار دارن به من هم داره سرایت می کنه - در کل کار گروهی کار کردن عالیه-
هم فکری عالیه - تو یه استارتاپ هم بودم خیلی جالبه - مدیر پروژه یه چیز می گه بری انجام بدی یه روز حداقل درگیرشی -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1-همین که بتونیم سوالات همین دوستان که تو راکت سوال می پرسن رو جواب بدیم خودش می تونه به خودمون هم کمک کنه.
@ali.farmani
2-حرف شما هم کاملا درسته مثلا همین من بتونم داخل لاراول از vuejs استفاده کنم و تخصصی داخلش کسب کنم خیلی عالیه.
3-به نظرم تدریس کردن عالیه کسی که داره تدریس می کنه خودش کلی چیزها یاد میگره نه اینکه چیزی بلد نباشه تو تدریس مشکلات خودش هم برطرف میشه. در حال حاظر خودم دارم خصوصی تدریس می کنم:)) اولین شاگردم رو گرفتم یه جوون 14 ساله خیلی علاقه داره -منم بیشتر خوشم میاد ولی واقعا من از جون دل بهش درس میدم که راضی باشه و راضی هست و خودم هم از کارم راضیم وخیلی چیزها که فکر می کردم بلد هستم ولی نبودم رو یاد میگیرم-
4- همیشه باید درحال یادگیری باشیممممممممممممممممممممممممممممممممممممممممممممم. هر روز چیزای جدید.
سلام
من پیشنهاد میکنم مقالات مطمئن بصورت پادکست بررسی بشه و توضیح داده بشه خیلی به افرادی مثل من که وقت نمیکنم مقاله بخونم کمک میکنه ، اگه هم منبعی هست ممنون میشم دوستان معرفی کنند
به نظرم بهتر شدن در برنامه نویسی پایانی نداره و مثل یه جاده بیانتهاست. شما تا این زبان رو یاد بگیرید یه بهترش میاد.. تا به این فریمورک مسلط بشی یه بهترش میاد یا آپدیت میشه..
برنامهنویس خوب، برنامه نویسیه که این پروسه یادگیری و بروز بودن رو ادامه بده; و در چارچوب قوانین معماری نرمافزار کد بزنه.
ممنون از شما بابت اینکه چنین موضوعی رو مورد بررسی قرار می دید. من حدود 8 ماه پیش از شما همین پرسش رو کردم که پاسخی رو در پی نداشت، انگار حالا وقتش رسیده.
من یک نظری داشتم و اونم اینه که: درین بحث یک سری ویژگی ها هست که در هر شغلی با انجام بهش میشه پیشرفت کرد، مثلا برنامه ریزی و نظم کاری.
ولی این پاسخ برای این گفتگو به نظر من ارزشمند نیست، چون در خصوص همه ی شغل ها هستش و اختصاص به برنامه نویسی نداره. پس به نظرم پاسخ هایی ارزشمند هستند که ما خیلی نتونیم در حوزه های دیگه شغلی هم به عنوان جواب قرار بدیم.
نکته بعدی اینکه: اگر جزئی تر وارد این بحث بشیم، شاید بشه برای هر کدوم از زبان ها نکاتی رو نام برد.
مثلا کدنویس بهتر در html کسی هست که نکات سئو رو هم رعایت کنه و از برچسب های مفهومی استفاده کنه. یا در css بیاد و از روش BEM برای نام گذاری کلاس ها استفاده کنه. و بهمین ترتیب میشه در هر زبانی نکات کلیدی رو نام برد.
بنابراین در خصوص بحثی که شما میخواید مطرح کنید، یک راه اینه که در خصوص تک تک زبان های اصلی از قبیل html, css, js, زبان سرور و ... نکاتی رو همینطوری که من گفتم و بصورت گزینشی بفرمایید.
حالت دوم هم اینه که: چند دسته کلی داشته باشیم و برای هر کدوم نکاتی رو مطرح کنیم. دسته ها هم این هاست: طراحی رابط کاربری، برنامه نویسی سمت سرور و برنامه نویسی موبایل
@ali.bayat
بهرحال اگر راه بی انتهایی هم باشه براش، باید یک مسیری رو درونش پیمود تا بشه پیش رفت وگرنه همچنان راه بی انتهایی جلو روی ماست که قدم رو به جلویی براش برنداشتیم و در جایی از راه متوقف شدیم.
شما در خصوص نحوه ی پیمودن و حرکت رو به جلو درین مسیر بی انتها نکاتی رو مطرح نکردید. فکر می کنم بشه معیارها و نکاتی رو بیان کرد که کدنویس بهتری از خودمون بسازیم.
درود. ببینید بحث خیلی کلیه. مثلاً PHP رو در نظر بگیرید. این زبان به دلیل سینتکسش راههای زیادی رو برای انجام یک کار در اختیار توسعه دهنده قرار میده ... اینکه توسعه دهنده از چه راهی به هدفش میرسه بستگی به این داره که چقدر از Best Practice ها پیروی کنه...
کدی که استاندارد نوشته بشه، توسط جامعه توسعه دهنده ها قابل درک و ویرایش و در نهایت مشارکت هست.
من توسعه های زیادی رو دیدم که فقط یک تکه کد رو به مرحله کارکردن میرسانند.. دیگه نه مستنداتی داره.. نه الگویی درش رعایت شده و بعضاً پیش میاد خود شخصی که کدهارو نوشته بعد از چند ماه حتی خودشم نمیفهمه چکار کرده.
یعنی قبل از اینکه اینجوری PHP مدرن بشه.. شرایط کلا فرق داشت. اومدن شئ گرایی رو معرفی کردند بعدش PSR ها به نوبت اومدند و در حال حاظر هر لحظه داره یه گزینه جدید اضافه میشه. درسته میشه این هارو یاد گرفت و هرچند سال یکبار به روز شد اما کار کردن بصورت دائم و تخصصی در یک زمینه باعث رشد غیرقابل باوری در اون میشه.
بروز بودن و دنبال کردن انجمن های برنامه نویسی زبان مورد نظر (community)، دنبال کردن سایت های اموزشی، رعایت اصول در کدنویسی ، تمیز کد زدن، کامنت گذاری و...
خلاصه بگم من برنامه نویس خوبی نیستم فقط عمل گرا هستم پروژه میدن تموم میکنم بعضی وقتها هم ناتموم میمونن. واقعا وقت و حوصله تمیز کد زدن ندارم تویی این سرعت اطلاعات ندارم ولی تا جایی که بشه رعایت میکنم کثیف کاری نشه ولی نه اونجوری که عنوان میشه :((
حتما پادکست خوبی میشه برای من که واقعا با یک دست چندتا هندونه برندارم :)
@ali.bayat
اینجوری بخوایم حساب کنیم، پس میشه چنین عملی رو صورت داد:
اول برنامه نویسی رو سطح بندی کرد، یک ایده آلی رو در نظر گرفت و ویژگی هایی رو براش مشخص کرد.
سپس مسیری که برای تبدیل شدن و رسیدن به اون برنامه نویس ایده آل باید صورت داد رو بگیم.
یعنی در واقع سوال اصلی میشه اینکه:
یک برنامه نویس حرفه ای و ایده آل چه کسی هستش و چه ویژگی هایی داره؟ که البته خود این سوال هم میتونه خرد بشه به اینکه: یک طراح وب ایده آل چه ویژگی هایی داره؟ یک توسعه دهنده وب ایده آل چه ویژگی هایی داره؟ یک برنامه نویس موبایل ایده آل چه ویژگی هایی داره؟
در مورد دسته بندی که شما عنوان کردید باید بگم که هر زبانی Learning Curve یا انحنای یادگیری خودش رو داره... اما یه سری موارد رو همه جا میشه رعایت کرد.
در ادامه بحث PHP یه نکته رو فراموش کردم:
بنده کمتر توسعه دهنده ایرانی رو دیدم که برای اپلیکیشن لاراولی تست بنویسه.. چه یونیت تست و چه فیچر تست (البته کسانی رو هم دیدم که حتی برای پکیج هاشون هم تست مینویسند، اما نه تعداد زیادی)
اصلا نمیدونم داستانش چیه.. هممون به نحوی در مقابل استفاده از توسعه آزمون محور مقاومت میکنیم. نه اینکه بگم من خودم تمام پروژه ها رو به این شکل پیاده کردم... خیر اصلا اینطور نیست.
اما از یه جایی به بعد در دستور کار قرارش دادم و نتایجش واقعا عالیه....
این تست ها خودشون یه جور مستندات هستند در کنار اینکه شما داری عملکرد سیستم رو به طور کامل تست میکنی.. حتی بدون اینکه مرورگر رو باز کنی. این باعث میشه زمان توسعه کاهش پیدا کنه و با وجود تست برای هر ویژگی در سیستم، میتونیم بدون هراس از اینکه قسمتی از کد رو خراب کنیم; به ریفکتور کردن بپردازیم.. حالا تصور کنید در یه پروژه بزرگ که ممکنه چندین ماه یه تیم روش کار کنند، وجود همچین قابلیتی چقدر مهمه.
امیدوارم استفاده از این سبک توسعه و ابزارهایی مثل PHPUnit بین توسعه دهنده های ایرانی زبان PHP فراگیرتر بشه. (چقدر خوبه آقای @hesammousavi یه پادکست هم در این زمینه منتشر کنند.)
این مثال به طور خاص مربوط به زبان PHP بود (هر چند مفهوم تستینگ در جاوااسکریپت و بعضی زبان های دیگه هم هست) اما تصور کنید هر زبان دیگه هم چنین موارد اختصاصی و پیشرفته ای رو در خودش داره:
تمام زبان ها یه سری کلیدواژه و طریقه عملکرد در اختیار ما میگذارند که نهایتا باهاش یک مسئله رو حل میکنیم. اما کیفیت حل مسئله هم مهمه.. در واقع همین کیفیته که بین یک توسعه دهنده آماتور و یک توسعه دهنده ارشد تفاوت ایجاد میکنه. نه بین اشخاص بلکه بین کدهایی که مینویسند.
مدیریت فایل ها رو در نظر بگیرید. لاراول برای این کار از کتابخونه معروف Flysystem استفاده میکنه.
اگر به طور مستقیم با این کتابخونه کار کرده باشید متوجه میشید که اسم متدهایی که در این کتابخونه هست، با اسم متدهایی که در لاراول استفاده میکنیم فرق داره (در لاراول اکثر جاها متد get رو داریم... در حالی که معادلش در flysystem متد read هست).. ترفند لاراول این بوده که از الگوی طراحی آداپتور استفاده کرده و برای راحتی کاربر متدهای دسترسی رو تغییر داده.
با سلام
در پادکستی که زحمت میکشید لطفا مباحث زیر را هم در نظر بفرمایید:
مرسی
در مورد چالش برنامه نویس ها هم صحبت کنید:
یه اصل کلی وجود داره. اونم اینه که اگه یه نرم افزار فقط توی یک سیستم اجرا نشه اون سیستم قطعا سیستم کارفرمای پروژه است.
به تجربه بارها و بارها برام ثابت شده
@hesammousavi
سلام،
من تجربه ای که به درد دوستان بخوره ندارم در این زمینه اما امروز یکباره توی یکی از این گروه ها یکی اومد در جواب یکی از دوستان حرفای عجیبی میزد میگفت یادگرفتن زبانها و فریمورک ها همه کلا یک ابزارن و کلا 30 درصد برنامه نویسی هستش و می گفت نحوه آموزش در ایران کلا اشتباهه ، برداشت کلی که من از حرفاشون کردم اینطوریه که ابتدا باید اصولی که شامل موارد زیر هستند آموزش داده بشه بعد زبان ها و فریمورک ها :
خوب دیدن ، روش های جمع آوری داده و اطلاعت ، روشهای تجزیه تحلیل تفسیر ، فرآیند سازی ، ارتباط معنایی
اصطلاحاتی که شخصا بار اوله میشنوم
میگفت اساتید برنامه نویسی در ایران یا به خاطر ضعف خودشون و نداستن این موارد یا ناتوانی در تدریس و ارائه به آموزش های پروژه محور روی میارن
حالا در این بحث این موضوع رو مطرح کردم چون واقعا اگر 70 درصد دنیایی که ایشون میگن تدریس نمیشه و یاد داده نمیشه دیگه واقعا باید بگیم انا لله و انا الیه راجعون
و اینکه با این اوصاف چجور میتونیم برنامه نویس بهتری بشیم ؟؟!!!
ایشون رو هم به این بحث دعوت میکنم که اگر خواستن خودشون هم حرف بزنن
اینکه فریمورک ها و زبان ها ابزار هستند شکی توش نیست.
جمع اوری داده ها [اصلا زیاد جدی نگرفتم] ولی مطمنا تیم ها اینجوری فکر نمیکنن
روش تحلیل و تجزیه [اصلا در این مورد هیچ چیزی نتونستم بفهم و یاد بگیرم] مطمنا شرکت و تیم های فنی همیشه این مورد رو انجام میدن و حتی متخصصین این حوزه رو دارن .
فرایند ایجاد تا پایان یک وبسایت یا نرم اف
زار [تا حدودی فکر کردم در موردش ولی اصلا پیاده نکردم همیشه پروژه باز بوده تا به جنگ ختم شده] تویی تیم های بزرگ مثه شرکت پتروشیمی ماهشهر که دوستی دارم اونجا فعالیت داره از ابتدا تا انتهای نرم افزار براش برنامه دارن و هرمدت هم جلسه با متخصصین دارن.
سلام به همه دوستان و @hesammousavi ممنون از این که میخواید این پادکست رو ضبط کنید خوشحال می شم نظر دوستان رو بدونم.
من نسبت به دوستان تجربه خیلی پایینی دارم و اگه جسارت کردم دوستان ببخشن ، فقط مواردی که به ذهنم می رسه رو میگم شاید بدرد بخوره. به نظرم مقوله برنامه نویسی در ایران به نسبت کشورهای دیگه از یه سطحی بالاتر نمی ره و این موضوع چند تا علت داره ... اول اینکه هدفی که افراد برای برنامه نویس شدن و یادگیری این موضوع دارن یا سطحیه یا هدف ندارن و صرفا می خوان مشغول باشن یا کپی برداریه در کل کمتر دیده می شه که شخصی بیاد و با این هدف که یه پروژه نو آورانه و بزرگ رو توی ذهنش داشته باشه بیاد و برنامه نویسی یاد بگیره و دلیلم اینه که شما اگه به تقاضا و عرضه آموزش هایی برنامه نویسی توی ایران نگاه کنید می بینید مثلا توی آموزش وب سایت فروشگاهی خیلی بالاست و مثلا در زمینه برنامه نویسی C++ ویه پروژه مثلا هوش مصنوعی یا یه بازی هیچی نتونی پیدا کنی (مقایسه کنید با پروژه هایی که توی سیلسکون ولی زده میشه یا انواع و اقسام پکیج های عجیب و غریب توی نت که اکثرا اونایی که نوآورانه هستش نویسنده هاش خارجی هستن یا شرکت های بزرگ آی تی در دنیا ).
2-کار گروهی توی ایران تقریبا مرده و اگر هم باشه خیلی کمه مثلا توی همین راکت شما بخشی برای انجام پروژه گروهی نمی بینی که دلیلاش هم اینه افراد بهم اعتماد ندارن یا اینکه اونی که سطحش بالاتر از بقیس نمی تونه با دیگری کار کنه یا اینکه اصلا پروژه مناسب تعریف نمی شه که بخواد کار گروهی بشه و ... البته از دوستان عذرخواهی میکنم که اینطوری دارم نظرم رو می گم خودم اول از همه منظورم بود و تازه من خودم رو اصلا برنامه نویس نمی دونم امیدوارم عفو کنید شاید خیلی ها اینطور نباشن.
به نظرم تا وقتی روند کار به این منوال باشه شاهد رشد سطح برنامه نویسی نخواهیم بود.
در کل تا برنامه نویس پروژه هایی چالشی و جدید انجام نده و تا کار گروهی نباشه افراد بتونن تبادل تجربه کنن نمیشه برنامه نویس بهتری شد.
من در تجربه ای نیستم که بخوام سوال موضوع رو مثل بعضی دوستان پاسخ بدم بیشتر میتونم توصیه (یا سوال) برای محتوای بحث داشته باشم که خودم هم استفاده کنم، اون هم نحوه مطمئن شدن از "درست نوشتن" یک برنامه هست (در مهندسی نرم افزار یک بحث هست که میگه در کنار اینکه "برنامه ی درست" رو میسازید باید "برنامه رو درست" بسازید. )
مثلا شما میگید یک سیستم لوگین و رجیستر بنویس و من هم php یا لاراول رو باز میکنم و مینویسم و کار هم میکنه، اما برای منی که تقریبا کم تجربه هستم آیا معیار و استاندارد خاصی هست که کد نویسیم رو چک کنم، آیا امنیتش، اصول کد نویسی، بهینه بودن و .. در اون رعایت شده و یا فرضاً سنت های خاصی که برای سیستم لوگین رعایت میشه و .. ! یا دونستن اینا فقط نیازمند تجربه و زمان هست؟
اصلا چنین حساسیتی (در حالیکه آموزش اون زبان رو کامل دیدیم) کار خوبیه یا بده و وسواس؟
فکر میکنم این هم یکجورهایی در راستای تبدیل شدن به یک برنامه نویس خوب خیلی مهمه تقریباً موضوع بحث شما..
و یکی هم آمادگی و ارتقا برای کار شرکتی و بازار Real world هست، آیا باید قواعد خاصی رو بدونیم کار خاصی بعد از آموزش دیدن انجام بدیم مثلا حتما کاراموز بشیم یا فری لنسری کنیم یا هر روشی که برای ارتقا ضروریه!
ممنونم.
به نظر من این روز ها برنامه نویس ها همه چی رو می دونند، میدونن باید چی یاد بگیرن یا مثلا فلان زبان رو چقدر دیگه باید تلاش کنن تا مهارت درش کسب کنن. من فکر می کنم نکته ای که این روز ها برای برنامه نویس ها حائز اهمیت هست اینه که به خودشون و زندگی شخصی شون هم رسیدگی کنن. به شخصه فکر می کنم که برنامه نویس ها هر چقدر هم که در برنامه نویسی قدرتمند باشند معمولا و معمولا در جایگاه اجتماعی قدرت خاصی ندارن شاید مواردی که دارم بیان می کنم خیلی بی ربط باشه ولی فکر میکنم که همه باید برای ارتقا جایگاه برنامه نویس ها در جامعه و هم چنین اصلاح سبک زندگی برنامه نویسان تلاش بکنند.
در نهایت هم باز بگم من عده ای رو مورد خطاب قرار دادم.
سلام خدمت همه دوستان
@hesammousavi
@ali.farmani
@ali.bayat
@milad
بیایید یه مثالی رو در نظر بگیریم
یه آدمی که شغلش مترجمی هست، مترجم زبان ، حالا هر زبانی ، آلمانی ، فرانسوی ، انگلیسی و ... هر چی...!
چجوری میتونه یه مترجم موفق و خوب باشه؟
1) استعداد باید داشته باشه
2) با انواع و اقسام آدم ها صحبت کرده باشه ، با خانوم خارجی ، یه آقای خارجی ، یه بچه خارجی،
با یه آدم خوشحال ، با یه آدم ناراحت
با همه جور حالات انسان های مختلف باید برخورد داشته باشه!! تا بتونه تو کارش موفق باشه و در هر مرحله ای بهترین عملکرد رو از خودش نشون بده!
یه برنامه نویس اگر بخواد عملکرد خوبی داشته باشه ، به نظر من تلاش باید کنه
عقب نشینه! ، تمرین ، تکرار
سورس زیاد ببینه ، بخونه ، تحلیل کنه ، ادیت کنه ، بنویسه!!!
خیلیا تو برنامه نویسی میگن اوووووووووووووووو برنامه نویسی فروشگاه انلاین دیگه خیلیههههههههههههههه خوبه!! آقا چه ربطی داره!
یه CMS نکات خودش رو داره
یه shop تکنیک های خودشو داره ،
یه آموزشگاه متد های خودش رو داره
و توی هر نوعی از کار خیلی نکات پنهان است!
برنامه نویس بهتر ، برتری و بهتریش ، در تجربه کاریشه!
به تعداد کاراییی که دیده ، نوشته ، تحلیل کرده ، قدرت منطقش چقدره!! به اینا وابسته هست
وگر نه خیلیا هستن PHP بلدن! جاوا بلدن ، موبایل رو بلدن! به بلدی باشه، بله وقت میزارن یاد میگیرن و بلد میشن! (ماکارونی رو بلد نباشید ، وقت میزارید 1 ساعت ، دستور العملشو میخونید میپزید ، اما آیا این ماکارونی با ماکارونی که مادرها یا آشپزها عمریه پختن اون رو ،یکیه؟؟ خیر!!!! )
برنامه نویس بهتر اونیه که
برای هر پروژه ، بهترین زبان رو در نظر بگیره، بهترنی فریم ورک رو، بهترین متد ها و بهینه ترین متد هارو! که بهترین کار از آب در بیاد!!
درود علی جان..
بحث تسلط رو که عنوان کردید کاملا درسته. خیلی فرق هست بین بلد بودن و مسلط بودن به یه زبان، ابزار یا فریمورک..
این داستان نه تنها در برنامه نویسی بلکه در سایر علوم مثل ریاضی و فیزیک هم هست
یه جمله معروف داریم که میگه:
If you can't explain it, then you dont understand it
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟