SlideShare une entreprise Scribd logo
1  sur  17
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

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 PainMozaic Works
 
Be a passionate Programmer!
Be a passionate Programmer!Be a passionate Programmer!
Be a passionate Programmer!Neo Chen
 
The State of Frontend
The State of FrontendThe State of Frontend
The State of FrontendJimit Shah
 
Improve performance of developer - Khodak
Improve performance of developer  - KhodakImprove performance of developer  - Khodak
Improve performance of developer - KhodakIgor Bronovskyy
 
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 webSandra Barkevich
 
Better Software Through User Research
Better Software Through User ResearchBetter Software Through User Research
Better Software Through User ResearchAlexandra Leisse
 
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 DiceMike Clement
 
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 workshopLeanAgileTraining
 
Remote team building- eng version
Remote team building- eng versionRemote team building- eng version
Remote team building- eng versionDavide Mezzetti
 
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 workshopLeanAgileTraining
 
Applying Patterns to Mobile Design
Applying Patterns to Mobile DesignApplying Patterns to Mobile Design
Applying Patterns to Mobile DesignSteven Hoober
 
RDVO - Building UX Pattern Libraries
RDVO - Building UX Pattern LibrariesRDVO - Building UX Pattern Libraries
RDVO - Building UX Pattern LibrariesBen Zipkin
 
Learning how to teach Ops.
Learning how to teach Ops.Learning how to teach Ops.
Learning how to teach Ops.John Contad
 
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 devicesTony Abou-Assaleh
 
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)MarsBased
 
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 projectImre Fazekas
 
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)Vlad Micu
 
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 ProjectsJeremy Ward
 
Game Development Careers
Game Development CareersGame Development Careers
Game Development CareersJesse Schell
 

