41

Nearly 35 years old Software developer from Germany asking for help or some input. Not easy for me to write my worries and fear down, but I hope it helps me. Actually there is no one in my social circle who understands my concern which makes it hard to talk about as they are not working in the software development industry.

I am almost around 10 years into the software development industry. Half of it in the .NET sector and the other half in the Java Spring Boot and TypeScript React sector. I would assume that I should be some kind of senior developer, but I really do not feel like one.

For sure, I can develop solutions to certain problems. But I feel I am severely lacking in skills like design patterns, architecture, and other big-picture type stuff. I don’t know how to build large-scale systems. I live in fear that the day is going to come where I get assigned something I won’t be able to deliver on, and the house of cards that is my career is going to come crashing down.

Further I am always feeling like the worst developer in our company or even in the whole wide world. There are colleagues where I think that they are more skilled and are able to find better and quicker solutions than I do. It seems like they know everything!

The reason is that I do not think I am good enough for the IT sector, especially for software development. This has been going on for a few months or even for a few years now. The fear and the thinking are present day by day which leads to big pressure on me. Which further leads to the fact that I am totally inhibited by that thoughts which leads to a bigger fear to lose my job now or in the future and stay unemployed.

Another problem is that I have only completed an apprenticeship as a developer, and not studied computer science. The fact that everyone in my team, except me, has a degree in his pocket makes it even worse. Of course, I don't. That makes me feel less valuable compared to the other colleagues in the team. As if one could do without me in the team. Only the fact that most of the team, despite their studies, are not better developers keeps me happy sometimes. But to be honest: Not having a degree in CS in my pocket makes me feel like an inferior employee which also accompanies me day after day.

In summary, I just feel like a complete loser. This frustration then leads to inhibitions, bad mood and "fear of the future" in relation to my job. Yes, some days it actually makes me so depressed that I want to cry because I realize that I have so many gaps in my knowledge that I think it is simply impossible to ever be a good or great developer and be "job safe".

To overcome my fears I had or have the plan to keep learning in my free time. To be honest I do it only irregularly. First because there are so many topics in software development, frameworks, languages and so on that I don't know where to start which then leads to not doing anything at all. Second because I have also other free time activities which have nothing to do with software development or IT at all.

Sure, I really love my job. I love to code and to find solutions to several problems. Further I love to find bugs and analyze why things happen like they happen. But on the other hand the job puts pressure on me to always feel and think that I am not enough for the whole thing. Living day after day with this pressure is not really cool and just brings me down from day to day.

I hope there are other people out there who also faced such problems and can give me some advice.

5
  • 3
    Has anyone told you or given you the impression that you're not a good developer? Have you never ever been promoted? I think if this was actually as bad as you make it sound, you would have been informed by now e.g. by management. Maybe you're being too harsh on yourself?
    – Touchdown
    Jan 6, 2021 at 11:14
  • Wow. Thank you. Thank you all! Never though I would get so much replies and feedback regarding my “whining”. I’ll take my time to work through all of these and try to answer them and extract actions from your posts. Seeing so much replies gives me somehow a good feeling. Jan 7, 2021 at 13:09
  • 2
    Is it possible that you're starting to suffer the effects of stress, and perhaps putting too much pressure on yourself? And remember, in a team, you don't have to be good at every aspect of development or be able to handle every possible challenge.
    – Steve
    Jan 7, 2021 at 20:15
  • Sure, I definitely put much pressure on myself. The older I get the more pressure I put on myself. Scared of a "dead ending" job or career. Mostly because I lack of a CS degree. Somehow this bothers me the most. @Touchdown No, no one ever told me that. The opposite. But then my inner child kicks in and says "They are only nice to you" or "They can not judge this". What exactly to you mean with promoted? I have already received some salary increases because of my work. But as I said - In my eyes the management is not able to rate my work properly. That's why I think I'll be "found out Jan 10, 2021 at 12:21
  • 4
    One advise I was given when I was younger is to not compare your weaknesses with other people's strengths. Everybody is good at something and people have different skillsets.
    – Unnamed
    Jan 10, 2021 at 22:41

8 Answers 8

34

For years I struggled with this type of self-doubt and the fear of being somehow "found out". It only started to ease when I realised the following things:

  • Whenever I completed a task with minimum fuss, I always felt it was because it was a simple task - the kind anybody with basic experience could complete easily. It never once entered my mind that it might have been because I was an experienced developer who was good at my job.
  • Similarly, when I found a task difficult, it was always because I was a second rate developer and anybody else would have been able to complete the same task much more quickly. It was never because it was a tricky task that lots of experienced developers would take time to figure out.

