4 Writing your future

Your soft skills will take a life time to develop and are really hard use. Why? Because soft skills are about communicating with and understanding other people so that you can work together as a team toward a shared goal. Your soft skills are hard. There are very few jobs where you work on your own in complete isoltion. For example, most software and hardware is designed, built, tested and used by teams of people. Many of these teams are large and have very diverse membership. This means that sooner or later you’re going to have to master the dark arts of working with other people by developing and deploying your softer skills. 😱

Unless you want to be a lighthouse keeper on a remote island, there are very few jobs where you don’t have to work as part of a team with other people. Sorry to break the bad news! This means you need to constantly improve your softer skills and provide evidence of them to potential employers. Other people sketch by Visual Thinkery is licensed under CC-BY-ND

Figure 4.1: Unless you want to be a lighthouse keeper on a remote island, there are very few jobs where you don’t have to work as part of a team with other people. Sorry to break the bad news! This means you need to constantly improve your softer skills and provide evidence of them to potential employers. Other people sketch by Visual Thinkery is licensed under CC-BY-ND

Communicating with other people and working in teams is inherently difficult because we’re all human. There is good news and bad news…

  • THE GOOD NEWS is, people can be diligent, humble, competent, honest, caring and reliable. They can be co-operative, generous, supportive, kind, thoughtful, intelligent, sensitive, understanding, punctual and professional too!
  • THE BAD NEWS is, unfortunately people can also be lazy, stupid, ignorant, vain, incompetent, dishonest, unreliable, greedy, egomaniacal, unpredictable and moody. They can be proud, selfish, competitive, lustful, angry, envious, mean, busy, insensitive and thoughtless too. Some will disagree with you, boss you around, betray, exploit, misunderstand and mislead you, deliberately or otherwise. (Goble 2007)

So communicating with and understanding other people can be hard work, but don’t worry, everyone finds this challenging, it’s not just you! It doesn’t matter if you’re an extrovert or an introvert, communication is a challenge for everyone, and everyone can get better at it too. This chapter takes a look at the softer skills and techniques you can use to improve your communication with other people, whatever mood they are in and whosever team they are on.

4.1 What you will learn

  • Recognise the importance of written communication, both as a reader and a writer
  • Identify examples of where written communication is crucial in science and engineering
  • Improve your written communication skills using some simple writing and reading exercises
  • Identify the importance of teamwork

4.2 Computing is your superpower!

Studying computer science gives you an awesome superpower. We will look at some of the reasons why in chapter 6 on Computing your Future. But for now, let us just acknowledge that hard technical skills like computing are highly sought after and valuable, both commercially and otherwise.

Computing is a superpower that gods like Hermes and mortal heroes like Achilles would probably have envied. (Fry 2018) As a technical or hard skill, computing is a crucial weapon in your armoury but what are your weaker skills? What is your Achilles’ heel? For some scientists and engineers, their weakness is their soft skills, such as communication and team work. This chapter looks at what you can do to improve them and convince employers that you are rounded individual with a healthy balance of soft and hard skills. Achilles heel to superpower by Visual Thinkery is licensed under CC-BY-ND

Figure 4.2: Computing is a superpower that gods like Hermes and mortal heroes like Achilles would probably have envied. (Fry 2018) As a technical or hard skill, computing is a crucial weapon in your armoury but what are your weaker skills? What is your Achilles’ heel? For some scientists and engineers, their weakness is their soft skills, such as communication and team work. This chapter looks at what you can do to improve them and convince employers that you are rounded individual with a healthy balance of soft and hard skills. Achilles heel to superpower by Visual Thinkery is licensed under CC-BY-ND

Your computational superpower is less powerful if it isn’t complemented by a broad range of softer skills. Typically, these skills are not closely examined in most computer science degrees, by repeated assessment. This not because soft skills aren’t important but because they are hard to measure accurately.

For example, if I want to know how good you are at understanding the syntax and semantics of a programming language like Python, there are tried and tested techniques for doing this. However, if I want to know how good you are at using your communication skills to work in a team, negotiate, lead, resolve conflicts, persuade others, show empathy etc that’s much harder to measure accurately.

Hard skills and soft skills aren’t much use without each other. You will need both to survive and thrive but most science and engineering education focuses on your hard skills, not your soft skills. Why? Because hard skills are often much easier to measure. Hard and soft skills sketch by Visual Thinkery is licensed under CC-BY-ND

