Software Development is not Typing
What is software development? Is it typing features that your product people come up with into your text editor as quickly as possible?
Not quite.
At the very least, think when typing. Make it easier for your fellow typers to understand what you had in mind. And don’t just consider the words you type. Good structure and abstractions improve the understability of your texts even more.
Don’t forget that things you typed will be executed too. That doesn’t mean you should optimize prematurely, but at least think about performance and security just enough to not run into most obvious issues. SQL injection and slowdowns due to N+1 queries would be embarrassing.
And since this sort of typing requires thought, you should not be afraid to step away from the keyboard. Stuck on a hard problem? Take a break while enjoying a nice cup of green tea. Don’t optimize for hours of typing. Work together with your colleagues to find solutions. At first glance, pair programming might reduce typing performance by a factor of two. But it offers a lot of other advantages in terms of learning and quality.
So… Software development: thoughtfully typing features that your product people come up with into your text editor?
Not quite.
Sometimes you don’t need to type at all. Someone else already created what you need for you. Want to support clean urls? There’s plenty of slugging libraries, no need to roll your own. Want to support sign up via Facebook and Twitter? There’s a library for that too. Think before you even start typing away.
Pick capable, suitable and simple tools. The best of them make your day-to-day painless, the worst - get in the way and only make it easier for you to introduce security and performance problems.
So, it’s thoughtfully developing features that your product people come up with?
Not quite.
Even before the start of development, your knowledge can be put to use. That feature that needs to be implemented? Maybe you can suggest a solution that would have 20% of the cost and get 80% there?
Go one step further! Take the time to comprehend the issue that feature is intended to solve. Utilize your technical chops and creativity to help solve problems. Take the time to grasp the product you’re working on and your user’s needs.
Software development is not glorified typing. It’s working with other people to solve problems.