Expressing Your Thoughts in Software
Published: Jul 31, 2024
Last updated: Jul 31, 2024
Do you consider expressing your ideas in software a difficult concept? You are not alone. Expression is hard, but sprinkled in with the many layers of software development, it can be even more challenging.
I personally waiver back and forward between how confident I feel about my ability to express my thoughts. It's something that I've been thinking a lot about more recently as some long-term projects come to a close at my company. Today's post aims to share some of thoughts.
We'll cover why I believe expression to be important, why it feels so hard a software engineer and a strategy that I've come up with to help me improve.
The importance of expression
How often in your daily role in software have you come across a situation where you want to make your opinion known but felt unable to find the words to do so? Worry not. You're not alone.
The ability to either express yourself well or not to have a wide-ranging set of implications.
Some of the positives:
- Feeling heard.
- Constructive conversations and feedback.
- An exponential speedup in learning.
In contrast, the inability to express yourself does not leave one in a neutral state. I find it likely to have the opposite effect:
- Feeling like you have no say.
- Internal conflict.
- A undesirable state of dogmatism.
This could be the point to slam you, my revered reader, with some statistics to back up my claims. However, given that I've never actually looked into this, we're going off a data point of one: me.
And for me, our honorable data point, I find how well I express myself at any given point over my career directly impacts employee happiness and satisfaction.
Of course I also have colleagues and friends that I have spoken to about this, but it feels remiss to refer to my experiences with colleagues as all-encompassing. As far as I know, every workplace in Australia is an echo chamber and not representative of how my readers experience.
My expression couldn't lead to constructive conversation? I feel my opinion is not valued and I find myself devaluing theirs. I couldn't adequately disagree with our approach? It festers inside and it can lead to self-imposed stress or irritation. My approach was not understood well and dismissed? Sometimes I could lean harder into my idea without taking a step back to think more holistically about alternatives.
Why is it that we find ourselves going through these motions? It's human nature. Not everyone will have the same responses I feel, but I believe the majority of us to share some common cornerstones:
- We are social beings.
- We value achievement.
- We value contribution.
These three points are a natural extension of communicating effectively. If you ever end up in a situation where you fundamentally disagree with a concept or approach, express it well and followup with an engaging, constructive conversation, the outcome is likely to be positive irrespective of the approach taken. If you've expressed your idea clearly followed up by a well-thought discussion, you are likely to come to an understanding of the other party's perspective while still having the satisfaction of feeling you have made your contribution towards the final result.
When I say, "followup with an engaging, constructive conversation", it is important to state the obvious: it takes two to tango. You need multiple parties will to come to the table with the mindset of engaging in constructive conversation. That's a discussion for another post.
All of this is a key part of evaluating our own self-worth. But why does it feel so hard for us to do as software engineers?
Why is expression hard for software engineers?
The obvious answer to my last dramatic question: it is not hard for all software engineers. The key to great communication is the adage of practice makes perfect.
Software engineers who are following their career path often end up in a situation where they often choose between a line towards management/technical lead, or a line towards honing their expertise as an individual contributor.
In my opinion, the former requires you to express yourself more often. The nature of the role is to engage with others and make decisions. The latter, however, naturally tends towards more hours working diligently and less time expressing yourself to others.
Working as an individual contributor in software can have some fundamentally unhealthy side effects:
- We spend a lot time at the desk.
- We spend a lot of time in our heads.
Unless we find ways to counter this, you'll may come to find (as our have) that if you are not "practicing" good communication, then it becomes a use-it-or-lose-it situation.
So how do we counter this? Without going into a specific approach just yet, I want to share some of the ways that I feel great individual contributors keep up their communication skills: the teach and/or share often.
The method of teaching is also important. For any Duolingo fanatics out there, you may have found yourself surprised to learn that even after 1000 consecutive days of learning Spanish, you still can't speak it. You might be able to read and write incredibly well if you were diligent, but speaking is another dimension to it.
What I'm trying to illustrate here is that although outlets like writing documentation and verbally shouting opinion pieces (like this one) into the void are in themselves very constructive for certain forms of communication, they are not going to result in the same level of improvement for your capability to convey opinions with speech.
This is a fundamental theme behind this post: it's not that as individuals we don't have opinions or thoughts, it's that we fall out of practice with expressing them.
If you've ever watched developers on YouTube or on stream that you feel do an incredibly job of adhoc-explaining their thoughts or processes off-script, then you'll be pleased to know that is a result of practice.
Some things that great individual contributors do that helps them become better at expressing themselves:
- Pair programming.
- Streaming.
- Public speaking.
- Video content.
If the chasm towards this still feels untenable or too far a chasm to cross, then even begin to express your thoughts to yourself in the mirror. Refine your thoughts and opinions. Practice makes perfect.
An approach to clear expression
The approach I have working on recent is what I call the CLEAR framework (ba dum tss). It's a simple, easily remember acronym that touches on the key points:
- C: Clarity
- L: Lens
- E: Ease
- A: Align
- R: Rehearse
The power of analogies, mnemonics and metaphors is not to be underestimated. That in itself requires a blog post of it's own as it can go a long way to containing complexity in your ideas and making them more memorable.
How to visualize the CLEAR framework
Imagine you have a glass prism. Light enters the prism and is refracted into a spectrum of colors. For a more vivid version of this, think of The Great Pyramids of Gaza as our glass prism, with the sunlight coming through being refracted out the other side of the pyramid as a gigantic rainbow.
Our light prism, as seen though the lens of an AI prompt.
- The light coming into the prism as the input we want to comment on.
- The glass prism itself is representational of our opinion forming process.
- The spectrum of colors represents our expression of that opinion.
The glass prism is where our CLEAR process comes in. It guides our approach to taking that input, making sense of where we stand on it and how we want to convey it.
Let's walk through each step.
Clarity
Seek clarify on your opinion by asking yourself questions. If open questions are too broad to answer, try to ask yourself closed questions (yes/no). This will help you to refine your stance on the matter.
Lens
You can think about this point in a number of ways:
- What is the lens that you are looking through?
- What is the lens that your audience is looking through?
- What is a "lens" that you could use to simplify what you want to say?
Ease
This in a natural extension of the "lens" property. Simplify the lens that you and others can look through.
I think of this point as being the most integral. For difficult concepts, close that chasm that others need to cross in order to understand your thought process.
In regards to technical terms, concepts like Domain Name Server (DNS) can be simplified to "the phone book of the internet". Examples like this can go a long way to making your opinion more accessible.
This is also true for non-technical terms. If you wish to convey why you dislike certain processes or approaches around project management or team dynamics, seek a way to simplify your opinion to a more relatable viewpoint.
Align
For this point, you can ask yourself these questions:
- How will your opinion align with the desired outcome?
- How does it align with your values or the values or the greater team?
Keeping the end in mind for your opinion will guide how you speak.
Rehearse
This point speaks to the practice that we mentioned. Of course, this is not always possible in the moment, but you'll often find that the values that drive your opinion are often the same values that drive your current state as a software engineer.
If you have common gripes or event some post-trauma about something that went wrong, then you likely already have strong opinions on those things. Rehearse those opinions. Refine them. Make them more accessible. That preparation will help you in the moment.
Some final points on CLEAR
Here is the reality of forming an opinion: you won't always nail the delivery.
Don't sweat it. Even the best communicators have moments where their delivery doesn't nail the landing.
It's all a process. The more you practice, the better your average delivery will become.
Finally, if CLEAR doesn't work for you or the visual I provided doesn't resonate, then this is a great chance to put this into practice for yourself. Make your own approach that helps you to express your thoughts better.
Conclusion
In conclusion, expressing ideas in software development can indeed be challenging, but it's an essential skill that significantly impacts both personal satisfaction and professional growth. As software engineers, the balance between technical expertise and effective communication is crucial. By recognizing the importance of expression and actively working to improve it, we can enhance our contributions, foster constructive conversations, and ultimately achieve better outcomes in our projects.
The CLEAR framework provides a structured approach to refining our communication skills. By focusing on CLEAR, we can systematically enhance how we articulate our thoughts and opinions. Remember, practice is key. Whether through pair programming, public speaking, or simply rehearsing your ideas, the more you practice, the more proficient you will become at expressing yourself.
Effective communication is not just about being heard but about creating a dialogue that leads to understanding and collaboration. By continuously working on our ability to express our ideas, we not only improve our own satisfaction but also contribute to a more inclusive and innovative working environment. So, take the time to practice, refine your approach, and don't be afraid to express your thoughts. It's a journey worth taking.
Disclaimer: This blog post used AI to generate the images used for the analogy. You may have figured that out when you saw the light not entering the prism as a straight line but shining at the tip. I left it in because it felt cool.
Photo credit: acharki95
Dennis O'Keeffe
Melbourne, Australia
1,200+ PEOPLE ALREADY JOINED ❤️️
Get fresh posts + news direct to your inbox.
No spam. We only send you relevant content.
Expressing Your Thoughts in Software
Introduction