I realised I was being tougher on myself than any of my employers or colleagues had ever been. I'd bet if you take a minute to think about it, you'll find you are doing exactly the same thing.

That's not enough to stop the negative thoughts instantly. What it did do however, was give me the self awareness to recognise the pattern, allowing me to interrupt those thoughts, take a step back and consider...

  • The projects I had worked on and completed and the positive feedback from those clients.
  • The positive performances reviews in my career.
  • The complex, mission-sensitive tasks I had been trusted with delivering
  • The colleagues who came to me for help.
  • The professional certifications I had achieved
  • I have never been fired, demoted or put on a performance improvement plan.

Put in this context it was easier to talk myself down off the (metaphorical) ledge. Over time, as I went through the same rationalisation process my confidence and self-belief grew (and the frequency of the episodes diminished).

Reading and constantly up-skilling is good. Don't stop that - but don't do it in fear of your career falling down around your ears. That's too much pressure. Pick something relative to your current role or something that interests you and dive into it more as a hobby.

3
  • "I have never been fired, demoted or put on a performance improvement plan." I would add that even if it was the case, it doesn't mean you are a bad developer, except if the reason was explicitely this.
    – dyesdyes
    Jan 7, 2021 at 14:42
  • 2
    Truly bad developers that I've seen have no idea how things work, nor have any idea what they did wrong. Then on top of that, the unethical ones that try to copy code from someone else and try to pass it off as their own. Surprisingly easy to spot those and just as clueless. Fired a trainee that way. Kept asking them about the code, and why the formula changed so much from the day before. Couldn't explain a single thing, not from the good code, not from the bad code. Totally clueless.
    – Nelson
    Jan 11, 2021 at 1:40
  • I second @dyesdyes comment: I've been fired from my first job because of management covering their own ass and putting it on me; it affected half of my work career and self-esteem, until I understood I was just in a country with poor work ethic; and moved on. Nov 23, 2021 at 18:05
23

First things first: just about everybody suffers from imposter syndrome to some degree or another. The people I'd worry about more are those who do always think they're the best developer in the company1, because that can be a much more damaging attitude to take.

Probably the most important thing to do here is to get some actual feedback on your performance from your manager. Just ask the question in whatever regular meetings you have with your manager, or set up a meeting if you don't have regular meetings. Assuming that your manager doesn't say "you're seriously underperforming", take that at face value and assume you're not seriously underperforming.

More generally, anxiety is a genuine medical condition. If you feel your anxiety about your performance is seriously impacting your professional (or personal) life, then consider seeing a medical professional. There is no shame in doing this.

1. I'll make a special exception if you are the only developer in the company.

11

Test to see if your fears are true

The reason is that I do not think I am good enough for the IT sector, especially for software development.

This test has already been done. You haven't been fired yet and it has been 10 years.

thoughts which leads to a bigger fear to lose my job now or in the future and stay unemployed.

You can test whether you can get another job offer. Find some companies you don't particularly care about, send in a resume, go through the process, and see if you get an offer.

I have so many gaps in my knowledge that I think it is simply impossible to ever be a good or great developer and be "job save".

One of the things those of us who went to traditional engineering school learned is that you can't know it all and it is futile to try. You will forever be referring to reference materials and addressing gaps in knowledge. Not really a test, just a comment. But again, you can test whether you are job safe by whether you can easily get another job.

First because there are so many topics in software development, frameworks, languages and so that I don't know where to start which then leads to not doing anything at all.

Expecting every developer to know every framework is kind of like asking every biologist to know every species. It is unreasonable. Just pick one and then test your knowledge by building something.

For sure, I can develop solutions to certain problems. But I feel I am severely lacking in skills like design patterns, architecture, and other big-picture type stuff. I don’t know how to build large-scale systems.

Maybe forget about the frameworks and go learn this stuff instead. It is usually generalizable across frameworks. Then go interview for a position that requires these skills and see how you to in the interview.

3
  • 1
    If I may add on your last point, there are a lot of interesting books on the subject, Clean Architecture for example, find conferences videos about the subject you feel you lacks of (Architecture, DDD, TDD, etc).
    – Cromm
    Jan 18, 2021 at 12:56
  • I second that: go through "Clean Code", "DDD distilled", make a course on Clean/Hexagonal Architecture, learn the idea & use of the main Design Patterns (from the so called "Gang of Four" book; or just find a "cheatsheet" and use it as starting point to study); finally make a little course on refactoring following SOLID principles. Setup a little project where to put these things in practice (so you gain confidence) and follow TDD basics to implement it. You'll never learn everything anyway. Also read at least half of "Growth VS Fixed mindset" (Carol Dweck), because that's where's your problem Nov 23, 2021 at 17:55
  • However the issue is with self-esteem, I have the same exact feelings, but figured out that it's mostly because of lack of feedback (together with imposter syndrome & unrealistic perfectionism). Nov 23, 2021 at 17:56