Figure 4.3: Hard skills and soft skills aren’t much use without each other. You will need both to survive and thrive but most science and engineering education focuses on your hard skills, not your soft skills. Why? Because hard skills are often much easier to measure. Hard and soft skills sketch by Visual Thinkery is licensed under CC-BY-ND

Let’s look at some of low-level communication skills (I/O) that they are built on.

4.3 Communication I/0

In terms of input and output, your fundamental communication skills are listening, speaking, reading and writing words in natural languages shown in table 4.1. These are the “assembly languages” of human communication. This might sound blindingly obvious, but these skills are often under-estimated or undervalued by engineers and scientists, especially undergraduates. Alongside verbal and written communication, there’s also nonverbal language, or body language such as eye contact, gestures and facial expressions.

Table 4.1: The inputs and outputs of the fundamental assembly languages of human communication
Input Output
Written natural language Reading Writing
Spoken natural language Listening Speaking
Nonverbal language Observing other people Being observed by others

Some engineers and scientists leave plenty of room for improvement when it comes to the communication skills outlined in table 4.1. Think of your stereotypical scientist, clad in a white coat, unable to explain the complexities of their subject to people inside their lab, let alone outside of it. Then there is the nerdy software engineer stereotype who prefers the company of computers to people. Yes, these are lazy and sometimes unhelpful stereotypes, but they express public perception of scientists and engineers as poor communicators. Don’t perpetuate the stereotype by being a bad communicator.

4.3.1 The pen is mightier than the sword

The art of communication is a huge subject which extends far beyond the scope of this guidebook. So for the rest of this chapter, we’ll focus on your superpower of written communication. The pen (and keyboard) is mightier than the sword, see figure 4.4.

Need to arm yourself with another superpower for communication besides computing? It’s in your own selfish interests to continuously develop your written communication skills because the pen is mightier than the sword. Public domain image of a drawing of Cardinal Richelieu by Henry Alexander Ogden via Wikimedia Commons w.wiki/3WHg adapted using the Wikipedia app

Figure 4.4: Need to arm yourself with another superpower for communication besides computing? It’s in your own selfish interests to continuously develop your written communication skills because the pen is mightier than the sword. Public domain image of a drawing of Cardinal Richelieu by Henry Alexander Ogden via Wikimedia Commons w.wiki/3WHg adapted using the Wikipedia app

Written communication skills are important because:

  1. Good writing and reading are crucial in applications for employment and further study. From writing CV’s, covering letters, completing application forms and reading job specifications, and employer (or course) information, your ability to read and write natural languages is crucial to coding your future.
  2. Writing often gets neglected: Written communication skills (both reading and writing) are sometimes sidelined in science and engineering degrees. This is particularly true in the “hard sciences.” For example, communicating and solving problems using code or mathematics are usually the dominant forms of assessment in computer science courses. That’s understandable given the subject, but tends to push natural languages like english to the sidelines.
  3. Good engineers are also good writers Many engineers (and scientists) could significantly improve their written communication skills. Software engineers are notoriously bad at writing, see for example Why Computer Science Students Need Language, (Beaubouef 2003) Scientists Must Write (Barrass 2002) and The Real Reason Silicon Valley Coders Write Bad Software, (Meisler 2012) just three examples amongst many others making exactly the same point. Employers like Google provide training (and a whole career path) for technical writers, see developers.google.com/tech-writing. I’m glad they exist, but these careers and courses wouldn’t be needed if software engineers were better at documenting, explaining and communicating with other human beings in the first place!
  4. Writing good english is like writing good code. Some of the skills you already have in coding can be transferred to written communication. Just like a good function or method in code should be well-defined with a clear purpose, your writing should also be clear and coherent. Well structured writing is a lot like well architected software too, with a clear separation of concerns (SoC)
  5. It is relatively easy to improve your written communication skills, simply by reading and writing more. Reading and writing deliberately every day, will significantly improve these skills. See the rest of this chapter for some simple exercises to get started with and:
    • chapter 7 on Debugging your future
    • chapter 15 on Hacking your future for details.

4.3.2 Natural language engineering

As a species, we’ve been writing stuff down for millenia in order to communicate with each other, see figure 4.5. If you stop to think about it, engineers and scientists spend a lot time communicating in writing. As well as engineering code, they also spend a significant amount of time engineering messages in natural languages like english.

