1
Clean Code and Being A
Clean Coder
Petra Novandi Barus
Tech In Asia Jakarta
2017
Slide 2
Slide 2 text
2
2
HI
THERE!
Chief Technology Officer
UrbanIndo.com
(Nov 2011 - now)
I am Petra Novandi Barus
petrabarus
Slide 3
Slide 3 text
3
WHAT IS BAD
CODE?
Slide 4
Slide 4 text
4
4
COMMON MISTAKES
MEANINGLESS NAMES
UNUSED CODE
LONG METHOD / CLASS
BAD / INCONSISTENT FORMATTING
CODE DUPLICATIONS
MEANINGLESS COMMENTS
NOT TESTED
Slide 5
Slide 5 text
5
5
COST OF MAINTAINING BAD CODE
Productivity
Time
Slide 6
Slide 6 text
6
WHAT IS CLEAN
CODE?
Slide 7
Slide 7 text
7
7
CLEAN CODE
ELEGANT
EFFICIENT
SIMPLE
STRAIGHTFORWARD
READABLE
CLEAR
AUTOMATICALLY TESTED
WRITTEN BY SOMEONE WHO REALLY CARED
Slide 8
Slide 8 text
8
WHY SHOULD
PROGRAMMERS
WRITE CLEAN CODE?
Slide 9
Slide 9 text
9
9
WHY SHOULD PROGRAMMERS
WRITE CLEAN CODE?
EASY TO READ
EASY TO CHANGE
EASY FOR NEW TEAM MEMBER TO ONBOARD
BROKEN WINDOW PRINCIPLE
Slide 10
Slide 10 text
10
10
COST OF MAINTAINING BAD CODE VS
CLEAN CODE
Productivity
Time
Slide 11
Slide 11 text
11
WHY DON’T
PROGRAMMERS WRITE
CLEAN CODE?
Slide 12
Slide 12 text
12
12
REASON #1
WE DON’T HAVE F*** TIME!
Slide 13
Slide 13 text
13
13
OTHER REASONS
I DON’T WRITE THAT CODE
I AM ROCKSTAR PROGRAMMER, ALWAYS
RIGHT
I DON’T KNOW HOW TO DO IT
IT’S NOT MY JOB, IT’S OTHER PEOPLE’S JOB
Slide 14
Slide 14 text
14
TOOLS & BEST
PRACTICES
Slide 15
Slide 15 text
15
15
TOOLS & BEST PRACTICES
TEST DRIVEN DEVELOPMENT
CODE REVIEWING
STATIC CODE ANALYSIS
PAIR PROGRAMMING
CONTINUOUS INTEGRATION / CONTINUOUS
DELIVERY
Slide 16
Slide 16 text
16
BEING A CLEAN CODER
(SOFTWARE CRAFTSMAN)
Slide 17
Slide 17 text
17
SOFTWARE
CRAFTSMANSHIP
ATTITUDE
PASSION
CAREER OWNERSHIP
PRACTICE AND PRACTICE
BOY SCOUT RULE
Slide 18
Slide 18 text
18
18
ETHICS
TIME MANAGEMENT
NEGOTIATION
COLLABORATION
SAYING YES, SAYING NO
Slide 19
Slide 19 text
19
GROWING SOFTWARE
CRAFTSMANS
Slide 20
Slide 20 text
20
20
GROWING A CULTURE OF
SOFTWARE CRAFTSMANSHIP
COMMUNICATE TEAM GOAL
INTRODUCE TEAM TO THE STAKEHOLDERS
GIVE ROOM TO LEARN FROM MISTAKES
HELP THE TEAM TO IMPROVE
UNDERSTAND TEAM WANT TO DELIVER QUALITY
GIVE THE TEAM RESPONSIBILITY
APPRENTICESHIP
Slide 21
Slide 21 text
21
SOFTWARE
CRAFTSMANSHIP & AGILE
MOVEMENT
(Just A Quick Review)
Slide 22
Slide 22 text
22
22
The Agile Manifesto
INDIVIDUALS AND INTERACTIONS
WORKING SOFTWARE
CUSTOMER COLLABORATION
RESPONDING TO CHANGE
OVER PROCESSES AND TOOLS
OVER COMPREHENSIVE DOCUMENTATIONS
OVER CONTRACT NEGOTIATION
OVER FOLLOWING PLANS
Slide 23
Slide 23 text
23
23
Software Craftsmanship
Manifesto
NOT ONLY WORKING SOFTWARE
NOT ONLY RESPONDING TO CHANGE
NOT ONLY INDIVIDUALS AND INTERACTIONS
NOT ONLY CUSTOMER COLLABORATION
BUT ALSO WELL-CRAFTED SOFTWARE
BUT ALSO STEADILY ADDING VALUE
BUT ALSO A COMMUNITY OF PROFESSIONALS
BUT ALSO PRODUCTIVE PARTNERSHIPS
RAISING THE BAR