6

I sometimes feel like this almost every day for months at a time. We have a really toxic and problematic culture in tech. I can only attest what worked for me.

I talked about how open source helped me with this in the Reversim 2018 keynote.

Take an imposter syndrome test. Also have imposter syndrome? Good, remember:

  • It's not chronic, it goes away and gets better on its own.
  • It's treatable.
  • You can (and probably should) build self-efficacy (in open source, answer things in Stack Overflow etc).
  • You should practice lots and lots of self care (gym, pets, meditations etc).
  • Practice mindful disengagement.

Do not hesitate to talk to a mental health professional if you feel you should reach out to one. Getting help is no shame.

2
  • 1
    Also please feel free to reach out, my email is available in the Node github homepage here. I am happy to talk with you about this and tell you about what worked for me. Jan 7, 2021 at 19:45
  • 1
    Thanks for mentioning "mindful disengagement", that sounds a very interesting practice.
    – wip
    Jan 17, 2021 at 13:42
3

To overcome my fears I had or have the plan to keep learning in my free time.

I love to code and to find solutions to several problems. Further I love to find bugs and analyze why things happen like they happen.

If you have a website which needs to handle a lot of requests and you are afraid it isn't fast enough so you make it handle 20% more requests per second, does that stop you being afraid? No you still worry that it needs to handle 50% more or 1000% more. If you measure and find that it needs 50% more and you change the code, does that stop you being afraid? No, you still worry that your measurement is wrong or the demand will increase or the code will have flaws. There is no amount of requests that fixes your fear, they are two different and separate things.

If you love to find bugs and analyze why things happen, turn that process on your thoughts and fears - "keep learning" is not an effective plan to fix your problems; learning fixes a lack of knowledge, it doesn't fix a fear of a lack of knowledge, anymore than faster code fixes a fear of a website outage. You could spend a lifetime learning and still be afraid that you don't know enough. The problem you have is your fears, not an amount of knowledge. Your plan to overcome your fears has to address your fears and the thought process around them.

This is what Cognitive Behavioural Therapy (CBT) is about - analyzing and debugging your thoughts. And that's why I suggest that you should consider some therapy or counselling along those lines.

Actually there is no one in my social circle who understands my concern which makes it hard to talk about as they are not working in the software development industry.

If you open up and share your fears, you will probably find that most people can empathise with your fears that other younger coworkers are better, smarter, more qualified, more employable, or fears of losing jobs and livelihood and income, or fear of being on the wrong career track, etc. These general fears are not specific to software development, even if they can't follow the specific tools and projects you work on.

Further I am always feeling like the worst developer in our company or even in the whole wide world. There are colleagues where I think that they are more skilled and are able to find better and quicker solutions than I do. It seems like they know everything!

CBT has the idea of Cognitive Distortions, like design patterns or idiomatic code, but for thoughts - thought patterns that make people stressed, anxious, nervous, afraid - they can be noticed and often changed, e.g. in this paragraph of yours there might be the distortions:

  • Emotional reasoning, "I feel like the worst developer, so I must be the worst developer.
  • Discounting the positive, "There are colleagues who are better" implies there are also colleagues who are not better than you, but you are only focusing on the people better than you not the people worse than you. It's unbalanced - you are only looking up the hierarchy so you always feel at the bottom of it.
  • Magnification; finding better and quicker solutions to some problems is not the same as knowing everything. If that was all it took to do your job, your company would fire everyone and just Google for the answers. Having quick answers is one part of a much wider skill-set - technical and non-technical.
  • Hidden "Should" statements that you beat yourself up with that only make you unhappy they don't help anything; "I should be able to find better solutions", "I should be quicker", "I should be the best", "I should know everything", "I shouldn't have limits", "I shouldn't have flaws"
  • Mental filtering; thinking only about how other people are better, and not thinking about your positive qualities or accomplishments.
  • All or nothing thinking - only being the best or worst developer matters. Really there are many developer skills, and many shades of gray between best and worst in each skill.
  • Discounting the negative - are there ever times these other developers don't find the quickest, best, solution? They can't /all/ find the quickest solution to /every/ problem all at the same time.

And there are many more distorted thoughts running through your post, e.g. "people who can't deliver a project lose their jobs and are unemployable forever" that doesn't stand up to much scrutiny.

