programming the programmer
DESCRIPTION
The presentation discusses good programming practicesTRANSCRIPT
![Page 1: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/1.jpg)
Keeping
stakeholders
informed
Prioritize
Demos
DesignEsti
mate
Unlearn
Integrate
Data modelling
Learn
UX
Manage Time
Quick TAT to
emails
Black box
Reviews
Code comments Estimate
Prototyping
Prioritize
Requirements
Reviews
Refactoring
Kick offWhite box
Implementation
Build
Testing
Coding
Deploy
![Page 2: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/2.jpg)
vipinprogrammingthe
programmer}{
![Page 3: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/3.jpg)
vipin kumar
software architect
![Page 4: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/4.jpg)
» Pragmatic/Professional Programmer» Learn / Unlearn» Refactoring» Code Comments» Eisenhower matrix
![Page 5: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/5.jpg)
![Page 6: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/6.jpg)
take Responsibility
![Page 7: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/7.jpg)
» responsible for their own career» doctors and lawyers
![Page 8: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/8.jpg)
» responsible for the code they write» expect QA to find bugs
» do not make a mess» surgeon don’t come back and fix it later
![Page 9: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/9.jpg)
» responsibility for the output of the team» help one another, teach/learn from one another
![Page 10: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/10.jpg)
» don’t tolerate big bug lists
![Page 11: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/11.jpg)
» write code as if you had to support it for the rest of your life
» care for your code» avoid hacks» write discoverable/maintainable code
![Page 12: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/12.jpg)
software Entropy and Change
![Page 13: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/13.jpg)
» don’t live with broken windows
![Page 14: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/14.jpg)
the stone soup
![Page 15: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/15.jpg)
learn / unlearn
![Page 16: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/16.jpg)
» stay marketable – else become a dinosaur» take responsibility for your own education
![Page 17: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/17.jpg)
» read books / magazines – twitter feeds, websites, subscribe to blogs
![Page 18: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/18.jpg)
» have a mentor / virtual mentor
![Page 19: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/19.jpg)
» know your frameworks / libraries» teach or speak to someone» learn a new language every year – new tool
![Page 20: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/20.jpg)
» join meet ups» learn the domain to solve the business problems
![Page 21: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/21.jpg)
» read code
![Page 22: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/22.jpg)
» open source» no free lunch
![Page 23: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/23.jpg)
» be the Neo of the Matrix
![Page 24: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/24.jpg)
refactoring
![Page 25: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/25.jpg)
act with prudence
» doing it right / doing it quick
![Page 26: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/26.jpg)
act with prudence
» technical Debt» keep track of technical debt» pay off at the earliest
![Page 27: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/27.jpg)
before you refactor
» take stock of existing code base
![Page 28: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/28.jpg)
before you refactor
» avoid rewriting everything
![Page 29: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/29.jpg)
before you refactor
» Make incremental changes
![Page 30: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/30.jpg)
before you refactor
» after each iteration, make sure existing plans pass
![Page 31: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/31.jpg)
before you refactor
» new technology is insufficient reason
![Page 32: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/32.jpg)
» leave the campground cleaner than you found it» little better than what you checked it out
![Page 33: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/33.jpg)
» improve code by removing it – less is more» keep the build clean - warnings» Simple - extra anything should be purged immediately
![Page 34: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/34.jpg)
» think of every line of code as a message for someone in the future
![Page 35: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/35.jpg)
code comments
![Page 36: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/36.jpg)
A theoretical purist who believes everything he reads
A battle-hardened veteran from the old school—a "real" programmer
A young, confident, hot-shot computer jock
A senior programmer tired of big promises, just looking for a few practices that work
![Page 37: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/37.jpg)
![Page 38: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/38.jpg)
effective comments
» if it is hard to write, it should be hard to read» code should explain itself to the next programmer» know when not to write a comment» explain what the code is supposed to accomplish» comments that parrot the code offer nothing extra» comments should be treated as code – add value» code reviews – help identify if a comment is needed
![Page 39: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/39.jpg)
coding style
![Page 40: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/40.jpg)
![Page 41: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/41.jpg)
![Page 42: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/42.jpg)
Routines
» Does each routine's name describe exactly what the routine does?
» Does each routine perform one well-defined task?
» Is each routine's interface obvious and clear?
![Page 43: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/43.jpg)
Data Names
» Are variables used only for the purpose for which they're named?
» Are loop counters given more informative names than i, j, and k?
» Are well-named enumerated types used instead boolean variables?
» Do naming conventions distinguish among type names, named constants, local variables, class variables, and global variables?
![Page 44: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/44.jpg)
eisenhower matrix
![Page 45: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/45.jpg)
the problem
» infinite number of things to do» finite number of hours» want to feel good about what I am NOT
doing
![Page 46: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/46.jpg)
break up your TODO list
![Page 47: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/47.jpg)
two questions
» is this important?» is this urgent?
![Page 48: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/48.jpg)
What’s important?
What personally you need to take care of
![Page 49: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/49.jpg)
What’s urgent?
What needs to be taken care of SOON
![Page 50: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/50.jpg)
Urgent Not Urgent
Important
NotImportant
![Page 51: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/51.jpg)
Urgent Not Urgent
Important
NotImportant
Do First
![Page 52: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/52.jpg)
Urgent Not Urgent
Important
NotImportant
Schedule
![Page 53: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/53.jpg)
Urgent Not Urgent
Important
NotImportant
Delegate
![Page 54: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/54.jpg)
Urgent Not Urgent
Important
NotImportant
Don’t Do
![Page 55: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/55.jpg)
![Page 56: Programming the Programmer](https://reader036.vdocument.in/reader036/viewer/2022081514/55657849d8b42a95028b4d76/html5/thumbnails/56.jpg)