Twitter | Search | |
Sarah Mei
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.
Reply Retweet Like More
Sarah Mei Jan 16
Replying to @sarahmei
"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.
Reply Retweet Like
Sarah Mei Jan 16
Replying to @sarahmei
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.
Reply Retweet Like
Sarah Mei Jan 16
Replying to @sarahmei
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?
Reply Retweet Like
Sarah Mei Jan 16
Replying to @sarahmei
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.
Reply Retweet Like
Sarah Mei Jan 16
Replying to @sarahmei
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.
Reply Retweet Like
Sarah Mei Jan 16
Replying to @sarahmei
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.
Reply Retweet Like
Sarah Mei Jan 16
Replying to @sarahmei
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.
Reply Retweet Like
Sarah Mei Jan 16
Replying to @sarahmei
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.
Reply Retweet Like
Sarah Mei Jan 16
Replying to @sarahmei
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!).
Reply Retweet Like
Sarah Mei Jan 16
Replying to @sarahmei
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.
Reply Retweet Like
Sarah Mei Jan 16
Replying to @sarahmei
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.
Reply Retweet Like
Sarah Mei Jan 16
Replying to @sarahmei
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.
Reply Retweet Like
Sarah Mei Jan 16
Replying to @sarahmei
Sometimes you need those short-term gains, so sometimes side projects make sense. But do it mindfully and understand the tradeoffs you’re making.
Reply Retweet Like
Sarah Mei Jan 16
Replying to @sarahmei
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.
Reply Retweet Like
Sarah Mei Jan 16
Replying to @sarahmei
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.
Reply Retweet Like
Sarah Mei Jan 16
Replying to @sarahmei
So even if you do side projects, it’s worthwhile to think about the value someone who _doesn’t_ could bring to your team.
Reply Retweet Like
Sarah Mei Jan 16
Replying to @sarahmei
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.
Reply Retweet Like
Sarah Mei Jan 16
Replying to @sarahmei
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.
Reply Retweet Like
Sarah Mei Jan 16
Replying to @sarahmei
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.
Reply Retweet Like