refactoring yourself as a developer

29
© COPYRIGHT 2010 SAPIENT CORPORATION | CONFIDENTIAL Ryan Taylor | Cocoa Camp | September 25, 2010 Refactoring Yourself As A Developer

Upload: sapientnitro

Post on 05-Dec-2014

1.879 views

Category:

Technology


1 download

DESCRIPTION

SapientNitro's Ryan Taylor presented Refactoring Yourself As A Developer at Cocoa Camp on September 25th. Cocoa Camp is a conference event on everything related to the iPad, iPhone, iPod touch and Mac. This event brings people together who are working to make mobile technology a more important part of Southeast’s future. The event fosters discussion and collaboration among a diverse set of people, including technologists, designers, marketers, media professionals, angel investors, and venture capitalists.

TRANSCRIPT

Page 1: Refactoring Yourself as a Developer

© COPYRIGHT 2010 SAPIENT CORPORATION | CONFIDENTIAL

Ryan Taylor | Cocoa Camp | September 25, 2010

Refactoring Yourself As A Developer

Page 2: Refactoring Yourself as a Developer

© COPYRIGHT 2010 SAPIENT CORPORATION

改善 Kaizen

Japanese philosophyFocus upon continuously making small improvements

Change (kai) to become good (zen).

High-level cycle:Identify and eliminate waste and inefficiency

Clean up and reorganize after the changes

Standardize the resulting improvements

Page 3: Refactoring Yourself as a Developer

© COPYRIGHT 2010 SAPIENT CORPORATION

Self Relevance

Page 4: Refactoring Yourself as a Developer

© COPYRIGHT 2010 SAPIENT CORPORATION

“ An investment in knowledge always pays the best interest.”

– Benjamin Franklin

Page 5: Refactoring Yourself as a Developer

© COPYRIGHT 2010 SAPIENT CORPORATION

Grow Your Knowledge Portfolio

Our knowledge of current technology is an expiring asset

Be diverse, don't limit yourself to one technology

When the willingness to learn and evolve ends, so does your career

Page 6: Refactoring Yourself as a Developer

© COPYRIGHT 2010 SAPIENT CORPORATION

Set Personal and Career Goals

Setting yearly goals is a healthy practice

Challenge yourself to:Earn a promotionReach a financial landmarkContribute to a bookSpeak at a conferenceLearn a new technology

Page 7: Refactoring Yourself as a Developer

© COPYRIGHT 2010 SAPIENT CORPORATION

“ Any fool can write code that a computer can understand. Good programmers

write code that humans can understand.”

– Martin Fowler

Page 8: Refactoring Yourself as a Developer

© COPYRIGHT 2010 SAPIENT CORPORATION

Be Passionate About Your Craft

Software development is both an art and an engineering discipline

Technology will change, but craftsmanship is timeless

Page 9: Refactoring Yourself as a Developer

© COPYRIGHT 2010 SAPIENT CORPORATION

Be Passionate About Your Craft

Take pride in your codeAlways seek to improve your architecturePush for self-documenting, well commented codeMaintain consistency and readabilitySign your work

Challenge yourself on new projects

Mentor your peers

Page 10: Refactoring Yourself as a Developer

© COPYRIGHT 2010 SAPIENT CORPORATION

Are you a better developer now than you

were six months ago?

Page 11: Refactoring Yourself as a Developer

© COPYRIGHT 2010 SAPIENT CORPORATION

Software Maintenance

Page 12: Refactoring Yourself as a Developer

© COPYRIGHT 2010 SAPIENT CORPORATION

“Everything should be made as simple as possible, but not simpler.”

– Albert Einstein

Page 13: Refactoring Yourself as a Developer

© COPYRIGHT 2010 SAPIENT CORPORATION

Keeping Things Simple

Complexity is easy to achieve

Keeping a design simple can be surprisingly difficult

Only design for "real" requirementsNever add functionality before it is scheduledOnly 10% of the extra stuff will ever get used, so you are wasting 90% of your time

Page 14: Refactoring Yourself as a Developer

© COPYRIGHT 2010 SAPIENT CORPORATION

Managing Software Entropy

Software EntropyDefines the measure of disorder in software systems

