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

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

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
 

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

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
 

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

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
 

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

9548086042 for call girls in Indira Nagar with room service
9548086042  for call girls in Indira Nagar  with room service9548086042  for call girls in Indira Nagar  with room service
9548086042 for call girls in Indira Nagar with room servicediscovermytutordmt
 
Student login on Anyboli platform.helpin
Student login on Anyboli platform.helpinStudent login on Anyboli platform.helpin
Student login on Anyboli platform.helpinRaunakKeshri1
 
Disha NEET Physics Guide for classes 11 and 12.pdf
Disha NEET Physics Guide for classes 11 and 12.pdfDisha NEET Physics Guide for classes 11 and 12.pdf
Disha NEET Physics Guide for classes 11 and 12.pdfchloefrazer622
 
Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..Disha Kariya
 
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformChameera Dedduwage
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityGeoBlogs
 
The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13Steve Thomason
 
Introduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsIntroduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsTechSoup
 
social pharmacy d-pharm 1st year by Pragati K. Mahajan
social pharmacy d-pharm 1st year by Pragati K. Mahajansocial pharmacy d-pharm 1st year by Pragati K. Mahajan
social pharmacy d-pharm 1st year by Pragati K. Mahajanpragatimahajan3
 
Arihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdfArihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdfchloefrazer622
 
IGNOU MSCCFT and PGDCFT Exam Question Pattern: MCFT003 Counselling and Family...
IGNOU MSCCFT and PGDCFT Exam Question Pattern: MCFT003 Counselling and Family...IGNOU MSCCFT and PGDCFT Exam Question Pattern: MCFT003 Counselling and Family...
IGNOU MSCCFT and PGDCFT Exam Question Pattern: MCFT003 Counselling and Family...PsychoTech Services
 
Class 11th Physics NEET formula sheet pdf
Class 11th Physics NEET formula sheet pdfClass 11th Physics NEET formula sheet pdf
Class 11th Physics NEET formula sheet pdfAyushMahapatra5
 
microwave assisted reaction. General introduction
microwave assisted reaction. General introductionmicrowave assisted reaction. General introduction
microwave assisted reaction. General introductionMaksud Ahmed
 
Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104misteraugie
 
APM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across SectorsAPM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across SectorsAssociation for Project Management
 
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...fonyou31
 

Recently uploaded (20)

9548086042 for call girls in Indira Nagar with room service
9548086042  for call girls in Indira Nagar  with room service9548086042  for call girls in Indira Nagar  with room service
9548086042 for call girls in Indira Nagar with room service
 
Advance Mobile Application Development class 07
Advance Mobile Application Development class 07Advance Mobile Application Development class 07
Advance Mobile Application Development class 07
 
Student login on Anyboli platform.helpin
Student login on Anyboli platform.helpinStudent login on Anyboli platform.helpin
Student login on Anyboli platform.helpin
 
Disha NEET Physics Guide for classes 11 and 12.pdf
Disha NEET Physics Guide for classes 11 and 12.pdfDisha NEET Physics Guide for classes 11 and 12.pdf
Disha NEET Physics Guide for classes 11 and 12.pdf
 
Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..
 
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy Reform
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activity
 
The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13
 
Introduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsIntroduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The Basics
 
social pharmacy d-pharm 1st year by Pragati K. Mahajan
social pharmacy d-pharm 1st year by Pragati K. Mahajansocial pharmacy d-pharm 1st year by Pragati K. Mahajan
social pharmacy d-pharm 1st year by Pragati K. Mahajan
 
Arihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdfArihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdf
 
Mattingly "AI & Prompt Design: The Basics of Prompt Design"
Mattingly "AI & Prompt Design: The Basics of Prompt Design"Mattingly "AI & Prompt Design: The Basics of Prompt Design"
Mattingly "AI & Prompt Design: The Basics of Prompt Design"
 
IGNOU MSCCFT and PGDCFT Exam Question Pattern: MCFT003 Counselling and Family...
IGNOU MSCCFT and PGDCFT Exam Question Pattern: MCFT003 Counselling and Family...IGNOU MSCCFT and PGDCFT Exam Question Pattern: MCFT003 Counselling and Family...
IGNOU MSCCFT and PGDCFT Exam Question Pattern: MCFT003 Counselling and Family...
 
Class 11th Physics NEET formula sheet pdf
Class 11th Physics NEET formula sheet pdfClass 11th Physics NEET formula sheet pdf
Class 11th Physics NEET formula sheet pdf
 
Mattingly "AI & Prompt Design: Structured Data, Assistants, & RAG"
Mattingly "AI & Prompt Design: Structured Data, Assistants, & RAG"Mattingly "AI & Prompt Design: Structured Data, Assistants, & RAG"
Mattingly "AI & Prompt Design: Structured Data, Assistants, & RAG"
 
Código Creativo y Arte de Software | Unidad 1
Código Creativo y Arte de Software | Unidad 1Código Creativo y Arte de Software | Unidad 1
Código Creativo y Arte de Software | Unidad 1
 
microwave assisted reaction. General introduction
microwave assisted reaction. General introductionmicrowave assisted reaction. General introduction
microwave assisted reaction. General introduction
 
Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104
 
APM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across SectorsAPM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across Sectors
 
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
 

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