Fahim ul Haq

Ex-Microsoft, Ex-Facebook. Co-founder at Educative.io

7 Hard Truths for New Software Developers

If you’re coming out of your education (whether that is self taught, a university degree, or bootcamp), it’s important to know that your expectations for your career in the tech workforce may not align with actual industry practice and culture.
Let’s break down 7 “hard truths” about a career in tech and then offer some action-oriented advice to help you succeed. One way to think about this is that these are all the things I wish someone had told me when I was getting started in my career.
Here is what you can actually expect in the tech industry and how to prepare yourself.
A quick note: I do recognize this list is subjective. Your mileage may vary; every developer has a different experience. I don’t want to give the impression that this is the only set of truths out there.

1. You don't actually know everything

You may be highly educated and capable, but you do not know everything about your industry. In fact, it may be better to assume you know almost nothing.
  1. First of all, the industry is always changing, meaning that you always need to work to stay updated.
  2. Secondly, your education is probably biased. Professors cannot possibly teach you everything. Even the programming languages, tools and theories you have mastered are flavored by personal approaches or experiences.
  3. Thirdly, you don’t yet know best practices! People who have been programming for years have developed tricks, patterns, and habits that make them efficient and reliable.
So, yes, you are incredibly educated and capable, but no, you don’t have it all figured out. What does this mean for you?
You need to remain invested in your education. Your degree or bootcamp was just the start. And remember that education extends beyond pure hard skills or courses. You can learn through forums, meetups, blog posts, and online courses. Be an active member on online discussion boards to hear what others are learning and doing. Read articles. Write articles.
On top of all this, a hard reality of the tech industry is that all current technology will be redundant soon. There is a built-in shelf life to your knowledge as a programmer. Just five years ago, we were using frameworks that now seem archaic.
University does not necessarily prepare developers for the competitive nature of tech knowledge. Many new developers express anxiety going into the workforce because they aren’t prepared for the amount of work you need to do to stay relevant in the industry. Having a degree does not mean you are done learning, and it certainly does not mean you are more prepared than anyone around you. A CS degree no longer equates to a successful CS career.

2. You will not get as much help as you need

In college, you likely had a network of friends or were assigned an advisor to help and guide you from day one. This is not the case in the workforce. It falls on your shoulders to get help, be that from an advisor or mentor. Some managers may take on an advising role, but you will likely need to find someone you trust, and more importantly, someone who is invested in your success. 
A mentor is crucial to your success and growth in the early stages. They can teach you what pitfalls to avoid, what pressures to ignore, and what skills to develop.
I would seek out someone with a 5-10 year gap on your experience level. Anyone beyond that may not have the most relevant experience, and anyone below that is often more or less in the same boat as yourself. Mentorship doesn’t have to be a formal relationship; even just having the rapport to ask honest questions is a great place to start. If you are still in university, consider cultivating healthy relationships with your professors that extend beyond graduation. Secure the connections now to help you succeed later.

3. Tech is only half the battle; soft skills do matter

Social and soft skills are just as important to your career as your tech skills. Many students get deeply invested in their tech skills and forget that professional communication and relationships are the lifeblood of the workforce. If you want to grow at your organization, very often it’s the soft skills that ultimately make the difference.
To put it more simply: If tech skills are replaceable, you need something else to stand out. You need to be someone that others want to work with, someone who cultivates an efficient work environment with others.
In college, most of your peers are in similar phases of life; it’s easier to forge strong relationships when your peers are the same age, live on the same campus, and share the same schedules. Just because you have good relationships in college does not mean you have the professional skills for the workplace.
In the workforce, you interact with people of all ages, lifestyles, and experience levels. You will work with people from different countries and socioeconomic backgrounds. Get comfortable asking questions, letting others speak, accommodating complicated schedules, and working with people you may not understand.
Developing the skills to maintain relationships at this scale will help you succeed in the early years of your career. Don’t get lost in your computer like you may have in college and forget that the tech industry depends upon mature human conversation to solve real human problems. You’re not an island anymore.

4. You don't need to reinvent the wheel to make a difference