Tendances (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
 

En vedette

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 geniusNews World India
 
Becoming a Better Programmer (2013)
Becoming a Better Programmer (2013)Becoming a Better Programmer (2013)
Becoming a Better Programmer (2013)Pete Goodliffe
 
Programming languages
Programming languagesProgramming languages
Programming languagesAkash Varaiya
 
Presentation on generation of languages
Presentation on generation of languagesPresentation on generation of languages
Presentation on generation of languagesRicha Pant
 
Top Ten Internet Uses in Education
Top Ten Internet Uses in EducationTop Ten Internet Uses in Education
Top Ten Internet Uses in Educationdeand73
 
Bangladesh final ppt
Bangladesh final pptBangladesh final ppt
Bangladesh final pptJosephite
 

En vedette (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
 

Similaire à 12 Things Every Programmer Should Know

Becoming a Web Design Champion
Becoming a Web Design ChampionBecoming a Web Design Champion
Becoming a Web Design ChampionMeagan Fisher
 
14 Habits of Great SQL Developers
14 Habits of Great SQL Developers14 Habits of Great SQL Developers
14 Habits of Great SQL DevelopersIke Ellis
 
Running a Successful Open Source Project
Running a Successful Open Source ProjectRunning a Successful Open Source Project
Running a Successful Open Source ProjectRob Reynolds
 
Essential programmer library
Essential programmer libraryEssential programmer library
Essential programmer libraryAndrew Hunt
 
Write code and find a job
Write code and find a jobWrite code and find a job
Write code and find a jobYung-Yu Chen
 
Untangling - fall2017 - week 7
Untangling - fall2017 - week 7Untangling - fall2017 - week 7
Untangling - fall2017 - week 7Derek Jacoby
 
14 Habits of Great SQL Developers
14 Habits of Great SQL Developers14 Habits of Great SQL Developers
14 Habits of Great SQL DevelopersIke Ellis
 
Becoming A Technical Project Manager
Becoming A Technical Project ManagerBecoming A Technical Project Manager
Becoming A Technical Project ManagerScott Massey
 
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.meJose palala
 
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 needsSteven Francia
 
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 CampScott Massey
 
Embracing OSS in the enterprise
Embracing OSS in the enterpriseEmbracing OSS in the enterprise
Embracing OSS in the enterprisecyberzeddk
 
Developers Best Practices
Developers Best PracticesDevelopers Best Practices
Developers Best Practicesaqib javaid
 
Agile forthelongrun lesfurets
Agile forthelongrun lesfuretsAgile forthelongrun lesfurets
Agile forthelongrun lesfuretsDimitri Baeli
 
Android Developer Training
Android Developer TrainingAndroid Developer Training
Android Developer Trainingfaizrashid1995
 
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...Steven Hoober
 
Prototyping like it is 2022
Prototyping like it is 2022 Prototyping like it is 2022
Prototyping like it is 2022 Michael Yagudaev
 
MagmaRails - Passionate Programmer
MagmaRails - Passionate ProgrammerMagmaRails - Passionate Programmer
MagmaRails - Passionate ProgrammerEdwin Cruz
 

Similaire à 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
 

Plus de Samnang Chhun

Software developer career growth
Software developer career growthSoftware developer career growth
Software developer career growthSamnang Chhun
 
Why i love ruby than x
Why i love ruby than xWhy i love ruby than x
Why i love ruby than xSamnang Chhun
 
The visitor design pattern
The visitor design patternThe visitor design pattern
The visitor design patternSamnang Chhun
 
Peforming Code Katas
Peforming Code KatasPeforming Code Katas
Peforming Code KatasSamnang Chhun
 
Introduction To Share Vision
Introduction To Share VisionIntroduction To Share Vision
Introduction To Share VisionSamnang Chhun
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven DevelopmentSamnang Chhun
 
Version Control With Subversion
Version Control With SubversionVersion Control With Subversion
Version Control With SubversionSamnang Chhun
 
NHibernate (The ORM For .NET Platform)
NHibernate (The ORM For .NET Platform)NHibernate (The ORM For .NET Platform)
NHibernate (The ORM For .NET Platform)Samnang Chhun
 

Plus de 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)
 

Dernier

Introduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsIntroduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsTechSoup
 
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...christianmathematics
 
1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 -  Danh muc Sach Giao Khoa 10 . pdf1029 -  Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdfQucHHunhnh
 
PROCESS RECORDING FORMAT.docx
PROCESS      RECORDING        FORMAT.docxPROCESS      RECORDING        FORMAT.docx
PROCESS RECORDING FORMAT.docxPoojaSen20
 
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.pptxMaritesTamaniVerdade
 
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 17Celine George
 
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.docxRamakrishna Reddy Bijjam
 
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.christianmathematics
 
Making communications land - Are they received and understood as intended? we...
Making communications land - Are they received and understood as intended? we...Making communications land - Are they received and understood as intended? we...
Making communications land - Are they received and understood as intended? we...Association for Project Management
 
Micro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfMicro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfPoh-Sun Goh
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfagholdier
 
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.pdfNirmal Dwivedi
 
Dyslexia AI Workshop for Slideshare.pptx
Dyslexia AI Workshop for Slideshare.pptxDyslexia AI Workshop for Slideshare.pptx
Dyslexia AI Workshop for Slideshare.pptxcallscotland1987
 
Food safety_Challenges food safety laboratories_.pdf
Food safety_Challenges food safety laboratories_.pdfFood safety_Challenges food safety laboratories_.pdf
Food safety_Challenges food safety laboratories_.pdfSherif Taha
 
Spellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseSpellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseAnaAcapella
 
Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.pptRamjanShidvankar
 
Sociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning ExhibitSociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning Exhibitjbellavia9
 
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptxSKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptxAmanpreet Kaur
 
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.MaryamAhmad92
 
Third Battle of Panipat detailed notes.pptx
Third Battle of Panipat detailed notes.pptxThird Battle of Panipat detailed notes.pptx
Third Battle of Panipat detailed notes.pptxAmita Gupta
 

Dernier (20)

Introduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsIntroduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The Basics
 
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...
 
1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 -  Danh muc Sach Giao Khoa 10 . pdf1029 -  Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdf
 
PROCESS RECORDING FORMAT.docx
PROCESS      RECORDING        FORMAT.docxPROCESS      RECORDING        FORMAT.docx
PROCESS RECORDING FORMAT.docx
 
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
 
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
 
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.
 
Making communications land - Are they received and understood as intended? we...
Making communications land - Are they received and understood as intended? we...Making communications land - Are they received and understood as intended? we...
Making communications land - Are they received and understood as intended? we...
 
Micro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfMicro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdf
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdf
 
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
 
Dyslexia AI Workshop for Slideshare.pptx
Dyslexia AI Workshop for Slideshare.pptxDyslexia AI Workshop for Slideshare.pptx
Dyslexia AI Workshop for Slideshare.pptx
 
Food safety_Challenges food safety laboratories_.pdf
Food safety_Challenges food safety laboratories_.pdfFood safety_Challenges food safety laboratories_.pdf
Food safety_Challenges food safety laboratories_.pdf
 
Spellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseSpellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please Practise
 
Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.ppt
 
Sociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning ExhibitSociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning Exhibit
 
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptxSKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
 
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.
 
Third Battle of Panipat detailed notes.pptx
Third Battle of Panipat detailed notes.pptxThird Battle of Panipat detailed notes.pptx
Third Battle of Panipat detailed notes.pptx
 

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