12 Things Every Programmer Should Know
by Samnang Chhun
Barcamppp 2010
About Me
• [email protected] • @samnangchhun • http://wowkhmer.com • Ruby and Rails Developer • .NET Developer (MCTS) • Yoolk Inc. • Share Vision Team Core Member
Be Passionate
“Programmers are a subset of creators have the responsibility to shape the new world”,
@steveklabnik and @judofyr
1 • Love what you are doing • Be creative • Want to do it best • Better than yesterday
Love Your Codes
• Write codes for human, but bad programmers write codes for machine
• Every programmer loves to work with Clean Code
2
Version Control
• Backup your codes • Tracking changes (who, what, when) • Work in parallel • Commit often • Never commit when your build fail
3
Read Codes
• Before you become a good writer, you have to be a good reader
• Day and day programmers working hours: 70% reading and 30% writing
• Take notes on ideas or tricks of the author
4
Practice, Practice, Practice
• Small exercises, isolated problems • Practice on outside company projects • Do your best as you can(no pressure) • Practice to become a master • CodeKata, Pair with Me, Fixing bugs in
an OSS that you are using
5
Refactoring
• Improve quality of your codes, without changing system behavior
• Make it easy to understand, maintain, and extend
• “Always check a module in cleaner than when you checked it out”, Uncle Bob
• Intension-Revealing Names, Small Method, Compose Method, …
6
Follow Patterns and Best Practices
• Object Oriented Design Principles • SOLID • GRASP • DRY • KISS • Don’t Tell Us • Design Patterns
7
TDD/BDD
• Tests are specifications what the system does
• Tests are your first user • Short development iteration • Is a design process • Write just enough codes to pass the
tests
8
Automation
• Make your manual tasks are automatable
• Command line are your friend • Make a shortcut of your repeated tasks • Continuous Integration • Automation Deployment
9
Understand Your Domain
• Domain-specific won’t be outdate soon, but technologies will
• “You can’t creatively help a business until you know how it works.” Chad Fowler
10
Continuous Learning
• You need to keep learning to stay marketable
• “Be the worst,” Chad Fowler • Read books, blogs, Twitters feeds, and
websites • Listen to podcasts • Sharpening your tools
11
Participate in Communities
• A good way to learn something is to teach or speak about it
• Join or start a study group or a local user group for a language, technology, or discipline you are interested in.
• Contribute to OSS
12
What I have leanred
• Be Prepared To Unlearn • Validate assumptions about your skillset • Do less reading about what others are
doing, and more doing of things that others may want to read about
• Good Artists Copy, Great Artists Steal
+1
References
Q & A