The Importance of Writing For Software Developers
📖 This Weeks Article
Once somebody hits a minimum threshold of technical skill to hold a job in the industry, about 80% of their ability to succeed in Software Development is determined by their communication and people skills, not their technical abilities
- Me, Christmas 2018
I think I caught my sister in law by surprise a bit when I answered her questions about the importance of writing in my job that way. She's an assistant professor who teaches writing to college students, and has found that her students pursuing technical degrees generally fail to see the value in learning to write. The contrast between their expectations and my perspective after a decade working in software was strong. I promised her at the time that I'd write down some thoughts on why writing skills are valuable for software engineers. So here it is, 6 reasons that writing skills are crucial for working in the tech industry1.
1. You will write every day
Every industry has truths that are obvious to those who have spent time working in the industry, but may be surprising to those on the outside. One such truth for software engineers: our jobs involve an awful lot of writing. Here are a few types of writing that I've done daily or weekly for the last decade:
- Discussing technical implementations through chat apps like slack
- Writing Bug Reports
- Writing comments in my code and technical documentation to help others and my future self understand what was done
- Writing reviews of other developers code to help our team improve and coordinate on best practices
- Answering questions from less technical employees or clients, often through email or slack.
- Creating design documents for complex work during planning times
That list is illustrative but not exhaustive. Any software engineer who wishes to build software that is used by others will end up doing plenty of writing.
2. The ability to explain complex topics will set you apart
The ability to take a complex topic and explain it in terms that somebody who doesn't have all the background you do can understand is a critical one for software engineers. This can help negate two of the most frustrating experiences for a developer:
- A business asking for work that doesn't make sense because the business folks don't understand how the product works
- Less experienced members of the the team routinely making mistakes and breaking things because they don't understand how the product works
Senior engineers who can explain and document complex pieces of software save everyone frustration by helping junior members of the team understand how things work and be more productive, and by aligning business expectations and plans to the reality of how their software systems actually work. These are hugely valuable activities that can make a big difference in your career.
3. Writing will help you find a (better) job
When I've interviewed software engineers, I see a variety of problems: they fail to present their strengths, don't manage to show a sincere interest in the job, and get caught flat-footed on fairly standard questions. Most of these mistakes come down to a lack of preparation, not tailoring their message to their audience, and not knowing how to structure the information they know about themselves in a compelling way. These are the skills that you'll learn from a good class on writing, and develop through practice writing.
Interviews are important, especially early on in your career. Your compensation as you go throughout your career tends to be anchored to where you started, especially if you stay one place for a long time. An increase of $5,000 in salary on a job you take today would mean an additional $92,000 of accumulated income over the next 15 years assuming a salary increase rate of 3% a year2.
In addition if you write publicly on a blog like this, it can help you show proof of your knowledge in a way that a resume never will. Not everybody needs to be publicly blogging, but if that appeals to you it can be a great career booster.
4. Remote work increases the importance of writing
One of the biggest trends in the tech industry these days is the rise of remote work. More teams are embracing partial remote work, and there are major companies like Buffer, Invision and GitLab that are entirely remote. Remote work is partially enabled by video chat technology, but written communication is the lifeblood of a successful remote team. Collaborating via tools like Slack, Github, Trello and Jira is part of most teams' workflows, but when everybody is remote, being able to express yourself clearly on these platforms is critical.
5. Your career trajectory will depend on your ability to influence and persuade
Most developers when they begin their first software job will be given a set of tasks to do and the expectation is that they will create work to the spec that somebody else has designed. They are implementors. But as a developers career progresses there is an opportunity to be more than an implementor. Since developers understand the system best, they often have ideas that can help shape product designs. Developers also often need to work with other teams whose goals may not be completely aligned with their team. These are not situations where even a senior engineer is likely to have direct authority. Instead the developers who continue to grow in their careers are those who are able to influence and persuade without authority.
This is again a skill that writing classes can cultivate. Persuasive writing practice can help give you the clarity of thought and intuition for structuring arguments that will help both when you're trying to make a point through writing or doing it verbally.
6. Writing skills translate to writing code
This last one is really specific to software engineering, but I've found that applying writing principles to code has helped me write more maintainable code. Most code written in a professional context will be read many times by other people (or by the original author after they have long lost track of their original context). Being able to write code that can be understood by both a computer and by human beings is a skill developed over time, but many of the same "brain muscles" that you develop in writing prose can be applied to code: it's important to know your audience, structure your information in a logical manner, and use judgement when finding just the right phrase (or code structure) for a situation. That could be a whole post in itself.
🔗 New Site Content
- Last week's post on Learning JavaScript is up on the site
😎 Cool Stuff
- A few more notes on remote work: This is good from Martin Fowler and Buffer did a survey on the State of Remote Work
- Writing CSS Algorithms | Lara Schenck was an interesting read primarily because it laid out a disciplined process for exploring how to use CSS to achieve a result. Since I'm used to seeing most people write CSS by iterating through things until something works, and often leaving behind artifacts of messy intermediate steps in the process, it was refreshing to see a structured approach like this.
-
I write based on the tech industry and software development specifically because that is what I have lived, but most of these points should be equally applicable to any engineering career and would likely require very little modification for science and research as well. ↩
-
Ok real world promotion rates in the tech industry are likely to be choppier than that, but the example holds. ↩