There’s no doubt that education is inspiring. Many recent graduates go into the workforce ready to change the world. While this is an important goal, you also need to know that in the first few years of your career, patience is often far more important than innovation. Reinventing the wheel is by no means the only way you can make a difference in the world.
Oftentimes, young people reject well-established practices in search of a so-called “better way”. By all means, explore, invent, create; but don’t jeopardize your career by thinking that you alone will change the industry. The knowledge you have is a result of thousands of people working together to figure things out and solve problems. Learn with them, not despite them.
If you don’t know why something was done a certain way, it should not be your first reaction to tear it down and reinvent. Rather, your goal in the first few years of your career is to learn about the thought processes of others. First try to understand why something is done the way it is. There may be a good reason for it, and by seeking knowledge, you empower yourself.
There’s a common myth floating around the tech industry that change is owed to the few geniuses. The elevated stories of Steve Jobs, Elon Musk, and the like contribute to a “lone creator” narrative that can really disappoint new developers who may spend their whole careers working on teams. Yes, In reality, most, if not all, world-changing projects happen in those teams of people. It’s not just unlikely that you’ll be the lone genius; it’s not even a reality! More successful programmers are those who work alongside others. It wasn’t one person who invented the iPhone. It wasn’t one programmer who designed the Tesla. It was a work of thousands of talented people in a community and ecosystem. Lean in to the group. Don’t alienate yourself for the sake of a myth.

5. You may not end up at Google or Facebook

The jobs out there for developers are wide-spread and diverse. In fact, most of the jobs out there for developers are with non-tech companies. Pretty much every company these days needs talented developers to help them solve problems. Health care, journalism, education, industrial construction, ecommerce, banking. All of these industries, and more, are viable places for developers to thrive and grow. In fact, according to Monster, nearly 89% of software developers don’t even work in Silicon Valley.
Unfortunately, there has been a lot of focus on the culture and habits of developers at the big FAANG companies. This means that the definition and expectations of tech is skewed and inaccurate. This leads to an implicit bias for tech jobs at big tech companies since those cultures largely define what new developers think of as “legitimate tech work”. The expectations you may have about the tech industry, both the good and the bad, are not wholly accurate to the diversity of jobs out there and overlook many other aspects, joys, and successes of work in other industries. Don’t be fooled by common perception and limit yourself to big-tech companies as the only place worthy of your time and knowledge.

6. You won't understand everything you're doing

A hard reality for new developers is that you have to get comfortable working with partial information. During your education, it was likely rare that you didn’t understand the whole picture of what you were working on. You had a rubric, a clearly outlined assignment. You probably even knew the exact percent value it had for your grade. But in the field, this is rare. It is very common that developers must start shipping software before they even understand how it integrates. Don’t be discouraged that you won’t be able to understand the function of every component right away. Partial knowledge may be all you get.
You may waste your time trying to get the whole picture. The truth is that you don’t need complete knowledge to be successful. Learn how to get comfortable working in a codebase where you don’t understand everything. One way of doing this is to start treating your code like black boxes. Just treat each task on its own, and build the bigger picture as you work.
Many of the codebases you will work on will be messy, archaic, or different to how you would approach them. Your work will not be as streamlined or up-to-date as you might want it to be. Sometimes, due to speed constraints or the codebase you are working with, you will have to ship “good enough” code. Know now that navigating massive codebases with distributed knowledge is a skill in and of itself that you may not have learned in school.
This doesn’t need to discourage you, though. The key is to learn what compromises you need to make and to identify the right people to ask when you are stuck. This all comes back to my earlier point about patience: patience is more important than skill at this stage. Put in the time, trust the process, and with time, your knowledge will expand to incorporate a larger-scale understanding of your work process and the codebases you work on.

7. Your evaluative metrics have shifted

Entering the workforce means that the metrics by which you are judged are shifting. In college, your main goal is to complete assignments that will be evaluated for accuracy. This is not entirely the case for the job of a junior developer. Your goal in the workforce, after all, is not your own success but the success of a product that will be used by people, by thousands of strangers.
You are no longer in the closed system of a university where your professor or TA simply tests for accuracy. Now that you’re in the workforce, you need to think of all the things that could possibly go wrong when the human element is introduced to your code. A customer will face dozens of different cases when it comes to interacting with your product. They will lose network connectivity. They will inadvertently feed the wrong input. They will intentionally feed the wrong input. The list goes on.
This means that an “assignment mentality” will no longer suffice to pass in the workforce. You need to think less like a student and more like a problem-solver. Learning how the testing infrastructure works is vital. Learn early on how to test your code. Brainstorm human problems that may interfere with your components. Be proactive, and move beyond the desire to pass an assignment and feel successful. Now you have bigger fish to fry.
At the end of the day, working in tech is exciting and fulfilling, and these realities should not dissuade you from going after your goals. Stay focused, patient, and eager to learn. Turn to your peers and mentors for guidance.
Fahim is the co-founder of Educative. We are building the next generation learning platform for software engineers and instructors. Learners learn by going through interactive, text-based courses. Instructors can create and publish interactive courses using our course builder. If you are interested in publishing courses or knowing more, feel free to reach out.

Tags

More by Fahim ul Haq

Topics of interest