Your Career In Software Engineering - Dos and Don'ts

Your Career In Software Engineering - Dos and Don'ts

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):

  1. 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. 
  2. 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).
  3. 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.
  4. 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.

Previous Post Next Post

Post a Comment

Post a Comment