Expert Interviews

6 Things School/Bootcamps Can’t Teach You About Being a Programmer

When you’re starting out as a programmer, you put a lot of emphasis on learning the technical side of your chosen language, framework, or stack. But what happens when you graduate from school, a bootcamp, or your own self-taught curriculum? Experienced and newbie programmers share what they learned as a developer that school and bootcamps didn’t prepare them for.

1. The First Language/Tool You Learn Won’t be Your Last

“When you’ve worked in the tech industry for as long as I have, you realize your tech stack isn’t as important as it seemed to be when you started out. Once you know procedural programming, you’ll quickly pick up any procedural language. Once you’re proficient in one object-oriented language, others are very much alike.”—Marjan Venema

“Although I’ve done mostly Java for my entire career, there’s a ton of value in learning other languages, frameworks, and tools. In fact, I spent time working with many other languages like C++, C#, Kotlin, Groovy, and Scala. I realized that one of the most important skills you’ll develop over your career in programming involves being able to pick up new languages and frameworks easily.”—Sylvia Fronczak

“During my academic life, I was focused mainly on one programming language and very few frameworks and technologies. At my first job, I had a chance to work on Python, Hadoop, and Blockchain. I realized that you can build something amazing when you integrate different technologies.”—Omkar Hiremath

2. Struggling With a Specific Language/Tool Doesn’t Mean You’re a Bad Programmer

“I started with Python and, for a few years, I was stuck. I was only able to create simple scripts because learning Python was going very slowly for me. That made me think that maybe I’m just not good enough to be a programmer. I was afraid that I would just be wasting my time trying to learn JavaScript. But this was the best decision I made. I just didn’t like Python enough to learn it. So, here’s a hint for you: if it seems like learning programming is not for you, before you abandon the idea, try a different language first.”—Dawid Ziolkowski

“One mistake I made when getting started was not setting aside time to decide which language, stack, or framework I needed to learn. Since most of my friends were learning JavaScript, I tagged along. After some time, I began to get familiar with Rust, a multiparadigm language. Although I’m still learning Rust at the moment, I think this should have been what I started with.”—Ukpai Ugochi

3. Real-World Coding Is Different From Coursework

“There’s a difference between coding an app for a personal or educational project and coding something that’s actually being used in the real world. In real-world software, there are more tools used to build, deploy, and monitor the software that you have to be familiar with. The code is more complex, and there’s more of it to understand.”—Andrew Bryant

“In most of the formal trainings I took, everything was aimed at solving technical issues. Some were more complex than others, but in general terms, the problems were very well defined. When I first started facing actual users of the software I was supposed to produce, I realized that the gap was huge between their desires and my ability to translate them into working code. And that doesn’t mean that I didn’t know how to write the code that would solve their problems. The problem was that I didn’t know what that code should be.”—Mauro Chojrin

“In your programming career, you’ll probably often face a situation where, for a given task, you’ll have a few different ways to program it. In other words, to achieve the same result, you’ll have more than one way to write your code. And choosing which way is the most efficient one can sometimes be more difficult than the actual coding. Is this solution secure? Is it efficient performance-wise? Does it follow best practices standards? You’ll need answers for all these questions, and you won’t find them in any learning materials since there are no general answers. It all depends on the use case.”—Dawid Ziolkowski

4. The Amount of Code You Write Isn’t the Best Measure of Your Contributions

“If you’re starting out as a developer, your role is to find a solution to the problem that’s laid in front of you. This is straightforward, and it’s a fairly easy thing to do for most people starting out on this career path. But as you progress to higher rungs on that career ladder, you need to reassess the internal metrics that you use to determine whether you’re doing a good job. If you’re still measuring your value by the amount of code you’re pushing, it won’t tally how you’re actually spending your time.”—John Pereira

“Coding the software is a tiny part of what goes into making it, and a lot has to go right for that to even happen. It isn’t like the personal projects where you just think something up and make it. Selling the software and getting requirements from the people who use it is a huge part of executing a software project. There are many stakeholders who have different and, at times, conflicting requirements in a real-world software project. But you have to integrate all those requirements harmoniously.”—Andrew Bryant

5. Your Relationships With Your Team—and Users—Will Determine Your Success

“No university or course explains the relationships with team members and managers and your relationship with the user. These relationships are as important in a project as the project itself. In fact, it’s what determines the success or failure of the project. Even when you team up with other students in school, it will never be like it is in real life.”—Gabriel Aizcorbe

“One of the basic truths about programming is that it’s more about people than technology. To be an effective programmer, you need domain knowledge. Understanding a specific domain makes you wildly more productive within it, as you’ll know the terms and how processes are expected to work.”—Juho Vepsäläinen

6. Your First Job Isn’t the End of Your Learning Journey—It’s the Beginning

“Learning is a never-ending process. If you think that there’s no personal growth for you, you have to reconsider what you are doing.”—Omkar Hiremath

“I think my biggest takeaway from my first programming job was that everyone’s learning stuff as they go along. There’s no magical point where you say, ‘I have learned what I need to do X.’ It’s an evolving field, and you need to keep learning every day.”—John Pereira

“You’re not expected to know every detail about every aspect of programming. In fact, it’s impossible and that’s OK. You can pick one or a handful of subjects to be an expert in. In fact, I’d say it’s better. Play your cards right, and it will make you more valuable in the market.”—Peter Morlion

These quotes were syndicated from interviews in Make Me a Programmer’s Lessons From a Veteran series. Reach out if you’d like to be interviewed, too.