Decluttering your Software Development Process Michael Smith michael@teratech.com TeraTech, Inc.

Post on 12-Jan-2016

215 views 0 download

Tags:

Transcript of Decluttering your Software Development Process Michael Smith michael@teratech.com TeraTech, Inc.

Decluttering your Software Decluttering your Software Development ProcessDevelopment Process

Decluttering your Software Decluttering your Software Development ProcessDevelopment Process

Michael Smithmichael@teratech.com

TeraTech, Inc.

2

Speaker InformationSpeaker InformationSpeaker InformationSpeaker Information

Michael Smith

michael@teratech.com Founder and CEO TeraTech (CF and Flex

web application development, server tuning load testing, security audits)

Founder of CFUNITED conference (in 11th year)

Programming for 30 years

3

Why Declutter?Why Declutter?Why Declutter?Why Declutter?

Less stress More energy More productive Easier to think clearly Better focus Fewer bugs, easier to spot, easier to fix Reduced maintenance time 80/20 results Happier developers, clients and managers

4

80/20 Principle80/20 Principle80/20 Principle80/20 Principle

5

What to declutterWhat to declutterWhat to declutterWhat to declutter

Code Design Database Communications Clients Environment

6

What is clutter?What is clutter?What is clutter?What is clutter?

Distractions Unused stuff Stuff you don’t love to see around Stuff not in its place

Stuff without a place!

7

Things that distractThings that distractThings that distractThings that distract

Phone calls Incomplete tasks Email Bugs Time pressure Poor organization

8

How to declutterHow to declutterHow to declutterHow to declutter

Recognize you have clutter Get support Value - Do I love it or use? Have a system Have a place for everything Habit - Close open cycles Be Smart lazy - think less about non essential

items Let go “someday it will be useful”

9

What is code clutter?What is code clutter?What is code clutter?What is code clutter?

Not usable or used code Out of date code not elegant (easy to read, understand and

maintain) Out of date comments Hard to remember or spell variable names Not following coding standards Unfinished tasks Inconsistent

10

Decluttering your codeDecluttering your codeDecluttering your codeDecluttering your code

Use a readable coding style and format Prune unnecessary or out of date comments Simplify unclear code Refactor duplicate code Use source control Remove unused files from directories

11

Decluttering Slow code and crashing serversDecluttering Slow code and crashing serversDecluttering Slow code and crashing serversDecluttering Slow code and crashing servers

Profile code and only optimize the slow stuff Load test code before releasing Keep error logs clear

12

Better NamingBetter NamingBetter NamingBetter Naming

For directories, files, modules, variables Rename difficult to remember variable names Naming of modules easy to understand

without opening file Naming for what is done, not how it is

implemented Follow a naming system

13

Decluttering bugsDecluttering bugsDecluttering bugsDecluttering bugs

Research google, blogs, community, open source

Isolate bugs to a few lines Keeping code to one screen full – code

collapse KISS Take a break, nap, walk, shower

14

What is design clutter?What is design clutter?What is design clutter?What is design clutter?

Too many features - loose sight of the big picture

Scope out of control Screens cluttered

15

Decluttering your designDecluttering your designDecluttering your designDecluttering your design

Clear shared vision Change control Usability

16

What is database clutter?What is database clutter?What is database clutter?What is database clutter?

Unused tables, fields, data, SPs Cryptic names Duplicate data Unmanaged log files Slow queries

17

Decluttering your databaseDecluttering your databaseDecluttering your databaseDecluttering your database

Better names Remove unused tables, fields and SPs Normalize to reduce duplicate data Use triggers to update duplicate data you

need to keep. Create maintenance plans Review index use

18

What is client clutter?What is client clutter?What is client clutter?What is client clutter?

Poor communication Unclear Emotionally abusive Understand the software development

process

19

Decluttering clientsDecluttering clientsDecluttering clientsDecluttering clients

Score client profitability and fit Let go the bottom 10% Train the other 90%

Set clear expectations

20

Personal declutteringPersonal declutteringPersonal declutteringPersonal decluttering

What is your Personal best Time of day? Write down thoughts instead of worrying about

them in background (Limited amount of items in human mind at

one time) Single tasking Plan short term objectives

21

Decluttering communicationDecluttering communicationDecluttering communicationDecluttering communication

Incomplete communication Other programmers mean extra

communication and coordination Coworkers who understand your thought

process – shared vision and metaphors of project

Written vision Resolve issue by phone or F2F

Document resolution in email

22

Decluttering your environmentDecluttering your environmentDecluttering your environmentDecluttering your environment

Desk Inbox, filing system

Distractions Phone, DND, work from home

Email Turn off email notification Empty inbox – GTD

Computer – software, fixes

23

ResourcesResourcesResourcesResources

“The 80 / 20 Principle” by Richard Koch “The 4-Hour Workweek” by Timothy Ferriss “The E-Myth Revisited” by Michael E. Gerber “Getting Things Done” by David Allen “Enough Already” by Peter Walsh www.43folders.com/ http://www.1000ventures.com/business_guid

e/crosscuttings/80-20principle.html

24

QuestionsQuestionsQuestionsQuestions

Ask me now or email or phone me later

michael@teratech.com

301-424-3903 x110