We all know there are lots of people unhappy with their work. It is not that easy to find something that meets all Ikigai criteria. I heavily believe that doing something meaningful, fulfilling yet financially rewarding is achievable for lots of people, maybe even most of them. One of the best things when starting searching for a “dream” job or occupation is to understand who we are and what our souls want to achieve. It is so common we fall under a well-established way of thinking about what a good job or a career path is or what can give us happiness. Diving deeper into our minds can shed more light on the career path and our whole life as well. Even if we already have found something we love doing (like coding!), this knowledge can increase our productivity and release us from lots of psychical tensions or many stressors.
There are a few things that I regret I did not know earlier. Understanding them would be definitely helpful at my first job where lots of things were new, therefore stressful. Even now, it was a joy to have a feeling that I am not alone, species like me exist and other people also have to face difficulties with their personality (like being stressed by stupid things or too sensitive, etc.). Those things are:
- my personality type
- whether I am/or not among an HSP - Highly Sensitive People
- few syndromes so common in the IT world
The personality type
Let’s start with the personality type. Despite every human is different, it seems to be possible to understand more or less a personality by a few common characteristics. There are various types of tests available, I think it is good to take at least several of them to have a better match. I especially enjoyed Myers-Briggs (MBTI) tests, there are plenty of websites that offer the test for free (like 16personalities) and if you want to know more - then you pay. One important thing to mention - we cannot treat the test as an oracle. It is only an approximation of how possibly we perceive the inner and outer world. For example, my personality is ENFP, where I make decisions by my heart and focus much on relations between people. I have read that such a machine-focused job, like programming, is highly discouraged for my personality. That couldn’t be further from the truth. I believe it is because of the wrong perception of what programming really is. We really do not sit in a basement without any other humans.
If you have not done such a test before, go ahead and do it as soon as possible - maybe you will understand yourself better. From the programming job perspective, I understood why I prefer some particular types of work and environments. Things below are especially important to understand as we can potentially map them to job-related scenarios:
- low vs high a need for novelty - whether it is better to switch projects and technologies often or to stick with the same project for a longer time. That means a “warm, comfortable seat” vs a challenging but stressful nature of work
- low vs high need for freedom - whether it is better to work with well-established environments with rigid procedures and lower decisiveness or work with challenging and somehow risky projects with lots of responsibilities and pressure
- following plans and schedules vs energy spikes - very important to understand to boost the productivity up - stick to the plan or ride the spikes
- acting based on emotions/facts - important how you make your decisions, also at work
- interpersonal skills - vital to understand if you plan a further career i.e. in leadership. You can understand the way you perceive and solve conflicts or how others perceive you.
There are far more benefits from understanding ourselves. I agree we could answer the above questions intuitively, without much thinking. We change projects because we want to learn. We all want to decide what technology to use and have at least a partial impact on the project’s architecture. Still, sometimes there are also additional drivers for those decisions we are not aware of. I think we all know devs who are OK working on the same projects for years, even if their code is legacy. They are people who jump to management pretty quickly while the other ones will never like to do that. Some of them even turned around from the management path. We all know engineers who specialize in one area deeply while the other ones prefer a wider but shallower knowledge.
For me, the feeling of “being understood” was also relieving. Knowing better our personality can also improve other areas of life, like our relationships.
…and your strengths
Another cool thing is the tests for our strengths (like Gallup, HIGH5, and others). I find them somehow redundant once we find out our personality type, though. Results from those tests matched almost perfectly to already found strengths during the previous exercise, at least for me. Maybe it will be different for you. Still worth trying, especially that answering even multiple short questions does not take much time.
Being among Highly Sensitive People
Recently I have also discovered I am a highly sensitive person. I even did not know a term like that existed. It is estimated that 20% of the society belongs to HSP, so a pretty significant number. Generally speaking, I think it is not that easy to be an HSP in a modern, noisy, and fast-paced world. What are the main features of an HSP? Here you go, at least a few of them. Basically, HSP:
- do not like noise and crowded places (open-spaces are evil!:))
- hate being criticized (comments code-reviews shall be kind:))
- hate competing with others, they prefer cooperation or working solo
- do not like conflicts and aggression (I even dislike cynical, sarcastic jokes, etc.)
- need a longer time to make a decision (i.e. choosing the main framework shall take some time:))
- compare with others and are too fragile about what others think of them
Thanks for finding out I am an HSP, I can be more immune to lots of stressors I did not understand earlier. I already heavily detached myself from treating my code as my child :) - code reviews are much more pleasureful. If someone criticizes me, I always remind myself to not treat that personally. It is not easy, though. I also would quit a job if I had to compete with others. Thanks for understanding better my personality, I am less prone to force myself to do something. Instead, I try different approaches - more suitable for myself. If you also feel “fragile”, try to find whether you are among HSP. Like in the previous case, there are tons of tests available for free.
Last but not least, let’s talk about the so-called “syndromes”. Even if some of them are well-known, surprisingly lots of devs have no idea of their existence. I have heard about some of them pretty late, years after I started the job. Once again, I wished I knew them earlier.
The Impostor Syndrome
Impostor syndrome (…) is a psychological pattern in which an individual doubts their skills, talents, or accomplishments and has a persistent internalized fear of being exposed as a “fraud”. Despite external evidence of their competence, those experiencing this phenomenon remain convinced that they are frauds, and do not deserve all they have achieved. Individuals with impostorism incorrectly attribute their success to luck, or interpret it as a result of deceiving others into thinking they are more intelligent than they perceive themselves to be.
Personally, I suffered a lot from this syndrome as a junior dev. I was afraid of being exposed as a “noob”, even if I was delivering tasks well and fast. I felt ashamed when I had to check things on StackOverflow. I was afraid of asking too many questions and was trying to understand everything by myself. I guess you can add far more examples and they will all match. It was incredibly “refreshing” to read about this syndrome for the first time. Now, I do not care that much what others think about me. I know the technology evolves so fast I will always be a junior at something. And that is pretty cool! Additionally, I am not afraid to admit, that:
- I love asking questions around than figuring things out myself. It saves my time for something more productive, I often get battle-tested solutions and just… meet more people! Kind of socializing :) Am I sometimes look dumb? Maybe yes, maybe no. Does it matter?
- I use StackOverflow day by day, even for the simplest problems. Sometimes I even compare my snippets with other solutions there. Often some of them are just better. StackOverflow could become my browser’s homepage :)
- I often forget the simplest API from Java, well-known libraries, not to mention something more exotic. To me, they are just details. We have an IDE with autocompletion to do that stuff. The only problem is during interviews when I have to code something on paper:)
- Lots of the time I am “the dumbest guy in the room”. And this is perfect! We should change the room if we are the smartest.
- I make lots of stupid mistakes. That is why I try to test my code well as I do not trust my untested code :)
- I have issues to estimate lots of things. Sometimes the complexity reveals as-you-go and there is no way to figure it out before.
… and despite that, I am still alive and can still do my job well. To truly enjoy my job, I had to first understand the impostor syndrome.
The Real Programmer Syndrome
I have heard this term a few times and definitely, I am not a “real programmer” :) Despite I know how to exit VIM, I do not code there (even if I used to:)) like a real programmer! I also do not code in Notepad. I do not compile my kernel, and yes - I often use Ubuntu-based distros! I do not know by heart more than few GC flags and I do not find bugs by looking at the bytecode. I also do not spend all evenings coding, as a real passionate programmer would do! I am not a “real programmer”, but at least a “happy” one:)
The Hero Syndrome
I often was a “hero of the project”. I was the one who often delivered the critical functionality just on time, spending evenings or nights to accomplish that. I was the one deploying the app where everybody else was having fun at the annual company party. I was that hero who… frankly speaking - allowed for poor project management. Who was not able to discuss a proper deadline. Who sacrificed my own time and life just to push the code that eventually waited months (!) to get properly tested due to the lack of available manual testers. I am not a hero anymore. The world has not collapsed, though. To my surprise - my code got better as well as my family life.
Being “too important”
One another thing to be aware of - being “too important”. If you need to be at every meeting, because no important decision can be made without your voice. If you have to oversee every release. If you have to approve every PR, interview every candidate in your department. If you are constantly pinged because only you understand some key components of the system. If it sounds familiar - you are in a trap. Not only because you are a single point of failure, but over time you will get overwhelmed by all those activities. To be more productive, we need to follow the “less is more” principle. Delegate as many things as possible. Write as much documentation as you can. Refuse unnecessary meetings. It is really important to be unimportant. Otherwise - good luck :)
Technology evolves. Frameworks come and go. We will need to learn the new stuff over and over. Therefore I think we need to focus first on more fundamental things - and one of them is to understand who we really are. What we want, what drives us, and what can really make us happy. What to avoid, how to react. Getting deeper into our mind will not take much than learning a single framework, I think. Still, we will benefit from that possibly in our entire life, not just the next few months until something new pops up:)