SlideShare a Scribd company logo
1 of 17
Download to read offline
12 Things Every Programmer
       Should Know
      by Samnang Chhun



                         Barcamppp 2010
About Me
•   samnang.chhun@gmail.com
•   @samnangchhun
•   http://wowkhmer.com
•   Ruby and Rails Developer
•   .NET Developer (MCTS)
•   Yoolk Inc.
•   Share Vision Team Core Member
1   Be Passionate
          •   Love what you are doing
          •   Be creative
          •   Want to do it best
          •   Better than yesterday

“Programmers are a subset of creators have the
    responsibility to shape the new world”,
         @steveklabnik and @judofyr
2
Love Your Codes
    • Write codes for human, but bad
      programmers write codes for machine
    • Every programmer loves to work with
      Clean Code
3   Version Control
      •   Backup your codes
      •   Tracking changes (who, what, when)
      •   Work in parallel
      •   Commit often
      •   Never commit when your build fail
4   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
5   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
6   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, …
7
 Follow Patterns
and Best Practices

    •   Object Oriented Design Principles
    •   SOLID
    •   GRASP
    •   DRY
    •   KISS
    •   Don’t Tell Us
    •   Design Patterns
8   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
9   Automation
     • Make your manual tasks are
       automatable
     • Command line are your friend
     • Make a shortcut of your repeated tasks
     • Continuous Integration
     • Automation Deployment
Understand
10   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
Continuous
11     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
Participate in
12   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
+1
         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
References
Q&A

More Related Content

What's hot

Open Agile Romania 2011/Catalin Sindelaru - Scrum Pain
Open Agile Romania 2011/Catalin Sindelaru  - Scrum PainOpen Agile Romania 2011/Catalin Sindelaru  - Scrum Pain
Open Agile Romania 2011/Catalin Sindelaru - Scrum Pain
Mozaic Works
 
Intro to the creative writing process web
Intro to the creative writing process webIntro to the creative writing process web
Intro to the creative writing process web
Sandra Barkevich
 

What's hot (20)

Open Agile Romania 2011/Catalin Sindelaru - Scrum Pain
Open Agile Romania 2011/Catalin Sindelaru  - Scrum PainOpen Agile Romania 2011/Catalin Sindelaru  - Scrum Pain
Open Agile Romania 2011/Catalin Sindelaru - Scrum Pain
 
Be a passionate Programmer!
Be a passionate Programmer!Be a passionate Programmer!
Be a passionate Programmer!
 
The State of Frontend
The State of FrontendThe State of Frontend
The State of Frontend
 
Improve performance of developer - Khodak
Improve performance of developer  - KhodakImprove performance of developer  - Khodak
Improve performance of developer - Khodak
 
Intro to the creative writing process web
Intro to the creative writing process webIntro to the creative writing process web
Intro to the creative writing process web
 
Better Software Through User Research
Better Software Through User ResearchBetter Software Through User Research
Better Software Through User Research
 
Play to Learn: Agile Games with Cards and Dice
Play to Learn: Agile Games with Cards and DicePlay to Learn: Agile Games with Cards and Dice
Play to Learn: Agile Games with Cards and Dice
 
Intro to our Agile Release Planning workshop
Intro to our Agile Release Planning workshopIntro to our Agile Release Planning workshop
Intro to our Agile Release Planning workshop
 
Remote team building- eng version
Remote team building- eng versionRemote team building- eng version
Remote team building- eng version
 
Intro to our CSM Course & Agile Release Planning workshop
Intro to our CSM Course & Agile Release Planning workshopIntro to our CSM Course & Agile Release Planning workshop
Intro to our CSM Course & Agile Release Planning workshop
 
Applying Patterns to Mobile Design
Applying Patterns to Mobile DesignApplying Patterns to Mobile Design
Applying Patterns to Mobile Design
 
What is devops
What is devopsWhat is devops
What is devops
 
RDVO - Building UX Pattern Libraries
RDVO - Building UX Pattern LibrariesRDVO - Building UX Pattern Libraries
RDVO - Building UX Pattern Libraries
 
Learning how to teach Ops.
Learning how to teach Ops.Learning how to teach Ops.
Learning how to teach Ops.
 
Building a real time html5 app for mobile devices
Building a real time html5 app for mobile devicesBuilding a real time html5 app for mobile devices
Building a real time html5 app for mobile devices
 
How to manage remote teams 101 (keynote at Conector Barcelona)
How to manage remote teams 101 (keynote at Conector Barcelona)How to manage remote teams 101 (keynote at Conector Barcelona)
How to manage remote teams 101 (keynote at Conector Barcelona)
 
