What happened to Imposter Syndrome?
Definition: Imposter Syndrome is when people who are relatively capable in a skill have doubts over their ability to do that skill.
An interesting trend that I have observed is now that Large Language Models (LLMs) / Artificial Intelligence (AI) have become, so effective at coding my expectation would've been more people dealing with imposter syndrome, but anecdotally I have not found that to be the case.
Context
The number one contributor of imposter syndrome is lack of confidence. The stark examples of imposter syndrome are when you observe people who seem to be experts in a field, and yet they believe (not as a form of humility) that they don't really understand much of the field.
The other main contributor here is that as you learn about a field or a skill you increase awareness of all areas of the skill that you hadn't considered or were even aware of as a beginner and therefore have that the sense that you only know a tiny portion of the field / skill.
Related to this point people normally don't track their progress very effectively. If I am learning something I am focused on the act of learning, and not documenting my learning process, and achievements along the way. This means it's hard to look back, and appreciate how far you've come. Therefore, you can more easily discount the past work, and lament over how little you have yet to learn / achieve.
Software Engineering / Programming is a field that is well suited to experiencing imposter syndrome.
- The field is vast, and the goal posts can keep moving.
- Perhaps you can build a web application, but could you:
- Build a frontend framework
- A Programming language
- A database
- An Operating System
- An 8-bit CPU with breadboards
- Perhaps you can build a web application, but could you:
Of course the expectation is not to build every component, but because things are relatively accessible with a computer there can be more of a tendency to have the expectation that you should understand how these things work.
- Historically a lot of the work was achieved via Googling / adapting existing patterns in the codebase
Prior to LLMs being able to generate code the way I did software engineering was understand how an existing thing was done, and reapply those patterns to extend functionality.
Along the way if there was something I didn't know how to do then I would break the problem down, and google the question. In the case of encountering an error you could often Google it, and find a Stack Overflow post that would answer your question.
Even though each of these pieces does require work, because your work is always building on work around you it can make people feel that they don't truly know the subject matter.
- Programmers come from a variety of different backgrounds
Since programming is verifiable I think it's easier to learn than other subjects. Practically speaking there are a lot of self taught Software Engineers, and engineers who went to bootcamp.
Having different pathways to learn the skill can mean that there are gaps in each persons background / education which can directly lead to imposter syndrome.
Why hasn't there been mass discourse over engineers feeling like imposters due to AI?
The way I see it is that Software Engineering was a field where very frequently you would hear people talk about Imposter Syndrome, almost to the point where you might have to mention experiencing imposter syndrome yourself to fit in.
Then we get a tool that can definitely out program humans at least in targeted domains, and suddenly engineers are talking about what maters is taste.
Is imposter syndrome experienced exclusively when compared to humans?
Currently humanity has a shared understanding that calculators can outperform humans easily. However, I don't think most people have a sense of disappointment around calculators being able to outperform them.
Conversely when Lee Sedol one of the world's best Go players was defeated by Alpha Go (an AI) he retired shortly thereafter and his retirement quote was "Even if I become the number one, there is an entity that cannot be defeated.".
I don't know if Lee Sedol was experiencing imposter syndrome itself, but quitting a game you dedicated your life to seems like an extreme reaction. The difference between doing arithmetic and playing Go is that calculations are often a tool to do other things, where Go is the goal. Since software engineering is usually done to solve a problem it seems less likely that people will quit software engineering. Additionally, similar to calculators AI can be utilized by people to write code, and more importantly solve problems.
Do software developers not experience imposter syndrome because non developers can't harness AI coding as effectively?
A common joke people made when AI coding was becoming more viable is that someone could develop an app, and you could access it on localhost:8080. The point here is that there are many steps that you need to take to getting a website up and running. The application may have been made, and might run on your computer, but you need to run it on a server, expose its ip address, buy a domain name etc.
Even if you managed to get the application up and running you would still need to know how to roll out changes, and to know some security best practices. Although it is true that a software developer has more familiarity with these concepts than a non software developer as the LLMs continue to improve they can solve these problems for you, and inform you about the process. Additionally, there are companies / services that help make this part of the software process easier.
It is also true at least in larger companies that these roles are spread out across teams / people, so there isn't a guarantee that a software developer will be familiar with all these processes.
Even though the barrier to entry on creating software has significantly decreased I don't think this has impacted the feeling of imposter syndrome.For one AI generated code from non developers doesn't seem to have a high adoption. The barrier to entry still seems high, non software developers might not be thinking in terms of software problems, and it might not be where they want to spend their free time.
Even if there are a lot of new entrants to software development from inexperienced people there is not a lot of visibility that this is happening (as far as I can tell), so it's harder to feel insecure about your skills if you don't know they are being replicated / encroached.
Has AI enabled developers to remove themselves from the drudgery and focus on the systems?
A common refrain of increased automation is that it enables humans to focus more on analyzing the problem. To elaborate a common progression in an engineering career ladder is becoming a software architect. Instead of building the individual parts of the system you are envisioning how everything pieces together.
A similar thought for software development is that coding isn't the hard part. Instead the hard parts can be prioritization, are you solving the most important problem? Once a problem is identified reaching consensus on a shared solution, and finally laying out a plan to achieve your goals. The plan isn't the code itself, but it should be tied to the underlying system.
Even though software development is achieved through levels of abstraction that is the idea that we don't need to understand the computer hardware, or even the memory management to build systems I think you can't remove all of the detailed work without losing the benefits you gain from it. One issue that people have been citing with the rise of AI generated code is comprehension debt. The less involvement you have in creating your code the less you are going to understand it. AI generated code has moved us from being the authors of our code to reviewers of code, and if the code is doing what you want it to maybe you don't need to read it all. If the code is being generated at a much faster rate than you can read it then the incentives are also more aligned with having a less thorough review.
Is imposter syndrome the right question to be focused on?
Ultimately AI generated code has caused more disruptions. In the grand scheme of concerns imposter syndrome is lower on the list.
Now that AI has reduced the friction of coding you can achieve way more. AI has research capabilities so you can set it to work at the end of the day even when you aren't working. AI can be integrated into your system, and allows you to solve problems that weren't tractable or feasible before.
AI is improving at an increasing rate. In the short term it makes sense to spend your energy on what it can enable. Looking into the medium term you wonder what the economic impact is. These are bigger problems than believing you aren't good enough at something.
Nonetheless, on the spectrum of this is a calculator to I am going to quit my job I expected AI generated code to have more of an impact in the realm of imposter syndrome. Personally, it's something that I am continue to reckon with as the industry continues to change.