Have you ever noticed how when people become serious about communication, they want it in writing? CC BY-SA image of language in Ancient Egyptian using hieroglyphic, demotic and Ancient Greek written on the Rosetta Stone by Hans Hillewaert on Wikimedia commons w.wiki/3Ycn adapted using the Wikipedia app

Figure 4.5: Have you ever noticed how when people become serious about communication, they want it in writing? CC BY-SA image of language in Ancient Egyptian using hieroglyphic, demotic and Ancient Greek written on the Rosetta Stone by Hans Hillewaert on Wikimedia commons w.wiki/3Ycn adapted using the Wikipedia app

Consider the following:

  • email and instant messaging, Slack, Microsoft Teams, Discord, Zoom etc
  • Posting on social media: LinkedIn, Facebook, WhatsApp, Twitter, blogs, Medium.com etc
  • bug reports and messages in issue trackers like Jira, BugZilla, Github, Gitlab and Trello etc
  • ‘How to’ and cookbook style articles and books
  • API reference material
  • in-code documentation # comments in code
  • Self-documenting code that describes itself
  • Executable specifications in test suites like cucumber.io
  • Laboratory manuals and laboratory notebooks
  • The one or two page summary for management
  • reddit.com and hacker news news.ycombinator.com etc
  • User documentation, release notes
  • Case studies of software use
  • Frequently Asked Questions (FAQ)
  • Personal websites YourPersonalDomain.com if you have one
  • Questions and answers on forums like stackoverflow.com
  • Commit messages in version control systems like git and mercurial etc
  • Architecture documentation and design specifications
  • Literate programming natural language descriptions of computational logic (Knuth 1984)
  • Jupyter.org notebooks, code and natural language mixed together
  • bookdown.org mixes code and natural language

What do they all have in common? They’re all written in natural languages like the English language, but without them, the software or hardware they describe and discuss would be useless.

Making software isn’t all about what you can do as an individual but rather how you communicate with and contribute to your team. It’s easy to get carried away with your ego. Remember that most jobs require lots of softer people skills and collaboration, written communication is a huge part of that, see for example The Myth of the Genius Programmer. (Fitzpatrick and Collins-Sussman 2009)

4.4 Writing your future

Hopefully I’ve convinced you that written communication skills (both as a writer and reader) are important soft skills that engineers often neglect. So how can you improve?

4.4.1 Dogfooding

Many employers test their products by trialling them on their own employees, this is known as eating your own dogfood shown in figure 4.6. Tasty, tasty dogfood. 🐶

Reading your own writing (aloud) is like eating your own dog food. It’s a simple and proven technique for improving your written communication in job applications such as covering letters, CVs, personal statements and the like. Picture of a dog chowing on a tasty pig’s trotter (omnomnom) by Denhulde on Wikimedia Commons w.wiki/3a2r adapted using the Wikipedia App

Figure 4.6: Reading your own writing (aloud) is like eating your own dog food. It’s a simple and proven technique for improving your written communication in job applications such as covering letters, CVs, personal statements and the like. Picture of a dog chowing on a tasty pig’s trotter (omnomnom) by Denhulde on Wikimedia Commons w.wiki/3a2r adapted using the Wikipedia App

Dogfooding is a great way to test your own writing. Let’s say you’ve just written a personal statement or covering letter (see section 7.10). It’s natural to read it over in your head to check for errors, before you send it. However, reading it aloud will pick up errors you may not have spotted by reading silently. There’s something about articulating words out loud that flushes out errors you don’t pick up when you read them in your head. Dogfooding is a tried and tested technique. It also means you’re ready to vocalise those answers in an interview.

You might want to choose carefully where you do this as it might look a bit strange, but it works well. If you talk into a mobile phone while looking at a piece of paper, people won’t notice you’re talking to yourself. But you’ll probably need some privacy as the stuff you’re talking about is likely to be personal.

4.4.2 Try Google’s Tech Writing course

Google have developed some excellent written communication courses for software engineers, and those looking to become technical writers:

  1. Technical Writing One: Technical Writing Fundamentals for Engineers developers.google.com/tech-writing/one
  2. Technical Writing Two: Intermediate Technical Writing for Engineers developers.google.com/tech-writing/two

These courses run as part of the second year course COMP2CARS at the University of Manchester, see chapter 19 for details.

Google occasionally delivers these technical writing courses as free sessions open to the general public. For details, see developers.google.com/tech-writing/announcements for details.

4.4.3 Deliberate daily writing