Golden rules for JS introduction to your EE project
Golden rules for JS introduction to your EE projectGolden rules for JS introduction to your EE project
Golden rules for JS introduction to your EE project
 
Dealing with adversity (as a Game Dev Student)
Dealing with adversity (as a Game Dev Student)Dealing with adversity (as a Game Dev Student)
Dealing with adversity (as a Game Dev Student)
 
Good, Fast, and Cheap: How Modular Design Improves Our Projects
Good, Fast, and Cheap: How Modular Design Improves Our ProjectsGood, Fast, and Cheap: How Modular Design Improves Our Projects
Good, Fast, and Cheap: How Modular Design Improves Our Projects
 
Game Development Careers
Game Development CareersGame Development Careers
Game Development Careers
 

Viewers also liked (6)

Nine inspirational quotes from mark zuckerberg a boy genius
Nine inspirational quotes from mark zuckerberg  a boy geniusNine inspirational quotes from mark zuckerberg  a boy genius
Nine inspirational quotes from mark zuckerberg a boy genius
 
Becoming a Better Programmer (2013)
Becoming a Better Programmer (2013)Becoming a Better Programmer (2013)
Becoming a Better Programmer (2013)
 
Programming languages
Programming languagesProgramming languages
Programming languages
 
Presentation on generation of languages
Presentation on generation of languagesPresentation on generation of languages
Presentation on generation of languages
 
Top Ten Internet Uses in Education
Top Ten Internet Uses in EducationTop Ten Internet Uses in Education
Top Ten Internet Uses in Education
 
Bangladesh final ppt
Bangladesh final pptBangladesh final ppt
Bangladesh final ppt
 

Similar to 12 Things Every Programmer Should Know

Agile forthelongrun lesfurets
Agile forthelongrun lesfuretsAgile forthelongrun lesfurets
Agile forthelongrun lesfurets
Dimitri Baeli
 

Similar to 12 Things Every Programmer Should Know (20)

Becoming a Web Design Champion
Becoming a Web Design ChampionBecoming a Web Design Champion
Becoming a Web Design Champion
 
OpenSource и Вы
OpenSource и ВыOpenSource и Вы
OpenSource и Вы
 
14 Habits of Great SQL Developers
14 Habits of Great SQL Developers14 Habits of Great SQL Developers
14 Habits of Great SQL Developers
 
Running a Successful Open Source Project
Running a Successful Open Source ProjectRunning a Successful Open Source Project
Running a Successful Open Source Project
 
Essential programmer library
Essential programmer libraryEssential programmer library
Essential programmer library
 
Write code and find a job
Write code and find a jobWrite code and find a job
Write code and find a job
 
Untangling - fall2017 - week 7
Untangling - fall2017 - week 7Untangling - fall2017 - week 7
Untangling - fall2017 - week 7
 
14 Habits of Great SQL Developers
14 Habits of Great SQL Developers14 Habits of Great SQL Developers
14 Habits of Great SQL Developers
 
Becoming A Technical Project Manager
Becoming A Technical Project ManagerBecoming A Technical Project Manager
Becoming A Technical Project Manager
 
How to be a contributor to Drupal by Drupalista.me
How to be a contributor to Drupal by Drupalista.meHow to be a contributor to Drupal by Drupalista.me
How to be a contributor to Drupal by Drupalista.me
 
What every successful open source project needs
What every successful open source project needsWhat every successful open source project needs
What every successful open source project needs
 
Becoming A Technical Project Manager - Capital Camp
Becoming A Technical Project Manager - Capital CampBecoming A Technical Project Manager - Capital Camp
Becoming A Technical Project Manager - Capital Camp
 
Embracing OSS in the enterprise
Embracing OSS in the enterpriseEmbracing OSS in the enterprise
Embracing OSS in the enterprise
 
Developers Best Practices
Developers Best PracticesDevelopers Best Practices
Developers Best Practices
 
Agile forthelongrun lesfurets
Agile forthelongrun lesfuretsAgile forthelongrun lesfurets
Agile forthelongrun lesfurets
 
Android Developer Training
Android Developer TrainingAndroid Developer Training
Android Developer Training
 
Avoiding the Heuristic Solution: Moving past functional and correct to joyful...
Avoiding the Heuristic Solution: Moving past functional and correct to joyful...Avoiding the Heuristic Solution: Moving past functional and correct to joyful...
Avoiding the Heuristic Solution: Moving past functional and correct to joyful...
 
Prototyping like it is 2022
Prototyping like it is 2022 Prototyping like it is 2022
Prototyping like it is 2022
 
MagmaRails - Passionate Programmer
MagmaRails - Passionate ProgrammerMagmaRails - Passionate Programmer
MagmaRails - Passionate Programmer
 
