How writing can advance your career as a developer
I didn’t take a single English class to receive my undergraduate engineering degree. It’s a shame because writing has been arguably one of the most important skills I’ve had in my career as a software engineer and team leader.
I got my second internship in college thanks to a strong cover letter. As a new graduate, I got my first job by sending a cold email to an interesting startup I found online. When I was put in charge of an engineering team a few years later, two of my first few hires knew me through my blog before applying. And, in 2020, I left my role as a CTO to start a technical writing business because so many companies were asking me to write developer-focused content.
While my experience might be unique (very few engineers go on to become professional writers), writing is an important skill for all of us in software development. According to an IEEE article, engineers spend a large part of their day writing, and it only increases as they get more senior:
“In their ﬁrst few years on the job, engineers spend roughly 30% of their workday writing, while engineers in middle management write for 50% to 70% of their day; those in senior management reportedly spend over 70% and as much as 95% of their day writing.” – Jon Leydens as cited in The Writing Engineer
The move towards remote work over the past year has also reminded many managers of how important it is for their teams to be able to write. 30% of respondents to Upwork’s Future of Work Survey cited communication issues as one of the biggest challenges in going remote.
Software engineering is a team sport
If you’re new to engineering, you might have the misconception that software development is largely done in quiet rooms full of developers independently writing code.
While writing code is part of the job, the other, often larger component is deciding what code to write and how to write it. This portion is largely collaborative as business, technical, and interpersonal interests must work in tandem to produce any significant piece of software.
“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.” – Ben McCormick, Engineering Manager at Kustomer
Most production-ready software projects are built by large groups of people, and those people have to communicate. Whether you are creating technical documentation, giving another team member feedback on their pull request, planning a new project, or answering a question on Stack Overflow, it’s likely that you’ll spend at least a little time writing something every day as a software developer.
How writing can advance your career as a developer
Writing ability might be a baseline requirement for many software development jobs, but it’s not a skill that developers typically think about improving for their careers. While it’s tempting to invest all your spare time learning new frameworks and languages, improving your writing might actually be a better way to advance your career and stand out in tech.
For this piece, I spoke to eight software developers to learn more about how writing has helped them advance their careers. I then distilled their stories into five specific benefits that writing has given them throughout their careers and added a bit of my own experience as well.
1. Writing reinforces learning
As software engineers, we have to constantly be learning new things. According to the most recent Stack Overflow developer survey, “75% of respondents noted that they learn a new technology at least every few months or once a year.”
Educators have understood the value of writing as a learning tool for years, and everyone I talked to mentioned that writing helped them reinforce new concepts too. If you write publicly, you get the dual advantage of possibly teaching other engineers some of the concepts you’ve learned.
“Writing code to solve a problem is one thing, but explaining that solution to a community of developers on the internet is another. You want to make sure you absolutely know what you’re saying; which means research, lots of research!” – Daniel Phiri, Developer Relations at Strapi
Eze Sunday, a software developer and freelance writer, agreed, adding, “if you can’t teach it, then you don’t really know it.”
I’ve never been a note-taker, but I’ve always tried to write blog posts about new things that I’m learning. Very few of these posts got a lot of readers, but they were a great way for me to reinforce new technology or tools that I had recently learned. Adam DuVander, a developer, consultant, and author of Developer Marketing Does Not Exist, gave me similar advice:
“Look back at your most recent commits. Pick a fun technical challenge you faced and share how you fixed it. If you do this every month or two, you’ll have more technical posts than almost any other working engineer.” – Adam DuVander
2. Writing can help you find jobs and clients
Writing can help reinforce topics that you know, but it’s also a window into your skills as a software engineer.
“[Writing] is social proof of my ability to learn in public,” Dan Moore, Head of Developer Relations at FusionAuth told me. “My writing was instrumental in getting my first job in developer relations, as I met the company at a conference and was able to show them work examples.”
“I owe my entire career to a couple of articles I wrote,” Adam DuVander told me. “A tutorial I wrote on Webmonkey led to my first developer job. They saw how I discussed the technology and knew before we even chatted that I could handle the work.” He went on to add that writing helped him get a job with ProgrammableWeb among other career opportunities. “My whole career really all comes back to writing,” he said.
Stephanie Morillo, a technical program manager and author of The Developer’s Guide to Content Creation, had several examples of how writing has helped her on her career journey:
“I once got a full-time offer to join a cloud computing startup as a copywriter on the strength of a few blog posts I’d written. I wrote a few articles about tech culture in the mid-2010s and was able to secure conference speaking engagements from them. I was offered a role as a part-time technical writer for an open-source organization, and I even started doing freelance copywriting on the side for [software development] agencies.” – Stephanie Morillo
John Gramila and Keanan Koppenhaver, both software consultants in Chicago, had similar stories of getting new clients thanks to articles they’ve published about various software engineering topics. “People want to engage and want to reach out,” Keanan said, “but if you never put yourself out there with something you’ve written, you won’t see many of those opportunities.”
3. Writing can lead to book authorship and public speaking opportunities
Back in 2017, I challenged myself to write something every day. Most of the pieces that came out of that experiment were random programming topics I was learning, but for about three months, I focused on a series of articles about using PHP with Docker.
This led to a short, self-published book, conference speaking opportunities, and lots of consulting offers over the years. I didn’t feel like I was an expert on PHP or Docker, but because very few people were writing about the topics publicly, my work stood out.
Dan Moore had a similar experience, turning a collection of his blog posts into a full-length book (Letters to a New Developer). James Hickey, a Senior Software Engineer and Microsoft MVP, echoed similar opportunities thanks to his writing. “I have had many people reach out to me about doing contract work simply by reading my blog and had many offers to write books in the last couple of years.”
Adam DuVander pointed out that taking on projects like writing a book or speaking at a conference is a career differentiator as well. “Instead of competing with all other engineers, you become The Choice in your area,” he told me. “Write about it and if there’s enough business interest, you’ll find a great role.”
4. Preserves your personal historical record
If you work for a company with restrictive intellectual property rules, you might not be able to share much about your day job publicly, but even writing privately can be valuable.
Stephanie Morillo told me that she recommends developers try journaling. “Journaling gives you the opportunity to write without being self-conscious because you’re not writing with an audience in mind; you’re doing it for yourself.”
Dan Moore added that “Writing serves as a historical record, but more importantly it clarifies your thoughts. I often write down a question or issue I’m facing and find that I see new avenues for exploration.”
Recording your logic at a point in time is also important because it’s likely to change (and hopefully improve) over time. I’ve found myself coming back to the same ideas and engineering problems repeatedly over the years.
This revisitation of the same topics is now part of my writing process, as each time I write about something, my ideas and arguments get a little stronger. In the same way that Fred Brooks warns us that “In most projects, the first system built is barely usable,” I find the first piece I write about a topic is much less compelling than later iterations.
5. Writing opens up new career opportunities
Finally, having both writing and programming skills opens you up to entirely new career options. Whether you’re experiencing burnout or simply want to look for new challenges, developers who can write have a lot of options for alternative career paths.
“The options are almost infinite, but include product, technical account management, marketing, sales engineering, and more. You can combine your authentic technical background with the ability to communicate it in a role where those skills are both much needed and rare.” – Adam DuVander
While writing may not be quite as lucrative as software development, there are plenty of hybrid roles like technical writing, developer relations, and technical training that offer very good salaries and career advancement opportunities.
I don’t expect many developers to take these alternative pathways, but it’s helpful to know these roles exist. Many people who get burned out of software development have a hard time deciding what they can do with their skills, but if you enjoy writing, there are plenty of unconventional options.
Writing is an essential part of modern software development, and it’s only getting more critical as remote work becomes increasingly common. That said, you don’t have to start a public blog just to get started. Taking on small projects like answering Stack Overflow questions, writing Twitter threads, keeping a journal, or taking extra time on your company’s internal documentation are all good ways to get started.
If you want to start your own blog, Medium, Dev.to, and Hashnode are all popular options for developers. Or, if you’d prefer to get paid to write, there are many great technical blogs that pay contributors.
However you do it, I’d encourage you to just get started. When you do, let me know about your journey on Twitter. I’d love to follow along!Tags: career advice, writing
I would avoid any central service, like Medium and Hashnode. All of your content can be wiped out at a moment’s notice for opaque and/or unfair reasons. Or the service itself shuts down. And they usually change the rules for the worse.
Instead host your own content, under your own domain name, using a cheap hosting provider. Yes, there is a little bit of hassle and there is some cost, but the cost is very low (on the order of 2 USD per month).
The central services, including social media, can be used to promote your self-hosted content.
How were you able to take zero English classes in college?
I actually have to disagree about the importance of writing in engineering. I’ve had engineering jobs where it was important, but that’s usually because I wasn’t coding much in those positions. The best jobs I’ve had are the ones where I’m coding a lot, and I’ve had to do virtually zero writing in these positions. Mainly, I think these organizations realize that only engineers can write good code, but anyone else can craft up emails and other business stuff.
Here’s my take as an engineer of 25 years and CTO of 3 startups… I agree that writing is a great exercise both for internalising new information, and for improving outward communications. It really helped me to communicate technical concepts to non-technical stakeholders, make sure customer requirements were correctly captured, and in all sorts of other ways.
However, I do not think it should be published.
A single keen young developer sees writing online as a way to stand out, except if everyone does it, nobody stands out because we just end up with too much content. Millions of posts about things that are new to them, but not to anyone else. Sometimes these posts are just plain wrong from the start. In an attempt to showcase their skills, we end up with a huge archive of out of date information about platforms, services, language features and frameworks that are constantly changing, while their posts do not, because the majority do not maintain and update them.
Other developers use the internet hoping to find real solutions to real problems, not a junior developer’s first and likely imperfect attempt.
Write, because it will make you better at your job. Put it somewhere that you can easily share as an extension to your resume, but make sure it isn’t crawled and doesn’t contaminate the web. We cannot all be thought leaders.
Reading is like writing on water, but writing is like writing on stone.
Effective communication shouldn’t require a significant part of your work day as a developer. When you’re on a team with someone who bloviates, either in emails or in meetings, you always dread their “turn” to communicate. Precise, brief, efficient communications are great; practice delivering those.
Of course, if you have a pointy haired boss, learning to speak their language will be helpful and putting things in terms they’ll understand (or, at least fake understanding) is also a golden skill to have. Apart from appeasing the ego of the management team, verbose communications aren’t ideal for a developer. If you have that much time (25% to 90%of your day) to write away during the day, your team needs to adjust the work assignments to challenge you more. Or you’re really the PM or team lead without a manager on your project.
I completely disagree. Writing code is an act of communication. Building things and being able to share what, why, and how you did them are all important parts of the process.
What part of being a software engineer ISN’T communication? You are either communicating with machines, with other people who communicate with machines, people on your team who may have no idea how to talk to machines (in which case your role is also that of a translator), or clients and end users. Yes, it is important to not waste peoples’ time by bloviating, but what might seem like ‘precise, brief, efficient communication’ to you may not adequately help the other person understand, especially if they are not particularly tech-oriented.
I think writing well in fact is each more a required skill, mostly in English (because is a world language). To me, as not English native guy this is even more challenger. This is most notorious today in remote culture, where is common to work with people from everywhere of world. As result of this of this we work with people in many different time zones making the communication be mostly asynchronous. By consequence, we spend each more time writing text messages in slack and another apps.
I think writing well in fact is more a required skill, mostly in English (because is a world language). To me, as not an English native guy this is even more challenging. This is most notorious today in remote culture, where is common to work with people from everywhere in the world. As a result of this, we work with people in many different time zones making the communication be mostly asynchronous. As a consequence, we spend more time writing text messages on slack and other apps.
Writing is definitely a critical skill for software development and collaborations. Think of all the post on Stack Exchange, where it clearly shows the inquirer either didn’t read the documentation or there currently isn’t documentation. Now on the flip side, many projects have to be delivered in a short amount time, especially using the Agile/DevOps framework. An engineer does not have the time to write and read whole novels as they program. This is why there must rules regarding comments and programming structure.