Profile picture
Sarah Mei @sarahmei
, 22 tweets, 3 min read Read on Twitter
Been thinking about this a lot. I've said this in the past, & I still believe it: you can be a great developer even if you only code 9-5 on weekdays, take all your vacation, & use that time to go someplace actually away from computers.

There's one question I always get, though.
"if you do write code outside work, in addition to at work, won't you get better at it in less time than if you just write code at work?"

This question often comes from folks who have read about the "10000 hours of practice" you supposedly need to get good at a skill.
The first thing to realize about this question is that the 10000 hours phenomenon is widely misunderstood. If you're not doing the _right kind_ of practice, your hours essentially don't count.
The second thing to think about is: "what skill am I trying to perfect?" Is it programming? Or is the crucial skill that you want to master really software development?
Software development involves programming, but it's a lot more than that. There's user empathy, process, communication, understanding systems, and a lot more.

The best software developers are rarely the best programmers - and vice versa.
There's a certain level of skill with programming that you need to be a reasonable software developer. That level of skill is easily obtainable working normal hours.
Any programming skill you develop after that will help your software development progress some, but you'll get better returns (more impact per unit time) investing in improving other non-programming skills.
How do you improve broader skills like communication and systems understanding?

Generally speaking, not by doing a side project.

You get it by doing _different_ types of creative activities that approach the skills of software development from a different direction.
This is why professional football players take ballet classes - it's a different type of creative activity, similar to the one they're trying to develop, but different enough to teach them broader lessons about movement.
So, if you want to be a kickass software developer, as opposed to a kickass programmer, do _different_ stuff outside of work. Run a small business. Play with your kids. Take Spanish lessons. Learn to sew. Play football (and/or take ballet!).
This is the creative grist for the mill that eventually leads you to a broader systems-level understanding of software.

This is the right kind of practice.
Software is a creative activity. Like all creative activities, to get good at it, you need to give your brain a wide range of inputs, some of which look totally unrelated to what you're trying to master.
So don't sweat the side projects. You may get short-term gains in programming skill, but likely at the expense of longer-term gains in software development skill.
Sometimes you need those short-term gains, so sometimes side projects make sense. But do it mindfully and understand the tradeoffs you’re making.
If you do side projects, that’s great! Teams need great programmers.

But a group of great programmers does not by themselves add up to a great team.
Great teams have creative tension. Great teams come at technical problems from many different directions - of which programming is only one - and let discussion & mutual learning drive out the right answer.
So even if you do side projects, it’s worthwhile to think about the value someone who _doesn’t_ could bring to your team.
If you approach lack of side projects as a negative, or as something you’ll begrudgingly accept this one time, of course it won’t work. Your culture needs to support and respect software developers with different core skills equally for this to work.
It’s hard to do. We’ve had ingrained into us that programming & producing code are the hallmarks of a great software developer.

But I think we’ve always known, at some level, that that’s too narrow a view.
Some programming is still hard. But these days, a lot of it isn’t - the challenge instead is in deciding what to build, or in designing it so that it fits in with the rest of the system.
We need a lot of different skills to build good software these days. Programming *is* valuable - but we overvalue it.

Assemble a team with a wide range of backgrounds, interests, & skills, foster a culture of respect & discussion, and you’ll never go back.
The only thing more addictive than shipping code is shipping the right code.
[end]
Missing some Tweet in this thread?
You can try to force a refresh.

Like this thread? Get email updates or save it to PDF!

Subscribe to Sarah Mei
Profile picture

Get real-time email alerts when new unrolls are available from this author!

This content may be removed anytime!

Twitter may remove this content at anytime, convert it as a PDF, save and print for later use!

Try unrolling a thread yourself!

how to unroll video

1) Follow Thread Reader App on Twitter so you can easily mention us!

2) Go to a Twitter thread (series of Tweets by the same owner) and mention us with a keyword "unroll" @threadreaderapp unroll

You can practice here first or read more on our help page!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just three indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member and get exclusive features!

Premium member ($3.00/month or $30.00/year)

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!