programming the programmer

56
Keeping stakeholders informed Prioritize Demos D e s i g n Estimate Unlearn Integrate Data modelling Learn UX Manage Time Quick TAT to emails Black box Reviews Code comments Estimate Prototyping Prioritize Requirements Reviews R e f a c t o r i n g Kick off W h i t e b o x Implementation Build Testi ng Coding Deploy

Upload: vipinkumarn

Post on 27-May-2015

77 views

Category:

Career


4 download

DESCRIPTION

The presentation discusses good programming practices

TRANSCRIPT

Page 1: Programming the Programmer

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

vipinprogrammingthe

programmer}{

Page 3: Programming the Programmer

vipin kumar

software architect

Page 4: Programming the Programmer

» Pragmatic/Professional Programmer» Learn / Unlearn» Refactoring» Code Comments» Eisenhower matrix

Page 5: Programming the Programmer
Page 6: Programming the Programmer

take Responsibility

Page 7: Programming the Programmer

» responsible for their own career» doctors and lawyers

Page 8: Programming the Programmer

» 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

» responsibility for the output of the team» help one another, teach/learn from one another

Page 10: Programming the Programmer

» don’t tolerate big bug lists

Page 11: Programming the Programmer

» 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

software Entropy and Change

Page 13: Programming the Programmer

» don’t live with broken windows

Page 14: Programming the Programmer

the stone soup

Page 15: Programming the Programmer

learn / unlearn

Page 16: Programming the Programmer

» stay marketable – else become a dinosaur» take responsibility for your own education

Page 17: Programming the Programmer

» read books / magazines – twitter feeds, websites, subscribe to blogs

Page 18: Programming the Programmer

» have a mentor / virtual mentor

Page 19: Programming the Programmer

» know your frameworks / libraries» teach or speak to someone» learn a new language every year – new tool

Page 20: Programming the Programmer

» join meet ups» learn the domain to solve the business problems

Page 21: Programming the Programmer

» read code

Page 22: Programming the Programmer

» open source» no free lunch

Page 23: Programming the Programmer

» be the Neo of the Matrix

Page 24: Programming the Programmer

refactoring

Page 25: Programming the Programmer

act with prudence

» doing it right / doing it quick

Page 26: Programming the Programmer

act with prudence

» technical Debt» keep track of technical debt» pay off at the earliest

Page 27: Programming the Programmer

before you refactor

» take stock of existing code base

Page 28: Programming the Programmer

before you refactor

» avoid rewriting everything

Page 29: Programming the Programmer

before you refactor

» Make incremental changes

Page 30: Programming the Programmer

before you refactor

» after each iteration, make sure existing plans pass

Page 31: Programming the Programmer

before you refactor

» new technology is insufficient reason

Page 32: Programming the Programmer

» leave the campground cleaner than you found it» little better than what you checked it out

Page 33: Programming the Programmer

» 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

» think of every line of code as a message for someone in the future

Page 35: Programming the Programmer

code comments

Page 36: Programming the Programmer

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
Page 38: Programming the Programmer

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

coding style

Page 40: Programming the Programmer
Page 41: Programming the Programmer
Page 42: Programming the Programmer

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

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

eisenhower matrix

Page 45: Programming the Programmer

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

break up your TODO list

Page 47: Programming the Programmer

two questions

» is this important?» is this urgent?

Page 48: Programming the Programmer

What’s important?

What personally you need to take care of

Page 49: Programming the Programmer

What’s urgent?

What needs to be taken care of SOON

Page 50: Programming the Programmer

Urgent Not Urgent

Important

NotImportant

Page 51: Programming the Programmer

Urgent Not Urgent

Important

NotImportant

Do First

Page 52: Programming the Programmer

Urgent Not Urgent

Important

NotImportant

Schedule

Page 53: Programming the Programmer

Urgent Not Urgent

Important

NotImportant

Delegate

Page 54: Programming the Programmer

Urgent Not Urgent

Important

NotImportant

Don’t Do

Page 55: Programming the Programmer
Page 56: Programming the Programmer