There's this thing, X, which can be used to do Y and Z. I think the way it works... No actually that's when... Ummmm OK so there's this other thing that I came across which I think does (pause) what I was thinking this thing did. Actually no, that was something else. OK so basically... Actually, hold on a sec...
This is me trying to explain anything to anyone. I need to read more books.
Stringing together coherent sentences that involve technical elements has always been challenging for me, a difficulty that is greatly multiplied when speaking to people who fall into any of these categories:
- People I do not know.
- People who are intimidating in any way e.g. someone of high importance or who I think is "above" me, or someone I do not know well that I am interested in building a good relationship with.
- People who I know do not understand or have an interest in technical details (whether they be minor or in-depth).
I am starting to notice this issue more and more as I become involved in having to explain a concept or the way something I have done works, so I began to have a think about reasons behind it. I'll talk about each of the reasons I thought of below.
I am a naturally shy person and don't make an effort to talk to other people unless they initiate a conversation with me. It's not because I am rude or completely anti-social, it is because I am overcautious of wasting other people's time or confusing them entirely talking about something they aren't interested in. The fact that I am very passionate about what I do means that I invest time in programming where a typical person might be socializing, reading a book, watching TV, or anything else where there is exposure to people engaging in a solid conversation.
As a child I was always occupied with problems rather than people. While other kids played together, I spent most of my time on my own; trying to build a 2000 piece LEGO helicopter, or trying to fully understand new concepts like spelling or basic arithmetic. Apparently I did not take an offer for assistance well, nor did I appreciate the concept of teamwork.
I became very interested in video games; they contained hundreds of problems to solve and no people to distract or attempt to help me. I spent hours and hours every day as a kid fully completing every game that my parents would buy me on the PlayStation. I preferred the harder difficulties and more challenging games.
By this stage I have had limited interaction with my peers compared to a typical student. This is when I began learning how to write code, using ActionScript 2, which is when I discovered the path of unlimited problems to create and solve. From this point on my brain has always been in the on position; thinking about how something could be done. I almost always had a programming problem in my head, whether it was something as broad as an idea for a new piece of software, or something as specific as how I could improve a function I wrote a few weeks earlier.
I preferred to stay at home during weekends and holidays, writing small games, eventually failing to appear at school whatsoever in favor of staying up all night to nail a bit of logic I was working on. This is probably where most of the damage to the development of my communication skills was done.
Writing and reading code all day, every day.
Since becoming employed, I of course write and read code every day. Writing code involves solving an overarching problem, typically building some kind of software, by defining many smaller problems that when solved will yield the desired solution: the complete, bug free product.
This is a thought process that seems to have invaded my ability to vocalize something correctly. My brain wants to work in small blocks in high detail, but I am trying to talk about a broader problem in a concise fashion. I am used to having a wealth of time to work out how a smaller problem can be best tied to the bigger picture; time that you are not given when you need to respond to a question you're being asked without an awkward 90 second pause while you think.
Another thing to consider is that I don't have much of a chance to discuss complex concepts in detail at work. I am the only back-end developer, as well as the only developer that considers coding a hobby outside of the office. Everything I could potentially discuss with a peer ends up being tested and played with in a side-project over the weekend.
As an example, say I am asked the following:
Can you explain to me what you did to solve the problem we had earlier where the form wasn't submitting?
In this case, my brain immediately wants me to say (all in the same sentence):
- I opened up the site in my browser.
- I checked the network tab in the console.
- I noticed that there was a 400 Bad Request response when submitting the form.
- I remembered that I added in some logic to send a 400 Bad Request response if there were some missing or unexpected fields in the request to the API I created.
- I checked the request payload in the network tab to see what data was being sent.
- I noticed there was a typo in one of the fields being sent.
- I noticed that the front-end developer changed the name attribute on one of the fields.
- I changed it back and it worked.
Then when I speak, something like this comes out:
I checked the console and there was a 400 Bad Request response coming through, which is because there was invalid data sent to the server... A 400 Bad Request is pretty typical to use when there is data received by the server that it did not expect. It's hard to explain, but basically on the form there are fields with names, and then when I looked in the console the name was wrong.
Which I then realize doesn't answer the question whatsoever, so I try to simplify:
Umm, one of the fields was wrong.
Which loses all meaning without context.
I mean the name of this field, first_name.
They don't see how this is relevant to the form not working.
If I had time to think of a more useful response, it probably would have been something along the lines of:
The form wasn't submitting because it was sending invalid data. The reason for that was because one of the fields in the form was named incorrectly. I updated the field and now it works fine.
However this is never what ends up coming out of my mouth. Instead, a hybrid of something too detailed or technical in some parts and too vague or unrelated in others comes out as my brain tries to prioritize more relevant points about what I am trying to convey. Often what I find happening is I try to say everything at once and complete gibberish comes out.
It's something I am trying hard to work on, especially over the next few months.
Conversely, I can write what I consider to be clear, on-point responses to even the most intricate questions when given time to refactor and an audience which will understand actual code in place of an attempt to describe what I would do with some code. I answer questions on Stack Overflow regularly, which I believe has greatly improved my writing ability, as well as my general ability to pinpoint and describe a problem and its solution.
I do find it strange that this hasn't impacted my speaking confidence whatsoever.