Choosing Your Path in Tech: A Guide to Software Engineering Career Starting Points
From someone who's spent time across the spectrum: Startup or Corporate? Agency or Freelance? Find Your Best Fit in the Tech Industry
First off, this is not exclusively directed towards university students and grads. To those who missed the memo, it’s 2022, and the only excuse for you not to get into the realm of software development is you not wanting to.
The days of requiring a degree to start a career are long gone; for software at least. This isn’t to say that a degree is obsolete, it’s quite beneficial in many cases and for many people, but, it’s no longer a requirement to work in software.
The Context
To those who don’t know me, I’m Chris (I’m also Chris, and Chris); graduated as a Computer Engineer back in 2017, started off as a full-stack developer, and have ended up as a lead, technical, and business consultant.
I was able to make it here for two main reasons:
My passion for solving problems, optimizing those solutions, and automating them when possible.
My constantly intentional efforts at surrounding myself with people matching my mindset, my level of energy, my vibe, my values, and my goals, since day 1.
I was fortunate enough to have had spent the first 2 years of my career (2017 and 2018) right before the financial crisis (then the other crisis, and the other, and, well, who’s counting?) that struck Lebanon. Why is that relevant? Because the market was very well saturated with seniority and quality developers roaming the country, and I was fortunate enough to meet and be mentored by a good bunch of them.
Unfortunately for most juniors in the field, a major chunk of that expertise has left the country. How many? No idea, since we never have official figures so if anyone is interested in making the effort to collect that data, please reach out.
Fortunately for those same juniors, both local and foreign recruiters are constantly looking for developers, and that demand will keep on growing, indefinitely, unless a solar flair hits the planet and screws everything up - but that’s a topic for a different post.
My personal aim is to try and give back to the Lebanese community as much as I can, which is why you’ll notice most of my technology-related posts will be regarding this community in particular.
The Content
Since most of the seniors who used to convey this knowledge are no longer here, and currently available seniors are too busy covering for the lack of seniority and are struggling to deliver and mentor juniors, I thought I’d try to deliver my vision of what a good starting point would be for an up-and-coming developer.
This post will not discuss the different career paths you could take (e.g., Frontend, Backend, Systems Architect, DevOps, etc.,), rather, it will focus on where you could get started in the field. There are numerous resources out there that would tackle the different career paths (I would recommend roadmap.sh, not a sponsor) and I might make a different post targeted towards the Lebanese community for these paths.
I did mention at the beginning of this piece that you don’t need to hold a degree to get started, and believe me, you don’t, but you might need a slightly different head-start than your fellow degree holders.
As a College Student / Graduate
If you’re still a student, you’ve got some time on your hands. And if your finances allow it, I suggest you take this time to fully grasp and enjoy the college experience. Learn to interact with people from different cultures, communities, and backgrounds, learn to perform extracurricular activities, join some clubs, and most importantly, start building your network of friends and professional connections as earlier on as possible, but don’t forget to enjoy that experience. If you’re in a hurry now that you’re in college, you’re still going to be in a hurry once you start in the market, and you’ll continue being in a hurry all along, forgetting the most important part of it; enjoying and appreciating the process.
You can definitely start learning - proper - code as soon as you’d want, but, unless you dedicate a decent level of focus and determination, there won’t be much results there. Learning and gaining experience in software requires consistency and dedication, so choose between fun or work until you graduate, unless you’re a master at handling your time and priorities.
As an Enthusiast / No Degree
It’s still as easy for you to become a developer as it is for your neighbor from the above paragraph. The only difference is, a graduate could land an entry-level job that requires absolutely zero experience, but let’s face it, both you and a college student need some experience to land a decent job, so if you don’t aim on getting a degree, you definitely need to do your learning.
What? How?
Almost all entry level / junior software positions share very similar functions and requirements; one of the few differences being the technology / programming language itself.
This post will not explain how you could get started, which courses and languages to learn, etc., it will only showcase where you could launch your career.
I’ll make sure to write a post depicting the What and the How later, but if you need instant advice, leave a comment or reach out to me. That’s what I’m here for.
Which Part of the Market?
This is where it gets fun. Let’s assume you’ve got some expertise you need to start a job, where do you start?
1. If you’re financially stable, and you want to quickly pick up on a lot of expertise
I’d then recommend you start by joining a startup (or a company with a startup mindset). You’d need financial stability for this one because startups are volatile, especially recently in Lebanon. You couldn’t easily pinpoint potential failures and culprits of the startup, especially before having gained any expertise around them.
The nice thing about startups, however, is their constant need for multi-disciplinary individuals. What that means is that, you might join as a backend developer, end up writing test cases (Quality Assurance tasks), onboarding new resources (HR + more senior developer tasks), being asked to write some business requirements (product owner / project manager / tech lead tasks), learn about Docker and deploy a small service (more senior developer / DevOps tasks), monitor the performance of a service and analyze its data (more senior developer tasks), analyze and optimize the performance of some database queries (Database Administrator tasks), etc..
Once you’ve gathered that diversified expertise from such a workplace, you’re going to be equipped with enough skills to help you land a job virtually any place you want.
For me, startups are like the bootcamp of software development.
Expect long nights, tight deadlines, urgent deployments, break-of-dawn patches, and Sunday lunch interruptions if production goes down. To succeed individually at a startup, you need to own the product, really own it, along with every one of your team members.
If you do join a startup, do your research about burnouts. If you’re not intentional about your patterns and symptoms for a burnout, you’re most likely going to continually burn out; but that doesn’t have to be the case.
Let me know if you want to read about burnouts.
2. If you’re financially stable, and you don’t have much urgency to evolve
That’s fine, really. Society might criticize you and the hustle culture might catch you off guard, but, really, if you don’t want to evolve as fast, that’s your choice and that’s absolutely fine.
You might find yourself quite comfortable at a well-established product team or company. Without going into great detail of what a product team is, a well-established product company is one that has its own product (e.g., Slack, Airbnb, Spotify, etc.) that’s already secured a clear, continuous, and sustainable line of income, allowing it to operate as a regular business. Depending on the company, of course, many of those operate on a more laid-back mode. The client is the company itself, so there’s no urgency, well, not always at least. The company is making its own money, so you won’t be constantly competing against the clock to impress investors and early adopters, roles are most likely pretty well-defined, and you’ll be able to take your time, dig your trench, get cozy and comfortable, and start learning.
When it comes to a slow-paced environment, some people might thrive, others might stagnate. Stagnation leads to your comfort zone and then you might find yourself stuck there for a long time, making it harder for you to make a switch. Not a bad thing either, just giving you heads up.
3. If your finances are critical, and you want to quickly pick up on a lot of expertise
You might benefit from being part of a well-established agency or consultancy firm. These are the companies whose purpose is to acquire projects from individuals or enterprises, build, ship, and sometimes maintain that software on their behalf. They're sometimes known as outsourcing agencies.
Generally, these companies constantly1 have a flow of income. The nice thing about them is they would constantly expose you to various business models (e.g., insurance projects, banking projects, real estate projects, etc..) all the while you going to the same office, hanging out with the same people, complaining about the same AC temperature.
Depending on the client, the company, the team, and the leadership, the most common culprit for working with such teams is the need to compromise clean code and best practices in favor of delivering to the client. This is greatly influenced by how efficient and organized that company and its team(s) are. A well-structured and well-organized team would be able to accurately estimate the effort needed to complete a task or a sprint, giving you the time you need to learn efficiently.
Despite the above, a well-established agency would get you technically exposed to various technology stacks. Unlike startups, who prioritize delivering a working product, then patching when needed, an agency is most likely to be critical regarding the security, availability, and maintainability of the software they deliver. So you will likely get exposed to security practices, DevOps, privacy, design, and other types of standards. These places will most likely give you a clear career path as well.
4. If your finances are critical, and you don’t have much urgency to evolve
A few years ago I would’ve told you to join some bank, for the financial stability part. But, seriously, if you belong in this category, and are Living in Lebanon, get your head out of your ass. You need to make a move, then read paragraph #3 above.
Here’s a small refresher to review before your exam
To Wrap it Up
Again, this might not be the most solid or most fitting advice for everyone, but it’s based on my observation of how various types of companies and developers behave. From my constant interaction with juniors, seniors, leads, and business leaders, I’ve been able to draw up these conclusions.
I personally started off in the startup (and startup-like departments) realm, gaining as much expertise and grasping knowledge as I go. I then used that expertise and knowledge to start my consultancy services, which in turn fed me the exposure and experience I needed to become a lead and an engineering manager.
I will try to follow up with a more detailed article or set of articles, starting with how to actually get started, what you need to learn, and how you could evolve.
Whatever opinion you might have, or criticism to this post, it’s all valid. Don’t forget to add your thoughts and suggestions in the comments below.
This highly depends on the leadership and the business decisions they make
Not enough people talk about this from that perspective especially in the Lebanese environment.
Thank you for sharing this.