The hidden pitfalls of software engineering apprenticeship

Hello there!

During my four years of mentorship work, I’ve seen many people taking on the challenge of becoming a developer. Some of them succeeded. Some of them are still trying. Some of them just gave up. The process which all of them have to go through is tough: instead of just learning how to program computers, they need to learn lots of new skills that aren’t taught in schools, nor are taught in life. When you take that path, you gotta learn to deal with the frustrations of coding mistakes, the anxiety caused by uncertainties of the career shift, the comparison you do to yourself against your peers who seem to be doing better than you. And you also gotta learn to write computer programs.

Learn software development is hard by itself, but in my experience, it becomes even harder because these people, candidates to the next workforce of the IT industry, are not used to deal with lots of emotional issues that come with a career in IT. Work with computers means you’ll make mistakes all the time, probably every single hour of your day, every single day, every single week, month, and year. And, if you’re not prepared for it, you’ll feel the emotional burden of learning this young science of mistake-making.

Computers make you humble. You’ll not believe that you can do things right on the first try anymore. In fact, when things go well on the first try, you’ll believe something is so wrong that you can’t even see where you messed up. You’ll not believe in your own potential anymore, and we have a name for this phenomenon: it’s the impostor syndrome, and it sucks!

I also know it doesn’t need to be this way. Since making mistakes is a common thing in Computer Science, we must accept and embrace it. We must make it part of our day, our work, our routine, and our lives. We must learn to deal and live with it. And that’s exactly what professional software engineers do: they deal with mistakes in a way that’s different than the rest of society. These techniques are also quite simple, easy to apply - and most importantly, they are learnable. And once you learn it, you’ll realize they are applicable and useful to many other areas of your life too.

Whether you’re learning your first profession or you’re shifting your career, the endeavor might be challenging. Not because developing software is a complex activity, but because you might not have these satellite skills - and if you don’t, you’ll get sabotaged by your own emotions. So take these concerns into consideration. Respect your own time and learning process, abandon your perfectionism and embrace your mistakes. Face each one of them as opportunities to learn, and while you’re doing it, learn more about computers (spoiler: they aren’t difficult to operate and program at all).

My name is Joel Jucá, I’m a self-taught software engineer and an educator in Web Development and Computer Science. In this space, I intend to write about software engineering - the activity and profession, sharing opinions, suggestions, and advice for software engineering students and aspiring professionals.