A friend of mine approached me as they were sitting two tables from me. He introduced me to the guy who has spent a few months reading about PHP, Java, system administration and relevant fields, being clueless as to what’s the best career path for him.
The conversation revolved around several major points which I have enumerated below.
Key Points to Remember as a Software Developer
My first question tackles the technical background of future developers.
Software engineering is not about code. It’s about solving business problems through code deployed on top of a set of servers, running on a given operating system, interacting via the network and the like.
The programming code usually talks to a relational (or NoSQL) database and stresses on using the right data structures within the appropriate data layers through programming certain algorithms.
My new acquaintance has studied informatics at school and has spent 3 years in a technical university. He had some exposure to OS, data structures, algorithms, networks, and basic applications in different programming languages.
It’s a good start for a junior engineer.
Career Goals and Hustle
The second important part explored the long-term career goals and the motivation of the new engineer.
He seems to be a hustler, having worked multiple jobs at a time – including some that required ongoing attention to detail, a lot of coordination and making decisions quickly.
That said, he had no practical exposure to any area and was clueless as to what would be the best path forward.
The good news is that PHP, Java, system administration can play together and may be approached in different ways.
PHP is generally easier to start with. Knowing the local market fairly well, I know of plenty of marketing and creative agencies looking for some basic PHP understanding for starters. It’s a possible starting point (although not recommended for people who want to progress quickly).
Using frameworks like Laravel would simplify some bits and teach some design patterns and best practices. WordPress is also an interesting way to start – if you focus on building plugins or multisite network, starting SaaS applications or building freemium/premium plugins.
Java “runs everywhere” and is a good way to get into mobile development or desktop applications (I’ll cover that later). Embedded is a great option as well, not to mention machine learning or data management.
System administration is platform-agnostic to some extent – and someone equally interested in both areas can later transition to DevOps.
While the opportunities with each niche are endless, a fast-paced job in a startup may be a good learning process for someone willing to spend the time in a smaller, rapidly progressing team compared to a large enterprise corporation.
Struggling to find a starting point is a common problem for beginners. Since programming is a discipline that’s loosely language-dependent, my go-to advice is “Just start”.
The new developer was certainly lost and tended to jump between books and small projects. I’d still enforce a “get something done and expand onward”, being the next point on my list.
The Pet Project.
Beginner programmers, who don’t have enough experience, often have a hard time landing an entry-level job in development.
Despite the demand, hiring a freshman may take a year before there is any notable productivity. Practical experience is definitely a must and would solidify a potential job opportunity.
The new potential developer has a family business in a need of a simple ERP. While using an existing software is certainly an option, a motivated developer could indeed start with a good foundation and build upon it; gaining exposure and experience in different areas of All Pages programming which would be invaluable in the long run.
Discussing the different options here revealed an opportunity for building the ERP over the past few months (at least an MVP) and deciding from there.
Set a Deadline.
I always advise setting hard deadlines for milestones.
We’ve agreed on 3 iterations, 2 months each until completing the MVP. We’ll see how this will play out in practice.
Considering the scope of the project and the milestones, he would definitely be qualified to land a job as a junior engineer considering his background to date and the roadmap.
I prefer programming to system administration for starters. If everything goes smoothly, he can certainly transition entirely to a sysadmin role or just morph into a DevOps pro over the next years.
But, WAIT – Should You Quit Your Job Just to Pursue Your Passion in Coding?
There are two possible scenarios for those who have yet to start anything in the field.
1. If you have enough free time after business hours (in the evening or over the weekend), try the lean approach. Sign up for online courses, watch videos, buy a few programming books and learn step by step. Pick a project that you’re passionate about – probably something that you’d use on a daily basis, as an automated tool for your bills, notes, tasks, whatever, and start iterating on it. Join some development groups online or even a mastermind group for beginner developers.
With enough perseverance, you’ll be able to see some results in about 6 months and decide whether this is a good fit, and probably start collaborating on a project with other folks.
2. If you’re determined to live for a year with your savings, go ahead and make it work. Spending 50 hours a week learning intensively and building a few projects would lead to some traction that would land you a junior job in 3-4 months. You can also start as a support guy somewhere and play with code in the meantime, or try to solve smaller problems that the dev guys would take on otherwise.
You’ll have to assess your annual costs and living expenses and find out what are the requirements for junior developers in your area, as well as the average salaries.
How Much Do Software Developers Get Paid For?
How is The Market For Software Developers?
The job market is far from oversaturated. There are more available jobs than qualified candidates to fill in.
The European Commission reported a shortage of 900,000 skilled ICT workers by 2020, just in the EU area. That speaks volumes on its own, and only represents a fraction of the world’s IT ecosystem.
But not everyone is a great fit for IT. Plenty of freshmen joined for the job perks and financial opportunities.
After all, it’s an in-demand, office job, a reputable one with a fairly high average salary range, often available for all popular brands (you get to pick where you work and support a cause), some get to offer free drinks or lunch and other goodies at work.
Tips on Getting a High Paying Job as a Software Developer
People underestimate hard work.
Keep mastering the craft, invest in quality work, stay up to speed, push forward and you’ll be in the top 10% really soon.
Experience plays a critical role in becoming a senior software engineer. The longer you’ve been around, the more problems you’ve solved, applying different design patterns, studying new libraries and frameworks, integrating new SaaS solutions and so on.
Making sure that your code quality is legit while effectively solving business problems is the key trait. And this is taught through experience, continuously studying software engineering, re-learning computer science classes, investing in complex, high-scale problems at work, looking for intriguing challenges (as compared to looking for monotonous work).
Aside from common sense, consider other applications of software engineering that aren’t necessarily full-time development. Think of technical writing or training, technical sales, technical PM and other disciplines which may yield a higher ROI for the same time.
What’s Not to Like?
Bottom line, quite a lot of people have jumped into IT without the right mindset, attitude, or preparedness to study and work hard for years until they become productive.
Unlike most other jobs, software engineering is usually not a 9-to-5 employment at least during the first several years, if at all.
So unless you want to merely occupy a seat in a large corporation looking for “volume”, you’re expected to solve complex problems at scale, do it fast, and cause fewer regressions on the way.
This may sound straightforward. But the vastness of the IT ecosystem is broad and evolves at a rapid pace. Thus, engineers should be curious, quick learners, able to build a complex mental map of dependencies and related components for a single case, bearing in mind different use cases and customer scenarios.
Most people aren’t willing to or can’t, leading to a pool of mediocre programmers employed due to the lack of a better alternative.
So even if you’re far from a sharp-minded individual passionate about IT, there are still TONS of opportunities in hundreds of thousands of companies looking for any IT talent. When the bar is low, you’re pretty safe, and the market is very far from oversaturated.