Nothing matters more than coding fast

110
Nothing Matters More Than Coding Fast by Neil Green

description

This is not a talk about speed coding, or writing thousands of lines of crappy code in a weekend. This is a talk for software craftsman who test drive clean code, but who also have a nagging feeling: “Man, I know I could be doing this faster.” We’re going to discuss everything from touch typing, to keyboard shortcuts, to faster pair programming techniques, to hardware, to build automation, to staying in the zone, to caffeine consumption, to ergonomics, to music and headphone selection, refactoring, language and framework selection, tech debt management, rapid prototyping, whiteboard design sessions, back of napkin mockups, guerilla tactics for getting in front of requirements and staying there, and what to do when you’re 30 lines down a stack trace and someone wants to tell you about something funny their kid did over the weekend.

Transcript of Nothing matters more than coding fast

Nothing Matters More Than Coding Fast

by Neil Green

(Please hold questions until the end)

DISCLAIMER

There are things that matter more than coding fast

What is “Coding Fast”?

Coding Fast

Continuously adding business value

over an indefinite period of time

while maintaining high quality code

at a pace that exceeds expectations

Typical Mentalities

http://xkcd.com/844/

“The thing is, Bob, it's not that I'm lazy. It's just that I just don't care. It's a

problem of motivation, all right? Now, if I work my ass off and Initech ships a few

extra units, I don't see another dime.

So where's the motivation? ”

Yeah….I’m going to need to see your estimates in

Jira…m’kay?

Your Motivation to Code Fast

How to Code Fast

Get in the Right Mindset

Eliminate Distractions

http://theoatmeal.com/pl/working_home/piggers

Get Comfortable

http://www.nismat.org/

http://theoatmeal.com/comics/coffee

Touch Type

In 100 years, I know they’ll invent a better

way to do this…

Sub-Second Builds

http://xkcd.com/303/

Use an IDE

Master Keyboard Shortcuts

Ctrl+Tab+1 Alt+Ctrl+Insert Ctrl+Shift+F Down Arrow Enter Ctrl+F4

Ctrl-C Ctrl-Tab Ctrl-V Alt+Tab

F5!!!!!

Be Extremely Knowledgeable

I like turtles

Somewhere between reading the API spec

and building a TODO’s app on my own time

Whoa! How did you know that?

I like turtles

var args can only be the first argument, no the last, no the first…but

only if they’re the only argument…right?

OMG JFGI

Don’t Work in Crappy Code

Aggressively Pay Down Tech Debt

We are so getting spot bonus’ for getting this

thing to market a month ahead of schedule!

Extract Method!

Push Down! Extract Local

Variable!

Inline!

Extract Class!

I told them we needed to better encapsulate the

concept of order refunds before we tried to support

different currencies!

Find Creative Solutions

She’s just not ready captain!

Must have more…features…

I like turtles

OK, if we introduce a message queue and filter by last order

date that might work!

ManagerUtilFactoryHelper???

Re-Compose into New Features

http://martinfowler.com/bliki/DesignStaminaHypothesis.html

Work From Visual Requirements

OMNIGRAFFLE

Estimate Wisely

What you give as your estimate will set my

expectations for delivery date, and therefore my

perception of you coding fast or not.

What happens to me if I’m late? Nothing?

Cool! Then it’s whenever you want it

to be plus 50% contingency

It shall take 5 days, based on my vast

theoretical knowledge of enterprise systems

All we need is a LatePayment sub-

class. I could do it in less time than it takes

to estimate it

Pair with someone fast

Totally! I bet we’ll go twice as fast with 3 times better code quality and

zero bugs! Management will love us!

I read that pairing is better than coding on

your own in every situation! Let’s try it!

I’m totally over being preached to

about this Bob Fowler guy.

I’m totally over having to explain every design

decision I make to someone who’s never architected a system.

I still say Fluent Interfaces are Train Wrecks

Shut up and Pass me the

Keyboard

The presentation layer should have no knowledge of our persistence

model

But why add an extra layer of indirection?

Adapt

Questions?

Thanks for Coming!

feyn.com

twitter.com/feyn