Demand for qualified IT experts is staggering. And software engineering is one of the most tempting industries to profile in and keep growing as an expert.
How to Build a Successful Career in Software Engineering?
The reality is that most graduates are striving for running their
own business, consulting full-time, or engaging in a lifestyle business with
freelancing on the side.
This walkthrough covers the action plan for achieving these
- or joining an organization in a senior technical and/or leadership role.
Spend a decade working in 2 or 3 good
technical companies.
You can start with a large organization hiring dozens or
even hundreds of developers in your area. There are multinational outsourcing
companies or non-technical corporations that still need technical manpower.
It may be easier to start with an entry-level job, go
through their extensive training process, and take it from there.
At a later point, work for a mid-sized company or a startup.
There are different paradigms and levels of responsibility there. There’s also
a higher chance that your company will pull it off, leading to steady and
massive growth and a senior management position for yourself (or a VP of
Technology and the like).
It’s both a great learning experience and has a chance to
substitute your dream with a future in the company that you’ve
joined early enough on (and thus help with leading and growing it).
If you have a chance to work for the Big 4 or another widely
popular tech company, that would probably be quite exciting as well. I’ve met
plenty of people who dreamed of starting a business who settled down after
joining a disruptive reputable company that’s actually “changing the world”.
It’s likely that your dream will evolve over time and you
may be quite satisfied with your progress to date.
Otherwise, always consider your initial plan at all times.
In order to do that, focus on those three areas during your first decade (and
further):
- Spend
a good portion of your time learning and reading. Your jobs
teach you so much about an organization and the business. As a technical
founder, you want to excel in all areas of the technology landscape as
well as all things business.
- Follow
other business owners and senior managers, successful team
leaders in large organizations, startup owners. Read about sales and
marketing, hiring, management, operations, investing, financial management
and everything else that a business owner has to deal with at first (and
oversee later).
- Engage
in networking - both offline and online. Your colleagues may be
your future hires, co-founders, or partners. Your managers may be your
vendors or clients. People you meet at conferences may vouch for your
commitment and trustworthiness. Grow your network and regularly interact
with your peers whenever possible.
- Build
your personal brand. Developing your brand will not only help you
attract clients or recruits if you decide to start a business, but will
also help you find great job opportunities, land freelance gigs, or
develop other strategic partnerships. It may open the doors to public
speaking or even writing a book.
All in all, personal branding may speed up the process of
founding a company and generating some leads. Becoming a thought leader and an
educator in your field (through blogging, social media, Quora participation)
you can increase your exposure and value within the community.
If you decide to start your business by then, you’ll already
know the foundations and have learned practical lessons over the past decade of
learning.
Bad Practices You Should Avoid While Learning Software
Development
Endless reading and watching training
videos without actually writing code.
Note that I've already advocated pro reading and learning in
the previous chapter. However, without practice, this won't cut it - at all.
I’ve trained over 2,000 students since 2006 and I’ve
probably met a hundred of those who struggle with simple problems. They keep
re-reading the user manuals, the best books in the field, and watching numerous
online courses until they become comfortable writing code from scratch.
That doesn’t work in software development. It’s all about
solving business problems through simple or more complex algorithms.
It’s about practice - just like the physics or math. Being a
theoretical guru doesn’t mean that you can actually solve problems. Experienced
engineers can solve problems based on a pinch of theory and a recollection of
similar use-cases that have benefited from a certain solution.
That’s why my advice for new software engineers is usually
to start a pet project. It’s easier to learn through an actual problem at hand
and slowly build on top of it.
Sure, the initial code base won’t be ideal. But that
would be the case with endless reading, too.
Additional code improvements and optimizations are a result
of a malfunction of the application. If you build a project by yourself and use
it day-to-day, you’ll easily find loopholes that need a smarter solution. This
would isolate a certain problem and thus make it easier to identify a better
approach to solving it.
And most of those “readers” and “watchers” are afraid of
failing.
The easiest way to fail is not to take action in
software programming. Your code would evolve over time. If you’re
progressing further, it’s likely that you’ll always be somewhat ashamed by the
code you’d written a year or two ago.
And that’s actually a good thing.
Just start small and solve actual problems. Build a small
project that works for you. It could be a small contact book or an application
that solves your physics homework exams. Once you have the foundation ready,
add some UI, refactor the database layer, optimize for performance or include
new components.
It’s all about continuous learning - but it will
never work without practice.
Software Engineering Is NOT All About The Money
Software development has been continuously hyped,
praised, promoted by media for various reasons - high salaries and
increasing demand being the primary ones. Some of the most valued companies out
there are in the tech field as well. Some of the richest people in the world
happen to come from a programming background, too.
It also tends to be more accessible in terms of remote
working opportunities, lack of degree requirements, freelance opportunities,
and lucrative job perks.
Which is exactly why the percentage of people enrolling in
programming courses and switching to the IT field is drastically higher than
any other field out there. Despite the fact that legal jobs, marketing gigs,
medical professions, financial opportunities may very well be just as
well paid (if not better).
Now imagine yourself being a passionate developer in a team
of 10 geeks. Your hiring manager schedules 50 interviews looking for 5 new
recruits. And you end up with 5 fresh colleagues who couldn’t care less about
the craft and shake the entire work culture at the office.
On top of that, you tend to organize meetups with your
colleagues, attend 3–4 technical conferences every year, share tutorials and
industry news on Slack. You see the disconnect between your tech circle and the
new hires.
It could be demoralizing and is one of the main
reasons why people are so attracted to companies like Google, Netflix, and
Facebook, known for their internal tech communities.
The software development field is evergrowing. New
frameworks, libraries, technologies, software updates, and tools pop up all the
freaking time. It evolves much more rapidly than most fields out there.
A professional developer is most likely going to spend a
good chunk of their time studying and conducting R&D. It’s not the type of
job that you can study at the university, spend 2–3 years mastering and do for
the rest of your life. Without intrinsic motivation and actual joy in building
software applications, you’ll end up being stressed out, dissatisfied,
and pressured by the job requirements.
Yes, a lot of software developers are highly motivated by the
salary. But that does not mean that they do it solely for the paycheck.
They may be ambivalent or generally chill about doing their day-to-day, but
that doesn’t mean they don’t care about their craft.
Software development would still be in the top 5 (or top 3)
of the jobs they would pick with their skill set if the pay was equal.
It would still be a viable alternative - even if it’s not
their number one life goal.
But diving into software development with zero
motivation and only for the paycheck? That’s a recipe for disaster in
the long run.
Still, Software Developers Are In Demand
It’s incredibly challenging and there are several legitimate
reasons for that.
Variety of Skills
There is a wide set of skills that good programmers possess.
It takes a lot of time for mastering those skills,
implementing the right design patterns as applicable, writing compliant and
backward-compatible code, taking care of performance and security, ensuring
stability and code quality.
Market Demand
There’s the retention problem as well.
Good programmers are in demand. Large organizations or
funded startups would be willing to pay a premium price and offer a variety of
extra benefits for talented staff.
Business Opportunities
Good developers are not always open to employment
opportunities, either.
Excluding the ones who work at reputable companies already,
there are plenty of great engineers who freelance, consult, run their own
companies or build their own products.
That causes additional friction for companies looking for
the right profile during the recruitment process.
Exciting Work Assignments
Good developers want to be entertained at work. This
requires a constant adjustment of the workflow and the types of problems a
developer is assigned to. Good developers get bored often if they are stuck with
repetitive work that doesn’t involve a lot of R&D or solving complex
problems.
Additional Requirements
When paying a high salary for a qualified developer,
companies are looking for productivity, clean code (including automated tests
or lack of internal back-and-forth), understanding business problems,
coordinating with other developers, communicating promptly and reporting to
management.
Developers are no different from other company roles within
a team. Therefore, it’s expected that they could attend business meetings and
provide insights, uncover potential risks in a project, and come up with
efficient alternatives and options.
All things considered, that turns the recruitment process
for developers extremely challenging.
If you're passionate about the craft, demand will be there.
With or without a degree in Computer Science, you can persevere with the right
attitude and enough hard work invested early on.