Expert beginner in software engineering.
Today I read two very interesting articles. It’s written in two parts: Part 1 and Part 2. Here is my take from the articles.
‘Expert beginner’ is a term for those who think they are competent when they are not. They believe that what they know is the highest level of knowledge but they do not see enough of the big picture to realize that they aren’t actually experts. Looking at my past self, I certainly have done this before. I thought I knew ‘web development’ after only making some basic CRUD applications, thinking every web application is just a somewhat little extension of CRUD. Little did I know, I was very naive and wrong. I wrote this article not to discourage inspiring developers but to let them know what they are missing if they think they know everything already and encourage them to keep learning.
First of all, making real-world applications are not as simple as making toy projects, especially if you are following online tutorials on youtube. Tutorials are usually simplified to make it easier for you to follow and most of the time, those tutorials’ purpose is just to get you off the ground and introduce you to the new concept so that you are ready to learn more advanced topics. Therefore, if you have only done tutorials, you have only scratched the surface of the topic.
Second, if you have only worked on side projects or toy projects, code maintainability is often neglected. How many times have you refactored your code or added some new features to your project after your project is “done”? While working on a production application, you’ll come across so many cases where you need to refactor your code for maintainability or add new features on top of existing code without breaking other already existing features. Keeping the code clean and tidy is also part of your job but it’s hard to replicate in tutorial-level applications.
Last but not least, working in a team is a whole different story to working alone. When you work in a team, you need to write code in a way that’s easy for your reviewer to understand and follow what you are trying to do. You shouldn’t name your variables like x1, x2 nor should you nest 7 if-statements that only make sense to you.
With many coding bootcamps and online resources available out there, it is a lot easier to learn to code. But the fact that learning to code is now easier doesn’t necessarily mean that you can learn all of it in 6 months, in a year or even in 10 years! There are always things to learn. So don’t get big-headed. Stay humble and always try to learn!