The fear and the thinking are present day by day which leads to big pressure on me. Which further leads to the fact that I am totally inhibited by that thoughts

This is why I suggest you might benefit from therapy or counselling or self-help of a kind that focuses on debugging and changing your thoughts and feelings. It is not enough to try and think positive thoughts over the top of these; these thoughts exist to protect you from some perceived harm but they are overgrown, only by working through that part to understand what this kind of thinking is doing for you, can you then tone them down and then make room for more positive thoughts.

2

The first and most important thing to recognize is you are not alone. This career path we've chosen is a difficult path, for sure. The nature of the problems we solve is unique, because most of it is hidden to the outside world. Think of a water faucet: Turn it one way, the water comes out. Turn it the other way, the water stops. If, one day, the faucet gets turned and the water doesn't come out, for some people, it's a sign the world is coming to an end. However, if they knew what was actually involved in getting the water to come out in the first place, they would see it as a minor miracle the water comes out at all.

That, in a nutshell, is software development. I've been doing this professionally since 1985. I had no degree when I started--just an Atari 800 I bought in 1982 and a desire to do and learn more. I had no real software development experience to show during my first interview. My grades weren't that good in school, but I wanted the job more than anything. The hiring manager took a chance on me, and 35 years later, I'm still doing the same thing, even though I've only felt truly competent for the last 15 years or so.

I went through the same self-doubt you're going through right now at about 10 years in the industry. I thought I was just kidding myself, because I wasn't progressing at the rate I thought I should be. I wasn't exposed to a lot of other software developers at the time, but the handful I did know seemed to know so much more than I did. I wanted to ask questions, but I feared revealing my ignorance, so I sought out the answers myself using every other means at my disposal, which were very few in those days. I even went back to school to pursue a psychology degree because I knew I would never make it professionally as a software developer.

Then the Internet happened...literally. I knew it was going to be a big thing, and I wanted to get in on the ground floor, so I went back to my first love. Again, I struggled and fought to understand. I still kept myself to myself, and continued to frustrate myself in the process. By anyone else's measurement, I was pretty successful. I was working steadily, and, eventually, my salary elevated to match the current market at the time. But, by my own measurement, my career was a Jenga stack, just waiting to collapse, because I didn't feel I could keep up with the expectations I was placing on myself that no one else was. That's the key.

I had an executive vice-president at a company I worked for sit me down one day, just to talk. She was my boss's boss and I didn't interact with her that often, but she knew my work and she knew who I was. She also could see I was struggling, though I did my best to hide it. This conversation happened about 10 or 11 years ago, but I never forgot what she said. She told me I shouldn't be afraid to go to my boss--or any other boss I had in the future--and just ask him/her how I'm doing once every three months. The bottom line: Your boss wants you to succeed. When you do good, they look good. If there's a problem, they will tell you, because they want you to fix it so they can look good. If there's not a problem, they will also tell you, because they don't want to mess up a good thing.

As I said at the beginning, you are not alone. Like I had to, you just have to remind yourself of that fact more than others. No one is expecting you to be the "perfect" developer and neither should you. Good enough is actually good enough.

1
  • Great answer. I would just add: "get more feedback!" and "exchange more with other software devs" (if not at work, at least outside, meetups, internet, etc.). Lack of feedback was the reason of so much self-doubt for me. Nov 23, 2021 at 18:30
1

I can't talk of Germany, but I have worked for a few months in Zürich and a couple of colleagues were from Germany - all degreed, most studying further, some doctorates. A bit intimidating, even when I had a degree and some further qualifications myself.

My first employer was a company taking further development of their employees seriously (along with applying other more serious/theoretical parts of Software Engineering). I may have gotten the false impression that that was the norm in the industry, sadly the company fell on hard times and subsequent employers were mostly glorified coding shops that hired whatever experience they wanted (often whatever is new and flashy out of training) and left further development to each one's own responsibility. OR, more often, they were not interested in new tech much and stuck with whatever was used to develop the system initially, and are now only trying to maintain the mess. And none of the two types had much use for any of the more abstract parts (the majority) of what was taught during a Computer Science degree, however useful it might have been to their problems.

As you say, not easy to predict what will be sexy next year, and as we get older, life happens and gets in the way of spending each night studying. Or, you could stick with an old employer and support legacy software, that was modern 5 years ago, and stay there until retirement, because you will have even less chance to learn new things. And unfortunately one can't get experience from books and courses with "hello world/shopping cart" examples, experience only comes from using stuff in the real world...

I'm a few years older than you and I think that your fears may become a self-fulfilling prophecy in a few years... Unfortunately this is not a solution to your question. So let's explore options to avoid that.

