Iâve always loved airplanes. This almost certainly stems from being the son of a pilot, and itâs an interest that has stayed with me my whole life. From my dad taking a 5-year old Jakob to the airport to watch the airplanes, all the way to me spending hundreds of hours of my free time researching, creating and practicing an hour-long conference talk on things us developers should learn from the aviation industry.
So naturally, being a pilot was high on my career wish list. It actually wasnât until high school that it got bumped off the #1 spot. After getting to jump-seat in the cockpit with my dad for dozens of flights and logging an unhealthy number of hours in flight sim I came to the conclusion that, while I still found planes incredibly cool, a career choice as a pilot would probably be too repetitive for the type of brain I have.
Iâm the sort of person who gets completely obsessed with things, whether itâs a hobby project, a video game Iâve gotten into, or a piece of music (ask me how many hours I spent listening to Rachmaninovâs 3rd piano concerto in 2024). After a while, my obsession dies down somewhat, my attention craves something new, and the cycle starts over again.
While pilots certainly do face new challenges at work, with different combinations of technical, environmental and human factors they have to contend with, they fundamentally do the same thing pretty much every day. Their procedures are, by design and for the sake of safety, incredibly standardized. As I was charting my path in life in my late teens, I added up these two factors and concluded that while tempting, a career as a pilot probably wasnât for me.
The privilege of constant stupidity
A career as a software engineer, on the other hand, represents an infinite supply of new responsibilities and concepts to learn. Virtually every industry in the world needs IT, and as software engineers we potentially need to understand everything from product strategy and team management to complex mathematics and the inner, physical workings of a processor. That is to say, the field possesses both incredible width and depth.
My experience is that, as long as youâre willing to step outside your comfort zone, a programming job can act as an infinite supply of things to learn. Granted, Iâm still far from being at the end of my career, but in talking to colleagues who have been doing this for decades, I donât get the impression that theyâve run out of things to explore either. In other words, Iâm pretty confident I will feel the same way about this specific thing when Iâm old, gray, and tired of getting styled on by 20-something hotshot programmers. Thatâs a big reason why I chose computer science in university, why I settled on a career as a software engineer, and why I havenât looked back (or rather, up) ever since.
Because being in a field where itâs completely impossible to run out of things to learn is a huge privilege, and I know that itâs something I sometimes take for granted. There are even some times where I, in the back of my mind, curse how wide and deep our field goes. Because it comes pre-packaged with what sometimes feels like an infinitely long downhill âDunning-Kruger graphâ.

Before you lambast me: Yes, this graph is a spin-off of the meme variant of the Dunning-Kruger effect graph. Thatâs on purpose. The graph describing the actual effect looks like this, and makes for a much less potent metaphor.
This is all to say that as long as you havenât purposefully walled yourself off in a garden of comfort, youâre gonna have to get used to feeling stupid as a developer. There are almost always going to be deeper levels to what youâre doing, which you wonât immediately understand, and I would be lying if I said it never affects my confidence. My view is that this is just something we have to come to terms with; the price we pay for always having an endless supply of things to learn.
I think that this effect hits junior developers the hardest. The combination of neither having years of built-up confidence nor a decent level of knowledge of a wide array of topics is a perfect storm for letting yourself be negatively affected by this feeling. When it inevitably arrives, I think people mostly react in two different ways:
#1: That fucking meme with the dog
They bang their head against the difficult concept until they reach a certain, critical point, and proceed to give up. The giving-up can come in all shapes and sizes; trawling the internet for a prefab solution while forgoing understanding (anyone remember Stack Overflow?), mindless LLM prompting, or passing the task off to someone else. The way that it happens doesnât really matter, theyâre all forms of capitulation to imposter syndromeâdeclarations of intellectual bankruptcy. This sort of self-pity is understandable, but entirely self-sabotaging. It feeds on lack of confidence, and lowers the barrier to further self-pity and capitulation.
This is made worse when their peers reassure them that nobody really knows what theyâre doing. Because in fact, a lot of people do actually know what theyâre doing. Understanding difficult things is possible. Mastery is possible. Ruby on Rails-inventor and chronic strong-opinion-haver David Heinemeier Hansson goes on an excellent rant about this in an episode of the TopShelf podcast, as he shares his infuriation with âthat fucking meme with the dogâ (effectively the mascot for this type of behavior). Every time somebody who does in fact know what theyâre doing posts that fucking meme, they make this sort of reaction to resistance more acceptable.