It's XP, Stupid
It's XP, StupidIt's XP, Stupid
It's XP, Stupid
 

More from Samnang Chhun (10)

Find your passion
Find your passionFind your passion
Find your passion
 
Software developer career growth
Software developer career growthSoftware developer career growth
Software developer career growth
 
Why i love ruby than x
Why i love ruby than xWhy i love ruby than x
Why i love ruby than x
 
The visitor design pattern
The visitor design patternThe visitor design pattern
The visitor design pattern
 
Peforming Code Katas
Peforming Code KatasPeforming Code Katas
Peforming Code Katas
 
Introduction To Share Vision
Introduction To Share VisionIntroduction To Share Vision
Introduction To Share Vision
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Version Control With Subversion
Version Control With SubversionVersion Control With Subversion
Version Control With Subversion
 
Layering
LayeringLayering
Layering
 
NHibernate (The ORM For .NET Platform)
NHibernate (The ORM For .NET Platform)NHibernate (The ORM For .NET Platform)
NHibernate (The ORM For .NET Platform)
 

Recently uploaded

Vishram Singh - Textbook of Anatomy Upper Limb and Thorax.. Volume 1 (1).pdf
Vishram Singh - Textbook of Anatomy  Upper Limb and Thorax.. Volume 1 (1).pdfVishram Singh - Textbook of Anatomy  Upper Limb and Thorax.. Volume 1 (1).pdf
Vishram Singh - Textbook of Anatomy Upper Limb and Thorax.. Volume 1 (1).pdf
ssuserdda66b
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
heathfieldcps1
 

Recently uploaded (20)

Spatium Project Simulation student brief
Spatium Project Simulation student briefSpatium Project Simulation student brief
Spatium Project Simulation student brief
 
Vishram Singh - Textbook of Anatomy Upper Limb and Thorax.. Volume 1 (1).pdf
Vishram Singh - Textbook of Anatomy  Upper Limb and Thorax.. Volume 1 (1).pdfVishram Singh - Textbook of Anatomy  Upper Limb and Thorax.. Volume 1 (1).pdf
Vishram Singh - Textbook of Anatomy Upper Limb and Thorax.. Volume 1 (1).pdf
 
How to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POSHow to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POS
 
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdfUGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
 
How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17
 
Mixin Classes in Odoo 17 How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17  How to Extend Models Using Mixin ClassesMixin Classes in Odoo 17  How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17 How to Extend Models Using Mixin Classes
 
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptx
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptxHMCS Max Bernays Pre-Deployment Brief (May 2024).pptx
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptx
 
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
 
Fostering Friendships - Enhancing Social Bonds in the Classroom
Fostering Friendships - Enhancing Social Bonds  in the ClassroomFostering Friendships - Enhancing Social Bonds  in the Classroom
Fostering Friendships - Enhancing Social Bonds in the Classroom
 
Towards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptxTowards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptx
 
Unit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptxUnit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptx
 
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
 
This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.
 
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
 
How to Create and Manage Wizard in Odoo 17
How to Create and Manage Wizard in Odoo 17How to Create and Manage Wizard in Odoo 17
How to Create and Manage Wizard in Odoo 17
 
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
 
ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.
 
Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024
 
Python Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docxPython Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docx
 

12 Things Every Programmer Should Know

  • 1. 12 Things Every Programmer Should Know by Samnang Chhun Barcamppp 2010
  • 2. About Me • samnang.chhun@gmail.com • @samnangchhun • http://wowkhmer.com • Ruby and Rails Developer • .NET Developer (MCTS) • Yoolk Inc. • Share Vision Team Core Member
  • 3. 1 Be Passionate • Love what you are doing • Be creative • Want to do it best • Better than yesterday “Programmers are a subset of creators have the responsibility to shape the new world”, @steveklabnik and @judofyr
  • 4. 2 Love Your Codes • Write codes for human, but bad programmers write codes for machine • Every programmer loves to work with Clean Code
  • 5. 3 Version Control • Backup your codes • Tracking changes (who, what, when) • Work in parallel • Commit often • Never commit when your build fail
  • 6. 4 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
  • 7. 5 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
  • 8. 6 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, …
  • 9. 7 Follow Patterns and Best Practices • Object Oriented Design Principles • SOLID • GRASP • DRY • KISS • Don’t Tell Us • Design Patterns
  • 10. 8 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
  • 11. 9 Automation • Make your manual tasks are automatable • Command line are your friend • Make a shortcut of your repeated tasks • Continuous Integration • Automation Deployment
  • 12. Understand 10 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
  • 13. Continuous 11 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
  • 14. Participate in 12 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
  • 15. +1 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
  • 17. Q&A