The basic options mentioned on the internet for a SW dev career often involve the following:

  1. Make and save as much money as possible and retire early (you should have started 10-15 years ago)
  2. Move into management as soon as possible (but many SW devs don't enjoy manipulating people)
  3. Some people also choose to move into Business Analysis, Project Management (SCRUM masters etc.). Architecture, Systems Analysis etc. require even more expert skills.
  4. Become independent/self-employed (which still requires learning and/or managing your own employees)
  5. Change to another career (but you love coding)

So let's think of some other possibilities:

  1. IF your employer (or one at which you can get employed in the near future) is stable, and takes care of their own future planning and career development of their employees, and are a long-term option for you, it might be a good bet to initiate some fruitful discussions with management. Even if they won't train you, they could give you a hint at the directions they are going in, and you can use that to guide your self-learning to stay relevant to their needs. (I think such a company is as likely to exist as a unicorn, but I hope to be mistaken.)
  2. IF you have money saved or other ways to sustain yourself, you can also decide to take a (self-funded) "sabbatical" of a few months or even years, and use that time to study and/or get some project going by which you can become independent if it starts to generate a cash flow. (Difficult especially if you have a family, but if you do, cut expenses to the bone (housing, transport, luxuries) and embrace the simple life (but don't neglect safety nets like medical and disability insurance and retirement funding).)
  3. You could also see if you could find a part-time job, which would leave more time for learning (not unicorns, but close.) Other ways of opening up more time would include minimizing commuting time (or work from home), not working more hours than the strictly required ones, especially avoiding unpaid overtime, and minimizing time wasters like television.
  4. Try your hand at freelancing or consulting (which is difficult, but still requires learning). In fact, I see on a number (specifically German) agency sites and FB groups that remote working is on the rise, and consequently a number of people life in cheaper locations (even overseas). You will have some more flexibility with time.
  5. For your further career, it might be helpful to explore what makes you unique, what traits of yours will benefit an employer or society at large, etc. I personally found online resources like 16personalities and the Gallup StrengthsFinder (please websearch) useful as they articulated things that I believed about myself without knowing that I believed them. Obviously lots of sites and self-help books are available, and all (including the mentioned ones) should be approached with a healthy dose of skepticism.
  6. I'm told that embedded systems programming is fairly unchanging in comparison to the webapp/enterprise world. But that's hearsay.

I want to conclude with a few more "soft" issues. Impostor syndrome and anxiety have been mentioned. But also read up on Adult ADHD (and perhaps Aspergers and high functioning Autism). Some SW devs struggle with what looks very much like this issue/spectrum, and are never diagnosed, and this sometimes manifests as impostor syndrome and/or anxiety, or in other ways. If you feel that the description you read sounds familiar to you, know there are things you can apply to your life to get better outcomes and cope with your career.

You are also at a age where health starts to become an issue. If you look after your body well, it will look after your mind. I sometimes fear that that requires becoming a real health nut :-) So eat (and drink) as healthy as you can, get healthy sleep (before midnight), exercise (weight bearing exercise, crossfit, weight lifting, etc. - will improve flagging testosterone levels, which will improve concentration, energy and positivity). Try to also have an enjoyable hobby (time permitting...). Quit unhealthy habits and pastimes. Work on keeping relationships healthy and build new ones. Rest, recharge and do enjoyable things outside of work.

2
  • If I understand you correctly: I should catch up on studies / cs degree? Because most of the career options you mentioned require at least a cs degree. For example Architect, Management and so on. It Should be difficult to get into these positions without a degree Freelancing: I am the play it save guy. Which means going freelancing might not be the right option. Currently, I am already "part-time PO" for an in house product. Further: I've already stopped smoking and also doing running 3 days a week, one hour each session and meditate each evening. So this part should be okay. Jan 10, 2021 at 12:11
  • Hi @MichaelSchulz, I tried to be a bit more general than just your case, but I guess all those options do have trade-offs, none are ideal to step into without any effort... That's the real life... Not saying you should study, you should check if you really want to and if it will open enough doors to make it worthwhile - but if you do, you might get some credits for what you know already, or be able to speed it up somewhat. I personally feel a degree is not very useful further than having the paper to show...
    – frIT
    Jan 11, 2021 at 19:56
0

You seem to have a great fear of what would happen if you were to lose your current position.

In those cases I would try to imagine "what is the worse that could happen". If you are prepared for the worse, then all the other (and more probable) outcomes should not be as scary to you.

I don't know about the other duties you hold, apart from your professional ones. My impression is that the social fabric you live in, would make sure that you and any relative could still access a level of happiness, whatever unfortunate events you should meet.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .