What do you see when reading employment ads for Software Professional jobs? Systems, languages, tools, years of experience, degree… Wrong. Employers are looking for people who can deliver results: players who will score winning points in the next game, actors who will bring sellout crowds to the next movie, Software Professionals who will make the future of the organization they work for successful and thriving.
To become a successful Software Professional you need to get this very early in your journey: you’re out there to score wins for the team and deliver meaningful results for the business - not to accumulate experience, collect certifications or “continuously learn new things”. Secure this fundamental understanding, and it will guide you to success: if you want to become a Software Professional, you must start acting like one now.
Sounds like a great proposition. Can you get in and become a Software Professional?
The good news is – yes, you can. The Software Industry employs millions of successful people and you can become one of them if you work hard, but, most importantly, work smart - taking the professional approach from the day-one of your journey.
The Software Profession at its present state formed roughly 40 years ago - at the end of the 1970s, so there is a lot of history and patterns to analyze and draw strategies from.
There are lots of discussions on the value of CS degrees. Let’s just say, a CS college gives you an access badge to internships and recent grad hiring campaigns. It will cost you tangible money and/or a few productive years of your life that you could’ve spent building something amazing instead of grinding through canned curriculums. Sure, you can work on projects while in college, and, after all, a few successful and well-known industry figures did attend CS programs.
Colleges have another huge, enormous selling point for a sizable portion of the worldwide population: they open all kinds of access to desirable visas and skill-based migration programs.
Have you heard/read/watched the famous first-day orientation phrase “Forget everything you learned in college”?
We’ll leave the CS college topic at that for now.
Throughout the years, scores of people entered the Software Profession without a formal CS education.
There is no guarantee that you’ll get hired following this path, and don’t kid yourself, it still requires investing time and money. Well, time is money.
You’ll have to push harder to get your first software job than if you were a CS college student, but you’ll work on your own plan and timeline, like a professional. The odds are pretty good if you do things right.
You want to become a Software Professional, start acting like one.
Seeking an entry-level Software Developer position seems to be the most popular choice for inspired ones knocking on doors that lead to where Software is made and used. Keep in mind, though, that there are other professional roles in the Software Industry:
The general direction is to move from narrower-focused roles, deeply rooted in specific technologies(i.e., Developer role), to wider-focused roles, loosely bound to low-level technologies.
In a technology-centered industry, in order to become strategic, you must understand and be comfortable with the tactics. No other role will give you the necessary exposure to the deep layers of technology as the Developer role will. This doesn’t mean you should pass a chance to get your first Software job in another role, but you should focus on getting a Developer job first and then move in the direction you find workable and attractive.
If no, don’t waste your time, money, and energy trying to land a Software Developer job. Pick a career path that starts in another role and progresses from there. You’ll face different challenges than those who apply for hands-on technology jobs, but the general process would be the same, so read on.
If yes – you have a good chance of getting a Software Developer job, and you should be using information technology as your strong career enabler and driver.
Every beginner with the Software Profession aspiration asks:
Although, a valid and critical question, the rest of the story will prove that getting your first technology job is not about technology. It’s more complicated than that. So, read on, the question will be answered.
Books, articles, both fiction and non-fiction, films, and TV shows portray popular Software Developer stereotypes. You’ll fit one. Identify yourself:
Why is it important to know where you fit? In the long-term, you should work hard to climb out of those that spell a dead-end career. To land your first Software job: don’t oversell yourself as a “strong technical skills” employee. Present yourself as a “good personality, growing technical skills”. More on this below.
What’s the purpose of this story anyway? It’s not a secret what the hot technology skills are: pick the one you find attractive, learn it, and employers will get in line calling you for interviews, then chose an offer with the best package from a company highest on the “Best To Work For” list. Done.
The Software Industry is clearly an employee market these days: there are more openings than applicants. So, you don’t need to worry about being better than others in most cases.
The problem comes up in the first part of the condition: you need to match the position’s requirements to be considered for the job. What we see in today’s market is that positions remain unfilled: the employers are not interested in the headcount, they are interested in hiring people who can get the job done. So, how do you prove to hiring managers that it’s you?
Read Software Job boards. There are not that many true Entry Level openings advertised. A typical Junior Software Developer position requires a degree and 1-3 years of relevant experience. For those who have real experience, the degree requirement would be optional, of course, these days. Why do employers require a degree and experience? To lower their risks:
There is no science behind the “years of experience” requirement. On the lower end, it is used to discourage unqualified applicants, and on the higher end (not that important for you right now, but still) to encourage those who invested years and years of their life into the skill that it will be appreciated if they apply.
So, with all the complaints about the skills shortage in the Software Industry – there are no launchpads for eager and capable entry-level crowds to get in easily. Likewise, there are no clear re-tooling paths for seasoned professionals.
There is a popular saying in the Human Resources field: One gets promoted to the next level if he/she already acts at that level, not just shows the potential.
Nothing is truer for getting a Junior Software Developer position: you must demonstrate that you are a Software Professional in order to get a Software Professional job. With the amount of talent in the industry, employers believe that they have better chances of finding someone already at the skill level needed for the job than grooming a promising newcomer. Especially in the popular skills areas that everyone learns and hangs around these days.
Time to shake off the euphoria of hot systems and best companies to work for and start getting serious about your future Software Professional career - if you haven’t already.
Whether you have a CS degree, are enrolled in getting one, or have no plans to attain one, read on, there are a few important things for you to learn about your future career development regardless of where you’re starting.
The essence of the “Getting Employed” plan is not that revolutionary: you need to go out there and find a concrete job you’ll be hired for - rather than generalize and wait for a dream job to find you. Basically, if you want to become an employed Software Professional, start acting like one.
You can’t pick a technology that would carry you through your entire Software Professional career or even a large part of it.
As the technology changes, you’ve got to work hard to stay afloat or you’ll be drowned by the wave of the new stuff coming in. Historically, often people with next-to-zero experience show better results in comprehending new systems than those who worked with seemingly similar systems for years before. How is this possible?
Look at the history: The Software Industry is extremely competitive.
On the employer side, companies, brands, systems, and technologies go through lifecycles and fade away. The lifespan for those that are Consumer market-focused is shorter than those catering to Businesses. Corporate cycles linger, and the inertia is considerable, but eventually, the Business-focused systems get recycled as well.
On the employee side, for-hire personnel is under constant wage pressure from emerging geography markets. Emerged markets soon get pressured by newly emerging ones, and the cycles go on.
In your future professional career, you’ll find yourself designing and implementing each new system differently than the previous one. The same applies to the industry as a whole: something gets created, with a huge thought and effort put into it, and when it’s completed, the flaws become obvious and the path to improvement clear. The usual path is to start from scratch and do things essentially different from how they were done before. So, if you think you’ve mastered a skill, you’ll have to forget it and learn the next one from scratch.
Big name hot software companies - just a subset of the many industries where Software Professional jobs are.
There are three general categories of Software jobs by the target work effort:
All three would evolve around similar software and technologies, but the day-to-day of the roles can be quite different: the size of the team, interaction with non-technical personnel and business processes, development and testing cycles, prevailing methodologies, etc.
And, of course, startups vs. established organizations.
A technologist may move between those categories once or more during hes/her career. In fact it’s pretty common.
You will only be hired into an organization where you fit well with your overall personality, interests, attitude, and aspirations. Employers know, you can be sent into a 3-day class to learn a technical tool, but there are no classes that can change you as a person – only adjust.
Think where you fit best and where you’d feel comfortable working, and narrow your job search focus accordingly. Accept the fact that some types of organizations may not be for you, at least not at the moment. There is nothing wrong with that.
If you’re still asking what technology to learn to get a job – it means you don’t have a strong technology attachment, and that is okay. If you’ve decided somehow that your purpose in life is, say, developing AI – you would not be reading this. You’d be coding in a common language, implementing algorithms to process tons of numbers, and spit out results. Just like millions of developers did before the term AI was coined. And you’d be thinking of your next career move.
So, the answer to the “What Technology to Learn” question is simple: do your research, identify concrete employment potentials based on who you are and what’s available within your reach. Then learn quickly and decisively to the requirements of the specific job.
Think of it: the technology that will bring you success in your career doesn’t exist yet. The company you’ll be working for at your peak has not been yet formed.
What you do now is not placing your bets. You work to establish yourself as a Software Professional.
Having the right attitude, being a team player, communicating well, identifying and solving issues, following processes, and suggesting improvements; those things have very little to do with Software theories, but they hugely affect one’s employability and career advancement. Ironically, those are called “soft skills”. Soft skills are harder to acquire, maintain, and demonstrate than Software skills. Think what soft skills you’ve gained in your career already, document them in a meaningful and provable way, and use them to your advantage to get hired ahead of those software-theory-only skilled recent graduates who may fill entry-level positions.
The last one is the absolute key: you learn software not to show off or have fun but to solve specific, concrete business or scientific problems and get paid for it. From business to technology. Make this your signature quality and prove it to the potential employer.
Think what industry and type of business your strong qualities would appeal to the most. Compile a list of employers. Know who they are and what they look for in terms of commitment and cultural fit. Know what programs they offer or associate with to bring entry-level technical resources on board. People are hired by people – develop connections, ask around, reach out to your friends and family. You know what to do.
Remember, you’ll get hired by an employer that you find and prove to them that you have what that employer needs at the moment. You won’t be found for the tools and systems you learned and posted on your GitHub profile (although, do that too, of course).
Build a list of technologies that your target employers hire entry-level personnel for. Run an overview of those technologies and pick one that appears to be learnable with the resources you have access to. That is your fast-to-learn goal to execute on.
This is a huge one. Many folks think of a learning platform, online or a bootcamp, as the ultimate magic carpet to step on and get carried to the right destination. In reality, you’re the one who does all the work, including the actual learning and understanding.
Think how much you’ve learned already in your life. You are exposed to technology every day. You already know a lot, and you’ve been learning continuously for many years. The right platform is the one that doesn’t restart your life-long learning but rather continues it in a way that you understand best. And those are hard to find.
The biggest problem with learning Software technology is not its complexity. It is the lack of a guiding path that is clear to you personally. Think what happens if you are explained a simple topic in a human language that you don’t know – you won’t stand a chance of getting the topic. Now, if the topic is explained to you in a language that you understand – it’s trivial to get! You don’t need to learn a whole different language to understand the essence of a particular topic – you just need the topic to be explained to you in the language you know.
Today’s software systems evolve around concepts already familiar to you in your everyday life and/or common sense for you as a modern individual. Programming syntax can be learned quickly, and very few things need to be memorized. The power of Development Tools replaces memorization and repetition. So, the process of learning Software is really about getting the “what” and “why” of the specific technology, then moving smoothly through the “how” of it. More on this later.
Your Portfolio is a set of solutions that you implemented and it is the centerpiece demonstrating your technical knowledge and skills. Hardly anyone writes code from scratch these days, so borrow as much as you need, but make sure you can explain every piece and component of the end product: what does it do, why it’s needed, and how it works.
Get yourself in the professional habit of recording the time you spent working on each task and have it handy as well. The goal is to show how fast you can produce results, but don’t hide productivity drop-offs – an issue analyzed, explained, and corrected is your gain, not loss.
Your portfolio is where you present yourself acting as a Software Professional.
Your resume must have all the terms, product names, and versions right for both scanning bots and human readers. Although, don’t put version numbers unless there is a significance to the fact that you learned a particular one vs. another. Don’t make your resume look like a dump of information or a wide net spread out in a desperate attempt to catch someone’s attention. Help the reader understand that you’re for real based on your previous solid soft-skill development career and the tech that you came to know as your entry-level push. No one cares about how many things you’ve heard or watched videos about. Keep in mind, the reader will more likely glance over the resume than study it, so make it easy to absorb at a glance.
Key: the overall content of your Resume and Cover should be tailored to the norms of the local market you’re applying in.
For the US market, keep the Cover brief: just state what experience you’re coming from and what entry level role you can work in today, without making it too cute praising the company and stating how much you can do for it. Are you kidding? You’re asking for an entry-level Software job. Your value should be in your Portfolio, not your words.
Put an effort into making those as perfect as possible, so that you get rejected because there are no openings for what you’re looking for, not because you failed to communicate your fit for an opening you could fill.
If you’re really good and possess what’s needed for the position, getting an interview pretty much means you’ve got the job – feel positive and pumped up. However, you’ll likely be interviewed by multiple people and go through several types of interviews for the position.
Interviewing is a special skill on both ends of the process. Inexperienced people (on both ends) don’t realize that the interview is not a debate to prove points or show off – it’s a conversation of professionals to establish the mutual fit for the position.
You may come across interviewers who don’t know what staff the organization is looking for or are annoyed to be pulled away from their work. You may get those pushing to prove how much they know vs. how little you do. Failing such interviews, your hope is that those folks' opinion would not be regarded much in the overall hiring process. Whatever happens, don’t get frustrated and don’t argue. Your goal is to get the job (if you still want it after seeing a bad interviewer) and getting the job doesn’t mean you should prove that you’re smarter than the interviewer. Maybe quite the opposite.
Like with the Resume and Cover, an ultimate winning interview should be crafted for the local hiring market.
Keep in mind, passing an interview can be very different from passing an exam: the examiner checks your fit to be sent off at the completion of the course; the interviewer checks your fit to be brought onboard. What can be enough for a passing grade on an exam may not get you through an interview if you fail to convince them that you have what it takes to become a part of the team. So, be honest, work on conveying an image, not scoring grade points. Avoid common entry-level candidates' problems and interview killers like mumbling gibberish or moving away from direct answers.
Purely technical interviews seem like a great and less ambiguous way assessing your fit for a tech position, but they’re not, especially for an entry-level job. The whole idea of hiring you at the entry level is that you’ll be acting under the supervision of more experienced folks, and told what to do and how to do it. So your role will be getting what you’re told fast and working hard vs. running your own show. A smart tech interviewer works to evaluate your overall fit. However, you may be thrown into a grueling pre-canned process of coding some meaningless quiz-like tasks under pressure. So, prepare yourself for technical interviews by studying and memorizing popular modes and questions. It won’t help you become a better Software Professional, but it will help you get the job you need.
No one would argue that achievements in modern technology would not be possible without advances in science, including Computer Science (CS). The history of the profession, however, clearly indicates the value of practical skills in building a successful Software Developer career. Why practice over theory? Software is a highly fragmented field. Since its early days, different teams and individuals have been designing systems in the way they thought would be the most optimal. Software systems evolve, ideas come and go. Software is a full member of the cohort of modern occupations where what you do today will surely be obsolete tomorrow. This keeps the field exciting for those who like the change, but quite frustrating for those who don’t. And difficult to build long-standing theories around.
CS describes common terms and principles, the use of which can be detected in modern software languages and application systems. On the practical side, however, the terminology and methods are far from being standard. Many fundamental concepts such as Function, Class, Interface, even Variable, mean somewhat different things across popular languages. Learning generic theory may become a path to confusion for a newcomer trying to build up marketable skills quickly and land a first Software Professional job.
Staying focused on your current goal, limit your learning plan to the system and technology you identified as the one that should get you a job at one of the potential employers on your list. Learn the fundamentals, any applicable theory, and best practices as relates to your target. Don’t generalize at this point. Remember, Software Development is a narrow-focused discipline, especially at the entry level. You’ll have plenty of time to expand your horizons after getting a job.
Get the “what,” “why,” and “how” of your technology (more on w-w-h later) and don’t worry about lining up the stuff you learn against that in other technologies or generic CS.
As mentioned above, it is highly unlikely that your Software Developer career will revolve around one system – the one that you get your first professional job on. Be ready to move from system to system every few years at the longest. Don’t develop a mental attachment to them: learn them, understand them, and move on to different ones when the demand and opportunities change.
In the sports fan analogy: you grow up rooting for your hometown team, then you move and find yourself living in a town with a much better one that everyone around you roots for. Will you switch your allegiance?
Software was created by people to serve specific needs. This is often sidelined in teaching software to newcomers – overloading them with information and details on how things are done but leaving the purpose of what the things accomplish and why they are done in the given way, up to the learners to figure out.
Just like going from business to technology in your decision-making process, you must be following the path from “what” and “why” to “how” in your learning (and teaching).
If you train yourself to understand the “what” and “why” of each system, program, component, approach, and style before starting to dig into details of “how” the subject of your learning does what it does – you’ll find most of the software stuff you learn to be quite simple, border-line primitive. The concepts used in software are for the most part logical, straightforward, and focused on simplification and optimization. KISS is by far the winning approach in good software.
From business to technology and from “what” and “why” to “how” – this is the Software Professional’s way.
The part that makes it hard for a newcomer is that software professionals do not talk about “what” and “why” in their day-to-day: once figured out, defined, and understood, the rest of the job is about the “how”. So coming from the outside of the system’s professional inner circle, to get up to speed you’ll need to find right learning materials, or ask right questions and get them answered, or do lots of digging through the sparse evidence you can find laying around.
Don’t look at the what-why-how paradigm in a flat, one-dimensional way. Each “how” leads you to another layer of “what” and “why.” As a simple example, a hypothetical text search system has a clear purpose and is hard to implement. Well, the implementation of it is a “how” that you break into sub-layers of what-why-how, till you get it all. Say the system carries out the search by splitting text into parts – this is your next layer of “what” is done and “why” it is done that leads you to “how” the split is implemented, and so on.
This is one of the biggest mistakes Software newcomers make: focus on learning how to code.
In the what-why-how paradigm, code is the easy part of the “how”. Historically, the value of code and coders has always been pretty low: commodity, lowest on the pay scale. Think that Open Source emerged as a model to have your code reviewed, fixed, and expanded by others for free – attracting valuable resources while underscoring the zero-value of the code being given away. Nowadays, if your Open Source code is complete and mature enough to represent a worthwhile solution, a controversy emerges on who can use your solution and how (vs. your Open Source code). There is a clear movement in the industry to protect the solution part of the Open Source code via appropriate licensing.
You might have read that “Every program contains at least one bug.” All written code must be typed in, tested, deployed, and maintained. If you can craft a working solution without writing much code you’re saving a lot of effort, both short and long term. The code is an enabler of a solution, but it is also the foe of it. Keep that in mind! Go from business to technology.
You surely should strive to attain a good coding style and follow Best Practices in your implementations. As a beginner, follow the style of your teaching material. Ignore outside articles and discussions that push some methods over others. Don’t be protective of your style, and when your style is criticized react in a positive way and be grateful for improvement suggestions. Ultimately, your style will be the style of the team you join. Internal Coding Standards are rules, published recommendations, and Best Practices – suggestions. By the time you get in a position setting the standards for your team, you’ll be able to separate noise from useful propositions.
Every career advisory article tells you, you must distinguish yourself to further your advances. You do it not to win the competition but to attract attention – exactly what you need to land your first Software job! Can you distinguish yourself by becoming an x-thousand-y-hundred-z-nth learner completing a popular course? Hardly. So, from the beginning, you must orient yourself to doing and accomplishing something (your portfolio) vs. scoring course completions. Limit the number of courses you go through, maximize the time spent creating and prototyping.
When you’re on your own schedule vs. following semester calendar at a college or serving weeks at a bootcamp, the time you lose in learning is literally taken away from your future job’s pay-stub and experience building.
With the overwhelming number of online courses and materials – stay away from generic consolidators and canned courses recorded by someone you’ll never be able to get in touch with to clarify things that are skipping you. Pass on CS-centered courses as many of those target graduation requirements vs. professional practice. If later in your career you decide to stick with technology and expand yourself into architect-like roles – then check those CS courses out. Their content will probably remain exactly as it is now, so you can wait, no rush.
As pointed out above, you’re the one who does the learning, and the professionals working for your target employers are your ultimate examiners. Go with materials put together by professionals and find access to professionals to answer your questions and guide you through putting together your portfolio projects.
Want to become a Software Professional – start acting like one.
A 10-min discussion with the course author may save you a week of digging for answers to things you didn’t get from the course. The alternative is course-hopping and boards reading, and that is not how you want to get to your first job: for you, time lost learning is time lost not working.
True, navigating through often misleading, convoluted, outdated bits of conflicting technical information published on the Internet can be a part of Software Professionals' everyday job. You’ll do plenty of that once you get on a professional payroll. When watching your favorite detective shows - this is you in your future Software job: piecing disparate random clues together to get to the explanation and truth.
Once you’ve done your research and picked your trusted learning and portfolio-making platform – you can safely ignore marketing emails pushing you to check out new courses on new, hot topics. Focus on what you need to complete and get the Software job you’ve been targeting.
Getting your first Software Professional job is a great accomplishment, but it’s just a first step in your new career.
Despite the well-known saying that a good developer is orders of magnitude better than a not-so-good one, there is only so much salary increase that can be attached to an individual contributor developer’s position. So, eventually, you become too expensive for what you do – unless you start doing something else. That can be management, business, sales, or specialized consulting. In a technology-rich environment, you can also move along the tech path from developer to architect - if you feel that you have the level of devotion and acceptance of pure software technology at the high mark where a successful architect must be; get through those CS courses then.
Historically, the impact of marketing has been huge in the Software Industry. With tight competition and blurred differences between systems, choosing one over the others often becomes influenced by how much marketing push is behind it.
Sure, Software Selection in the professional environment is a multi-staged, managed, and controlled process that consists of criteria definition, evaluation, prototyping, results comparison, etc. Multiple factors are taken into consideration, including development resources cost and availability, level of maturity, support, and required infrastructure. An often huge deciding factor: ease of transition from the existing production system to the new one. In the end, the decision is made by the management, and then you have the entire development team working with the system, tool, and framework. Everyone and their brother conduct surveys these days – the boxes are checked off and the results come out: how many managers picked a particular system, times the size of their teams, whoever answered the survey. Here we go with the tool popularity contest ranking. The results are discussed by various authors in their posts and blogs; talking about the trends is a proven way to gain readership.
There is nothing wrong with reading about the trends. Just keep in mind that the saying “Past performance is no guarantee of future results,” known from the Investment Industry, is even more brutal in the Software one: “Every system will fall from its peak.” So place your bets carefully.
Same goes for hot job openings. Changing jobs often is quite acceptable in the industry these days – as long as the pattern shows meaningful progress and improvement. But chasing after cooler technologies and higher salaries very soon becomes chasing your own tail. So, don’t quit what you do when something else moves to the top of ranking reports. Think through, prepare a transition, and take the right chance when you see it. When you’re in the industry – the chances will be coming by.
You’ll figure it out in your particular situation, just like the millions of developers before you did, and those current ones are doing every day. The key to success is the same as when working towards your first software job: act professionally, put business ahead of technology, focus efforts on important things, control factors that influence your decision, manage your learning goals, and produce quality.
Act like a Software Professional.
Founder and CTO