If you believe that most of your peers donât know their shit, why would you expect better of yourself? Why would you embark on the journey towards genuine understanding when itâs filled with self-doubt you donât otherwise need to face?
#2: The uncomfortable path of unstupification
The alternative is to get fucking good. I know that sounds emotionally constipated enough to be the title of a best-selling self-help book youâd find in an airport book store, but thatâs really all there is to it. You can accept that it will continue to make you feel stupid, but press on anyways, as you rage against the dying of your intellectual integrity. There are different ways of doing this, of course, ranging from the quite inefficient âsmash your head against the problem until you get itâ to the more reasonable âask someone smart to explain itâ, but the common denominator is that they all require you to face the fact that you donât get it. Not only do you have to face it, you probably have to live with it hanging over your shoulder for a good while, so youâd best get to know each other properly.
Now, I am by no means saying that people fall into only one of these two categories. Iâve spent plenty of time in the first one, and still do from time to time. But when I notice it happening I try to remind myself that itâs just more fun to be competent. With time, this has made me much more comfortable with not knowing, and I notice that I am significantly more likely these days to ask a coworker a âstupidâ question about something Iâm supposed to know. Iâve also noticed that the people around me who ask the highest number of âstupid questionsâ are, without exception, the most skilled developers I work with (more on that later).
The root of these reflections
There is a specific reason for why Iâve been thinking about this recently: Around three months ago I changed jobs and started to work as a developer in an airline (seems like I got the best of both worlds, eh?). Iâd been in the same company for three years, even staying with the same team the entire time. There, I had the privilege of working with some of the smartest, most knowledgable people Iâve ever met. Having now parted ways with them (at least professionally), Iâve found myself thinking about how I can make sure that I follow a path similar to theirs, as I get older and more experienced.
I had many colleagues I looked up to in that job, but I want to highlight two of them, Robin and Karl Yngve (they both have fantastic blogs, which you should check out by clicking on their hyperlinked names). Robin is an experienced and extremely knowledgable developer, with a patience and pedagogic ability Iâve yet to see anyone match. Karl Yngve, interestingly, only has a few more months of experience as a professional developer than I do, but has plenty of programming experience from his decade-long career as a mathematician and researcher.
Despite having very different backgrounds, they both share a superpower: They are, or at least act as if they are, fearless in the face of situations that threaten to expose holes in their knowledge. Itâs not a case of them knowing âeverythingââin fact, they are probably the two developers Iâve worked with who have been the most open about the things they donât know. Rather, they seem to always be completely convinced that they can learn the stuff they need in order to complete the task at hand. Itâs not hubris, but rather a sort of âintellectual confidenceâ.
Because of this attitude they are exposed to more novel problems than the people around them, and as a consequence, I think they build knowledge thatâs both wider, and deeper than otherwise. As you might imagine, this is a bit of a chicken-or-egg situation. The knowledge they build in this way, and their success in tackling new problems, makes them more likely to take on yet more new challenges. Itâs a positive feedback loop that can only start with a leap of faith. As cheesy as it sounds, it requires a bet on oneself.
As previously mentioned, these reflections are fairly new to me. Itâs only recently, due to the job change, that Iâve really been actively thinking about this. With that said, I think Iâve unconsciously tried to employ this mindset for a while, at least in certain situations. The best example is probably conference speaking, a field that was completely new to me just one and a half years ago, where I now feel like Iâve built a fair degree of both confidence and competence.
Straight up not a good time
Thatâs not to say that I donât also have experience with the opposite. During most of my five-year period as a student, I was pretty insecure about my skills as a programmer and engineer. Itâs not that my grades were terribleâI did okay in most subjectsâbut I struggled with actually understanding the curriculum. I felt no sense of mastery. On the surface level, the issue was pretty clear: I wasnât dedicating nearly enough time to going to lectures, doing coursework and preparing for exams.
Looking at how I spent my days instead (largely in front of my computer, often playing video games) itâs easy to conclude that I just didnât bother doing the work, that I didnât have the discipline I needed at the time. Thatâs partially correct, but I think the barrier I struggled with wasnât motivation, laziness or interest for my courses, but rather the fact that I was deeply uncomfortable with how little I understood whenever I sat down to work on the obligatory coursework.
This was at its worst during exam season. Almost without exception, I would put off studying until the day before the exam. Thatâs the point where my fear of showing up at the exam with zero knowledge finally surpassed my fear of my own incompetence, and forced me to face the latter. Itâs hard to overstate how much this cycle sucked, and I feel lucky that it didnât wreck my grades (or psyche) as much as it could (and probably should) have. Worse yet, I wasâeven at the timeâfully aware that this problem was entirely self-imposed, and it felt downright embarrassing to struggle with it. As a result, I didnât talk about it with anyone. In hindsight, that was probably the worst thing I could do. In sharing drafts of this blog post, Iâve had people I know to be phenomenally skilled share with me that theyâve experienced the exact same cycle. Had I known as a student that I wasnât the only one struggling with this, it would have probably been much easier to face.
It was only towards the end of my studies, as I was working on my masterâs degree, that it got somewhat better. In the last semesters of my computer science program, there was a deliberate shift towards group project-based courses, away from more traditional exam-based ones. These had few or no lectures, and usually no exam. They consisted entirely of your group being assigned a problem at the start of the semester, which you were expected to work on together for the next few months. Back in my day this ranged from writing database adapters and multiplayer android games to development of actual applications for real clients.
I would assume that the words âgroup projectâ has some shivers going down some spines, but for me they were very, very helpful. Partially because of the obvious effects, such as having access to people I could learn from. I was quite shy back in those days (I still can be at times, but Iâm much better at managing it now), and hadnât made many friends during my first years of university. Pretty much everyone I still keep in contact with from those days are ones I was randomly assigned into groups with. But more importantly for this story, being part of a group made it so I suddenly had other people depend on me. Turns out thatâs a potent drug for my brain in particular. More than anything else, I was driven by not wanting to disappoint. That fear was stronger than the aforementioned fear of facing my own incompetence.
A new hope
This was how I finally managed to short-circuit the negative spiral I had been trapped in for most of my five years in university. Having an external motivator (or fear, depending on how you look at it) helped me get over the âhump of discomfortâ, and started a positive feedback loop. With the help of knowledgable classmates, I got experience with technology I hadnât tried before (React and TypeScript, for example). While this didnât exactly provide any feelings of mastery, it became an important foundation for later.
Fast-forward a year or so, and Iâm on the hunt for my first job. Compared to my peers, I was quite late, only starting the process of sending applications around half a year before graduation.
Also unlike my peers, I didnât really know anything about any of the companies that were hiring developers. I hadnât done any internships, didnât have any connections in the industry, and had been very bad at attending career fairs and the like. I was therefore completely at the mercy of job listings. I sent out a handful of applications, effectively at random, and went to every interview I was invited to.
Iâm pretty sure that my actual programming skills at this point were mediocre at absolute best, but luckily, Iâve always been good at explaining my thoughts and discussing theory (Iâm pretty sure this stems from my tutoring experienceâI tutored in math and physics as a side gig during my studies). This ability carried me through my interviews, and at the end of it all I had quite a few offers to choose from.
Even with my complete lack of knowledge about the Norwegian IT market, it was clear that one of the companies offering me a job was not like the others. It was a fairly new, fast-growing consultancy firm of around 30 people, which practiced a radical openness and hunger for learning that Iâm yet to see matched anywhere else. The company has changed quite a bit as it has grown, and neither was nor is perfect (maybe Iâll write about that someday), but it was exactly the sort of place I needed. Looking back, I think it was pretty much the perfect first job for me, and considering the fact that I knew nothing about the places I was applying to, itâs fair to say that I lucked out.
The company was big enough that I had a bunch of knowledgable colleagues who were eager to help, but small enough that there were a lot of opportunities to take on responsibility, even for a fresh recruit. I was encouraged to involve myself in the running of the company, and soon found myself joining, and eventually also leading interviews of new developers. At the same time I was getting more and more comfortable taking on challenges on the technical side of things, and quickly got responsibility there too; responsibility which I believe I mostly lived up to.
I was encouraged to push the boundaries of my comfort zone, but always had the support I needed around me. This was what finally, decisively, moved me from a negative feedback loop to a positive one. I built up the confidence to take on more and more challenges, and with it, built more and more confidence.
A note on discipline
While itâs good to understand the importance of being competent, I believe a second ingredient is needed to get the most out of the positive feedback loop Iâve described: Discipline. Specifically, the discipline to actually apply this philosophy by taking the time to learn new concepts you come across. In the short term, this will slow you down, and it will require you to be comfortable with facing your lack of knowledge all of the time, rather than just some of the time.
This is something Karl Yngve, the previously mentioned scientist-turned-programmer, is excellent at. It really seems like itâs second nature to him, and I formally implore him to write a post on his own blog explaining how that came to be.
Iâm still not great at this. More often than I would like, I take the shortcut of throwing stuff at the wall or going to an LLM, without really understanding all the precursors required to get there, and thus leave a hole in my knowledge.
In a few years I can hopefully publish a post here talking about how I finally managed to build the discipline required to extract closer to 100% of the available learning from my day-to-day encounters with stuff I donât know. But for now, we will have to leave it here. Maybe thatâs a good thing, this post is already twice as long as I planned.
A note on chainsaws
This topic is really big enough for a blog post of its own, but I feel like I have to include a thought on how artificial intelligence fits into all of this. My number one fear regarding AI developer tools is how it affects the growth of students and juniors, and it has everything to do with the things Iâve described in this blog post.
If used thoughtfully, there is no doubt in my mind that it can be a tool for greater learning, but I also know that if the tools we have to today had been available when I was struggling with something in university, I would have had the worldâs best super-crutch to lean on. I think thereâs a very real chance that it wouldâve taken me way longer to escape the âI donât know what Iâm doing and Iâm afraid to find outâ-spiral, and I worry for todayâs students. Whatâs gonna make the 19-year-old whoâs insecure about their abilities face that insecurity head-on, when there is an alternative right there? I genuinely donât know what the solution to this is, and I feel fortunate that I was forced to face this at a time when the most efficient way of avoiding using my brain was trawling Stack Overflow. In short? I think the newer generations are probably fucked.
Take heed, young padawan
We have the privilege of working in a field where there is an infinitely deep pool of knowledge to drink from. It has its disadvantages, but I sure as hell wouldnât be without it. So whenever you feel like youâre sinking, remember the following:
Itâs okay to be clueless, to not know, and to not understand. Every single person who is good at anything, including all of the people you look up to, started out that way. Not understanding the things you work with is uncomfortable, and itâs supposed to be. The only sustainable way to mend that feeling of discomfort is to accept the fact that you donât understand, and decide to do something about it. Donât resign yourself to a life of not getting it. You should do better, and you can do better.
And if it takes a while to stick, thatâs okay. The message above is as much of a reminder to my future self as it is advice to anyone else.