A few laws have been suggested:A computer program that is used will be modifiedWhen a program is modified, its complexity will increase

Complexity leads to:Software that is more difficult to maintainAn increase in the total cost of ownership

Page 15: Refactoring Yourself as a Developer

© COPYRIGHT 2010 SAPIENT CORPORATION

Watch for “Broken Windows”

One broken window leads to many broken windows...

Crack down on the little stuff to prevent the big stuff

Take immediate action to prevent further damage

Page 16: Refactoring Yourself as a Developer

© COPYRIGHT 2010 SAPIENT CORPORATION

Code Refactoring

The process of improving code without changing its overall result

Refactoring is not:Adding new featuresFixing bugs

Good times to refactor:As requirements begin to changeAfter a code review

Page 17: Refactoring Yourself as a Developer

© COPYRIGHT 2010 SAPIENT CORPORATION

Code Refactoring

Targets for refactoring:Code duplicationPoor architectureOutdated knowledge/logicPerformance issues

Leverage unit tests and test harnesses to prevent new bugs from being created

Page 18: Refactoring Yourself as a Developer

© COPYRIGHT 2010 SAPIENT CORPORATION

Communication

Page 19: Refactoring Yourself as a Developer

© COPYRIGHT 2010 SAPIENT CORPORATION

Justifying Maintenance

How do you justify allocating time for software maintenance to a project manager or client?

Explain that risk and cost increase when proper maintenance is not performed

Use the surgery analogyCatch it early = simple surgeryCatch it late = dangerous surgery and costly

Page 20: Refactoring Yourself as a Developer

© COPYRIGHT 2010 SAPIENT CORPORATION

“The problem with communication is the illusion that it has occurred.”

– George Bernard Shaw

Page 21: Refactoring Yourself as a Developer

© COPYRIGHT 2010 SAPIENT CORPORATION

Best Practices

In general:Use email so there is a paper trailAvoid hallway conversationsRespond to messages promptly

A quick “I'll get back to you later" response is better than nothing at all

Keep your audience in mind

Page 22: Refactoring Yourself as a Developer

© COPYRIGHT 2010 SAPIENT CORPORATION

Best Practices

With your development team:Assign a platform lead to coordinate communicationCreate a wiki to track wireframes, specs, and issuesLeverage a version control system

Include a detailed message with each commitConfigure it to send out change notification emails

Schedule regular status meetings

Page 23: Refactoring Yourself as a Developer

© COPYRIGHT 2010 SAPIENT CORPORATION

Best Practices

Actively seek feedback:At minimum, request a code review after each projectApproach people that you have worked closely with and ask them to be honestMaintain an open mind

Your critics are never 100% wrongDebate is healthy if both sides are open to change

Take responsibility:Admit your mistakesOffer options, not excuses

Page 24: Refactoring Yourself as a Developer

© COPYRIGHT 2010 SAPIENT CORPORATION

Time Management

Page 25: Refactoring Yourself as a Developer

© COPYRIGHT 2010 SAPIENT CORPORATION

Estimating Tasks

Crucial part of software developmentHelps prevent surprises down the road by forcing you to think about things up front

When asked for an estimate, always respond with “I’ll get back to you.”

Explicitly declare assumptions

Page 26: Refactoring Yourself as a Developer

© COPYRIGHT 2010 SAPIENT CORPORATION

Estimating Tasks

Unit of measurement is important in expressing accuracy6 months vs 26 weeks vs 130 days vs 1,040 hoursRough Precise

Leave your ego out of the equation:Don't try to impress others with a low number and then drop the ballGive good, honest estimatesAdd some padding to be safe

Page 27: Refactoring Yourself as a Developer

© COPYRIGHT 2010 SAPIENT CORPORATION

Work/Life Balance

It is very important to balance your professional and personal lives

The best developers find a way to sustain balance and avoid burnout

Page 28: Refactoring Yourself as a Developer

© COPYRIGHT 2010 SAPIENT CORPORATION

“If one oversteps the bounds of moderation, the greatest pleasures cease

to please.”

– Epictetus

Page 29: Refactoring Yourself as a Developer

© COPYRIGHT 2010 SAPIENT CORPORATION | CONFIDENTIAL

Ryan Taylor | [email protected] | www.boostworthy.com

Thank you.