how to be a better developer & programmer
TRANSCRIPT
how to be a better
Developer & Programmerیمچگونه یک توسعه دهنده و برنامه نویس بهتر باش
95مرداد -شرکت رزبن
Passion
ته اید لذت اگر شما عالقه ندارید تا برای یک روز جلوی سیستم نشسته و از خطوط کدی که خودتان نوشباشدببرید این مهارت مناسب شما نمی
اگر شما به کاری عالقه نداشته باشید تمرین کردن امری طاقت فرسا می شود
ه نویس خوب هم همه میدانند که نیازی نیست به یک گیتاریست خوب گفته شود که تمرین کن این مساله برای یک برناممصداق دارد
، مهم استخواستن تمرین کلید اصلی این است که تمرین کردن ضروی نیست
یک گیتاریست خوب نمی تواند منتظر بازگشت به خانه و برداشتن گیتار و استفاده از آن شود
به همین ترتیب یک برنامه نویس خوب نمی تواند منتظر کشف چالش کد زنی بعدی شود
شور و اشتیاق
Persistence
ود برنامه مانند یک گیتاریست که ساعت ها و روز ها بر روی کار خود وقت می گذارد تا یک نت ایجاد شنویس هم باید بتواند بار ها و بار ها برای حل مشکل خود تالش کند و ناامید نشود
پافشاری
Improve Your English Language
زبان انگلیسی خود را تقویت کنید
Work on Basics
برای هر صنعت و شغلی فهم مفاهیم نکته کلیدی موفقیت است
تا وقتی که کسی دریافت های مفاهیم قوی نداشته باشد هیچگاه یک برنامه نویس موفق نخواهد بود
فهم مفاهیم اصلی(core)به شما در طراحی و پیاده سازی بهترین راه حل در بهترین زمان ممکن کمک خواهد کرد
شت و مطالعه اگر هنوز فاصله ای بین دانش اصلی کامپیوتر و مفاهیم زبان برنامه نویسی شما وجود دارد هنوز برای بازگمفاهیم پایه ای دیر نشده است
تقویت پایه
You learn more by helping others
اغلب ما زمانی به فروم ها و گرو ها مراجعه می کنیم که نیازمند کمک باشیم
یک جدا کننده واضح میان برنامه نویس خوب و غیر خوب در مشاهده این مکان ها جهت کمک به دیگران است
در یک تیم خوب همه در حل مشکالت به همدیگر کمک می کنند
شما با کمک به دیگران یاد میگیرید
When you face an error
i'm NOT ALONE
When you see an application(web application or windows),
tell yourself. it's technically possible for you to build a similar one.
try to model it in your mind.
Write a thorough implementation plan (or model).(یا مدل) طرح اجرایی نوشتن
برای موارد کوچک این طرح می تواند یک فلوچارت ساده باشد
کند با در برای پروژه های بزرگتر این طراحی میتواند به شکستن کار به ماژول های کوچک کمک:نظر گرفتن موارد زیر
چه وظایفی را هر ماژول بر عهده دارد-
داده ها چگونه میان ماژول ها جابجا می شوند-
داده ها چگونه داخل هر ماژول استفاده می شوند-
!نفس بکش
را متوقف گیر کردید کار!!! ( البته بستگی به کد دارد) اگر در منطق یک کد بیش از دو ساعتکنید یک چای یا قهوه بخورید و مجدد امتحان کنید
! (بعضا مشاهده شده بین چای و قهوه بعضی وقت ها کد هم زده می شود )
Comment
نت گذاری اگر می بینید که کد شما نیاز مند توضیح هست کامانجام بدهید
هر تابع باید یک یا دو خط توضیح درباره آرگومان هایورودی و خروجی داشته باشد
کامنت را هنگامی که کد بروز شد ، بروز کنید!!
Use consistent naming conventions for variables
یر ها را این شیوه نام گذاری به شما کمک می کند تا نوع متغدنبال کنید
ام یکی از شیوه های متداول نمایش مجارستانی است که نمتغیر با پیشوند نوع متغیر
:ادغام می گرددintRowCounter متغیرinteger
strUserName متغیرstiring
قواعد نام گذارس سازگار برای متغیر ها
Organize your codeسازمان دهی کد
اده از ساختار های بصری جهت جداکردن ساختار های کد استفکنید
بین متغیر ها و مقادیر با اسپیس فاصله بیاندازید
ص کد های با قابلیت استفاده مجدد را از کد های صرفا مخصید این برنامه جدا کنید تا بعدا بتوانید از آن ها استفاده نماییعکار تست برنامه و نیز نوشتن برنامه های بعدی را تسر
می بخشد
هت باال بلکه ج! کد ها ی خود را زیبا بنویسد نه برای زیبا بودنه کد رفتن خوانایی این امر وقتی ممکن است شش ماه دیگر ب
!نیاز پیدا کنید ضروری تر می گردد
Write simple, understandable but logical code
مانند همه جنبه های زندگی فرمول ساده و کوتاه بگیر(keep it simple and short ) در برنامه نویسی نیز برقرارهست
کد را منطقی و بدون پیچیدگی بنویسید
بعضی از مواقع افراد کد های پیچیده را صرفا جهت نمایش توانایی های خود می نویسند
تجربه نشاند داده است کد های ساده و منطقی همیشه به خوبی کار می کنند
یک نقل قول جالب:
چگونه می من»کد خوب بهترین مستند ها را دارد ، هنگامی که می خواهید توضیحی را اضافه کنید از خود سوال کنید “Steve McConnell« توانم کد را بهبود ببخشم که نیازی به این توضیح نباشد
https://en.wikipedia.org/wiki/Steve_McConnell
ساده ، قابل فهم اما منطقی
Spend more time in analyzing the problem,
you’ll need less time to fix it
زمان بیشتری را برای فهم و تحلیل مساله و طراحی راه حل آن بگذرانید
طراحی همیشه به معنی استفاده از زبان های مدل سازی و ابزار ها نیست
دطراحی گاهی به سادگی نگاه به آسمان و تفکر درباره راه حل در ذهن می باش
فتادن لحظه اتفاق ا( جهت کد زدن ) کسانی که عادت دارند به فشار دادن کیبورد.یک مشکل معموال متفاوت از نیازمندی های ما کار رو به پایان می رسانند
نقل قول:
ما برای کد اگر شما نمی توانید ساختار یک مساله را هنگام گرفتن دوش درک کنید ، ش»Richard Pattis« کردن آن آماده نیستید
http://www.ics.uci.edu/~pattis/
آنزمان بیشتر برای تحلیل مساله ، زمان کمتر برای حل
Don’t dismay yourself by looking at changing
technology world
خود را از تغییر دنیای تکنولوژی نترسانید
Read documentation
اد یکی از عادت های ضروری یک برنامه نویس خوب مطالعه تعدزیادی از مستند ها می باشد
مانند سند هایAPI ها ، آموزش ها و...
یجاد مطالعه مستند ها به شما کمک می کند پایه ای خوب را جهت ابرنامه خود به بهترین نحوه ایجاد کنید
مطالعه مستند ها
Practice & make Mistakes
تمرین کنید ، و در طول تمرین در کنار بهبود کد زنی اشتباه کنید!
چرا اشتباه کردن مهم است ؟ با کد زدن بیشتر خطاهای شما درerror handling ،محقق می شود... و threadingطراحی ، نخ کشی
ی دهیدشما از این اشتباهات یادمیگیرید و با تمرین بیشتر مهارت خود را ارتقا م
تمرین و اتفاق افتادن اشتباه
Self learning from website and books
https://developers.google.com/البته از طریق روش های معمول در دسترس ما نیست!
https://www.codecademy.com/
https://code.org/learn
http://www.w3schools.com/
http://www.html5rocks.com/en/ ( مانند مورد اول) !
http://www.codeproject.com
https://groups.google.com/forum/#!overview
http://programmersheaven.com/
http://stackexchange.com/
خود یادگیری از طریق وب سایت ها و کتاب ها
Reflectionانعکاس
خطا برای / ن باگ هر زمانی که یک باگ را در کد خود بر طرف می کنید باید به عقب بازگشته و ببنید چگونه می توانید از ایجاد ای■اولین بار و در آینده جلو گیری کنید
Learn from other programmers
سعی کنید در پروژه هایی با انواع مختلف کار کنید
هر پروژه را به عنوان یک متد یادگیری در نظر بگیرید
ا آن ها از طریق بیرون انداختن خودتان از منطقه امن و کار با دیگر برنامه نویسان و کار بر روی وظایفی که ب.آشنایی ندارید توناهایی های جدیدی را در خود ایجاد کنید
جربه کنید تا از اگر فرصت برای شما پیش آمد برنامه نویسی دو تایی را با دیگر برنامه نویسان و توسعه دهندگان تاین طریق کیفیت کد را ارتقا ببخشید و تبدیل به یک عضو بهتر برای تیم خواهید شد
یادگیری از دیگر برنامه نویسان
Work on Open Source code
http://sourceforge.net/
https://github.com/
کار بر روی کد های متن باز
Read Code
در حال کار بر روی کد های متن باز ، سعی کنید چگونگی عملکرد آن ها را بفهمید
به دنبال الگو های موجود در کد بگردید و توانایی های خود را توسعه ببخشید
کد زنی خود را ارتقا می بخشید ...( و ! ، فهم! شعور) از این طریق به تدریج ادراک
ی دهد تا توسعه ادراک کد زنی به شما اجازه می دهند تا هنگامی که چیزی درست نباشد متوجه شوید و به شما اجازه مخطا ها و گپ ها را کشف کنید و اجازه می دهد آن ها را برطرف نمایید
!خواندن کد
Master the programming language(s) that you use or be the Jack of all trades…master of none
:در این جا دو گزینه که هر دو برای توسعه دهندگان و برنامه نویسان قابل اجرا هست وجود دارد
تمرکز بر تسلط بر روی یک زبان برنامه نویسی خاص مانند جاوا و بهترین بودن در این زبان. 1
توانایی تغییر تکنولوژی و استاندارد های برنامه نویسی که می تواند یک چند. ند زبان را توانایی باشد و چ-2.یادبگیرد و همه کاره و هیچ کاره باشد
!بهترین در زمینه خود یا همه کاره و هیچ کاره
Get Involved in Social media, communities, blogs and mailing lists
اص نیست و همه دیگر مانند گذشته نیاز به ثبت نام در یک کالس خ! تکنولوژی به سادگی قابل یادگیری شده استاطالعات مورد نیاز در دسترس می باشد
محل های خوبی برا شروع هستند... عضویت در رسانه های اجتماعی، اجتماعات آنالین ، بالگ و.
استفاده ازhttp://stackoverflow.com/ فروم ها و دیگر اجتماعات بسیار مهم هستند ،.
در رسانه های اجتماعی ، اجتماعات ، بالگ ها سهیم شوید
Write a Unit Test
Unit Testingیک فرآیند توسعه نرم افزار است به طوری که کوچکترین بخش قابل تست از یک برنامه ،unit نامیده.می شود
همه چیز را تست کنید!
ابتدا ورودی ها و مقادیر مورد انتظار سیستم را وارد نمایید
(ص میگرددباگ های پنهان مشخ) سپس مقادیری که ممکن هست اتفاق بیافتد ولی معمول نیست را امتحان کنید
تست را به گونه ای انجام دهید که شامل موارد زیر شود : هنر تست:
nullصفر و فراتر از مقادیر حداکثر مثبت ، رشته خالی و : افراط -
گیریدهمه چیز را در نظر ب! این را در نظر بگیرید که ممکن است کاربر نهایی عجیب باشد: مقادیر بی معنی -
...صفر در تقسیم و : مقادیر غیر صحیح -
تست
Do a Code review and send your code review to others to critic
انجام یک بازبینی کد بسیار مهم می باشد.
افت هنگام بازبینی شما ادراک کد نویسی خود را بهبود می بخشید و از طریق دریبازخورد از دیگران همزمان به دیگران جهت بهبودشان کمک می کنید
ر روی آن هنگامی که شما بر روی یک کد کار می کنید به دلیل اینکه زمان زیادی را بایی کشف توان! قرار میدهید به اشتباهات خودتان پی نمیبرید و یک جفت چشم سرحال
.آن ها را دارد
یدکد را بازبینی نمایید و این بازبینی را به دیگران جهت نقد ارسال کن
Explore
در کار بار نرم افزار ها ، سیستم های عامل ، اپلیکیشن ها به دنبال اکشتاف باشیم!
امه نویسی به طور مثال پیدا کردن کلید های میانبر جهت بهبود سرعت کار اگرچه به خودی خود ارتباط خاصی با برنندارد اما به باال بردن ادراک برنامه نویسی کمک می کند
اکتشاف
Search
در اکثر سیستم های توسعه نرم افزار مانندvisual studio و همینطور سیستم هایهنگام بروز خطا ، کد خطا نیز نمایش MSSQL Serverمدیریت پایگاه داده مانند
ا گفته داده می شود که با یک جستجوی ساده در پایگاه معتبری که تعدادی از آن ه.شد مشکل بر طرف می گردد
د راه حل قبل از جستجو برای حل مشکل ، مساله را یکبار برای خود شرح بدهید شای.انتخابی شما داری نقصی باشد
حل بهترین راه حل ساده ترین راه حل نیست ، پیچیده ترین راه حل بهترین راه!نیست
چگونه جستجو کنیم
Don’t compare yourself with others
ددمقایسه خود با دیگران فقط سبب ایجاد احساس منفی می گر
هر کس توانایی ها و ضعف های مخصوص به خود را دارد
ر کنیممهمترین مساله این است که ما خود را بشناسیم و روی خود کا
بارها دیده شده است که افرادfundoo-programmers یا برنامهنویسان اساسا قوی اشتباهات احقمانه انجام داده اند
یست کنید خود را تحلیل کنید ، نواحی که می توانید بهبود ببخشید ل.و بر روی ان ها کار کنید
خود را با دیگران مقایسه نکنیم
Practice, practice, practice
برنامه نویسی یک رشته راکد نیست !
دهمیشه چیز های جدید برای یادگیری و شاید مهمتر از آن چیزهایی برای یادگیری مجدد وجود داشته باشن
Any fool can write code that a computer can
understand. Good programmers write code
that humans can understand. ~Martin Fowler
Martin Fowler
Publications
1996. Analysis Patterns: Reusable Object Models. Addison-Wesley. ISBN 0-201-89542-0.
1997. UML Distilled: A Brief Guide to the Standard Object Modeling Language. Addison-Wesley. ISBN 978-0-201-32563-8.
1999. Refactoring: Improving the Design of Existing Code, With Kent Beck, John Brant, William Opdyke, and Don Roberts (June
1999). Addison-Wesley. ISBN 0-201-48567-2.
2000. Planning Extreme Programming. With Kent Beck. Addison-Wesley. ISBN 0-201-71091-9.
2002. Patterns of Enterprise Application Architecture. With David Rice, Matthew Foemmel, Edward Hieatt, Robert Mee, and Randy
Stafford. Addison-Wesley. ISBN 0-321-12742-0.
2010. Domain-Specific Languages. With Rebecca Parsons. Addison-Wesley. ISBN 978-0-321-71294-3.
2012. NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence. With Pramod Sadalage. Addison-
Wesley. ISBN 978-0-321-82662-6.
2013. Refactoring: Ruby Edition. With Kent Beck, Shane Harvie, and Jay Fields. Addison-Wesley. ISBN 978-0-321-98413-5.
Programming is a real fun, enjoy it
منابع
https://blog.idrsolutions.com/2014/07/top-11-ways-better-developer-programmer/
http://searchsoftwarequality.techtarget.com/definition/unit-testing
http://gettingthingsdone.com/
https://dzone.com/articles/10-effective-ways-become-good
https://en.wikipedia.org/wiki/Hungarian_notation
اتشکر از توجه شم