Another technique for improving your written communication is to write something every day, that might be a personal diary that only you read, or it could be something more public like blog. Schedule a time every day, say 15 to 30 minutes when you will do this without fail. That writing could take several forms:

The technique of 30 minutes per day can be a very effective way of getting things done, incrementally over time. In my experience it works for lots of things besides writing including getting exercise (discussed in chapter 3) to gardening. (Leendertz 2006)

4.4.4 Deliberate daily reading

Reading other people’s code will improve your software engineering skills. Likewise, reading other peoples writing will improve your natural language engineering skills. Read anything, it might be novels, magazines, newspapers, stuff online or any of the books cited in chapter 20. Find a time and place to do this every day and stick to it, see figure 4.7

Reading allows you to learn from other people’s hard won experience whilst also improving your own written communication skills. Just like you improve your coding skills by reading and writing code, you will improve your written communication skills by reading and writing in natural languages. The motivation for reading by Visual Thinkery is licenced under CC-BY-ND with help from Michael Rosen

Figure 4.7: Reading allows you to learn from other people’s hard won experience whilst also improving your own written communication skills. Just like you improve your coding skills by reading and writing code, you will improve your written communication skills by reading and writing in natural languages. The motivation for reading by Visual Thinkery is licenced under CC-BY-ND with help from Michael Rosen

4.4.5 Reading the friendly manual

You don’t get good at communicating with computers (coding) by just writing lots of code. You also need to read other people’s code too and be able to understand and modify it. Likewise, you don’t get good at communicating with people by just writing stuff in natural languages like english. You need to read stuff too. Books, manuals, software documentation, articles, use cases, novels, poetry, plays, magazines, newspapers etc. Reading this stuff will help you learn and you’ll improve your written communication skills too. So Read The Friendly Manual. RTFM. Read THIS Friendly Manual and the stuff it cites, see figure 4.8

Read The Friendly Manual (RTFM), some of it you will love, some of it you won’t. Either way reading will help you develop valuable skills and knowledge. Read The Friendly Manual by Visual Thinkery is licenced under CC-BY-ND

Figure 4.8: Read The Friendly Manual (RTFM), some of it you will love, some of it you won’t. Either way reading will help you develop valuable skills and knowledge. Read The Friendly Manual by Visual Thinkery is licenced under CC-BY-ND

4.5 Breakpoints

Let’s pause here. Insert a breakpoint in your code and slowly step through it so we can examine the current values of your variables and parameters.

* PAUSE ⏸️
  • Which of the communication skills in table 4.1 are your strongest?
  • Which of the communication skills in table 4.1 are your weakest?
  • What activities could you do to improve your weaker communication skills?
* RESUME ▶️

4.5.1 Coding challenges

  • Write an article or blog post about something you care about, find a suitable venue for publication
  • Take a course from outside computer science, where the main form of assessment is written essays or dissertations. Humanities departments are a good place to start. This will improve your written communication skills
  • Not been reading many books lately? Pick a book to read just because its interesting, rather than because you have to.

4.6 Summarising your soft skills

Too long, didn’t read (TL;DR)? Here’s a summary:

You’ll need both soft and hard skills to compete in the workplace. Don’t underestimate the importance of softer skills, we’ve looked briefly at written communication skills in this chapter but that’s only the tip of the soft skills iceberg.

Teamwork, negotiation, conflict resolution, public speaking, motivating others and leadership are also important soft skills too. How can you develop these skills while at University? How can you demonstrate to potential employers that you have these skills? Your technical skills are of limited use without people skills, see figure 4.9.

Your network can help you before, during and after your employment, so be sure to grow your network when you can. This includes both the stronger ties of trusted friends alongside the weaker ties too, described in section 8.6. Both are important. It’s all about people by Visual Thinkery is licensed under CC-BY-ND

Figure 4.9: Your network can help you before, during and after your employment, so be sure to grow your network when you can. This includes both the stronger ties of trusted friends alongside the weaker ties too, described in section 8.6. Both are important. It’s all about people by Visual Thinkery is licensed under CC-BY-ND

This chapter is under construction because I’m using agile book development methods, see figure 4.10.

Just like the Death Star, this galactic superweapon chapter is under construction. Image of agile weapon engineering in Star Wars via Wikimedia Commons w.wiki/32PB adapted using the Wikipedia app

Figure 4.10: Just like the Death Star, this galactic superweapon chapter is under construction. Image of agile weapon engineering in Star Wars via Wikimedia Commons w.wiki/32PB adapted using the Wikipedia app