Ah, the IT industry in the early twenties of the 21st century. The pay is at least decent in most places in the world, and outright amazing if you live outside the richest countries on the planet. And you can work from home, just sitting in front of the computer! Who wouldn’t want that, right?
And indeed, I’d be hard-pressed to find any significant problems. I won’t lie to you – as a workforce, we’re currently likely the most spoiled group there is. And it’ll stay this way as long as the demand far outpaces the supply of skilled programmes. This job is definitely not something everyone would enjoy, but if you happen to have the right mindset and are willing to hone up on some specific skills, you might be able to begin enjoying all those perks too! So, what will it take?
The mindset
At its most basic programming is the generation, handling and maintenance of logic structures. The silicon in our computers speaks a very primitive language, and over the decades we’ve refined our tools to the point where most programming languages read a bit like human language. You’re still, however, often dealing with very abstract concepts, using tools that evolve each month, and often find yourself banging your head against a wall for days until a breakthrough finally shows up.
It also has to be mentioned that programming is for the most part a team effort. Cooperation, coordination, communication and helpfulness are critical to success in any development project.
So, who thrives in such scenarios? In my personal experience it’s those who exhibit the following traits, in:
- loving logic puzzles
- liking learning and doing it mostly on their own
- preferring cooperation to competition, at least at a team level
If these describe you, then congratulations, this might be the job for you! We’re not quite done, though.
The education
‘Now, don’t I need a very specific education?’ you might ask. Frankly, no. Despite what some of the offers you might have seen could have led you to believe, for many sectors of the IT industry the kind of education you’ve completed matters very little. Much like no one will give much thought to where you learned to speak English, so long as you actually can. Education definitely does help. You’ll not just be taught at least some relevant skills, but you are likely to be immersed in the industry already and find your first job through connections or cooperation programs.
How to start in IT then?
If education is not that necessary, how do you learn the skills? Well, the good news is that all of the resources you need are available online, and a staggering number of them are free! A strong foundation in computer science is essential for success in IT. This includes knowledge of algorithms, data structures, programming languages, computer systems and the proper tools. The downside though is that you have to learn all these basics on your own. And the worse news is that over the last few years the entry bar has generally moved higher up. You also need to consider which direction appeals to you the most. How to start in IT, when the field is vast and includes a wide range of technologies and skills. Consider focusing on a specific area, such as web development, data science, or cybersecurity, and learn as much as you can about the technologies and skills related to that area. Among the more popular ones these days we can discern:
- Web development, divided into sub-specializations:
- Front-end – dealing with everything you see happening in your web browser, requires more aesthetic related skills than most other specialisations. Evolves somewhat more quickly too.
- Back-end – the server side of the web stack. There is far more variability in terms of language used, more focus on the data flow and structure. Interacts with both front-end and databases. These days it often includes handling of databases themselves too, even though for a long time it was a separate discipline
- Mobile development – more or less divided into Android/iOS environments. Depending on the nature of the application it can be more like desktop or more like front-end development
- Desktop Native – creating applications specifically for Windows/macOS/Linux
- GameDev – a very wide sector that captures the imagination of many of us. Spans physics, scripting, 2d/3d, sound and more. Stable work tends to be more difficult to find and reported conditions are usually not as cozy as in regular software development
- Testing
- manual – find a way to break an application, report your findings. For the most part actual programming is not necessary
- automated – same, but create a suite of tests that can check the application automatically. Programming knowledge definitely necessary
- Data Science and Machine learning – relatively new fields in commercial software (or rather ones expanding only recently). Might be a more difficult point of entry without a decent understanding of statistics and probability
Note: there are more specialisations key to the IT industry that do not necessarily depend on programming skills themselves, such as UI/UX, DevOps, Business Analysis, Scrum masters, etc, etc…. They are outside the scope of this article, but they might actually be a better fit for you.
The Internet is chock-full of the resources you need in order to prepare. The paid courses on sites like Pluralsight or Udemy tend to be longer, more structured than the free ones available on YouTube for instance, but that doesn’t necessarily mean they’re significantly better. Each specialization will require you to learn different skills and technologies, even if they share some basics. There might be some overlap between them too.
Gain practical experience
In addition to theoretical knowledge, it’s important to have hands-on experience working with computers and technology. Consider internships, part-time jobs, or freelance projects to gain practical experience and build your portfolio.
So, you’ve officially started in IT, selected your path, devoured dozens or hundreds of hours of courses and tutorials, read up on some documentation and even done some practice with your coding. Off to the interviews then, right? Hardly, I’m afraid. There are more junior/intern applicants than available positions (the demand is significantly higher on the mid/senior side) and as such you need to get yourself noticed in the initial parts of the recruitment process. This is more or less how companies tend to handle sourcing candidates:
- HR/Recruitment agencies scour the internet for candidates that tick the broad-stroke boxes of the position they’re looking to fill (known technologies, years of experience, availability, skills) and/or they use the CVs that the candidates sent over themselves through application forms
- The CVs are sent over to the developers who can assess them more deeply for the technical skills side and give a go/no go signal for each of them
- The selected candidates are contacted and an in-depth interview is scheduled
- A winner is selected and an offer is made
For a person with no experience, this first step might be the wall most difficult to cross. There is, however, something you can do to show that you know what you’re doing despite any lack of formal experience. In a prominent place in your resume, you should link to your own code available in a public repository, such as GitHub.
The project
It is your best bet to get yourself noticed. It doesn’t take long for the developers to look through the codebase and judge its general quality. In the absence of work experience, it’s really the only way for them to gauge your skill level before the interview. For junior positions (where there are now more candidates per position than elsewhere) it can be a very useful tool even if you already have prior experience. The key things the developers look for in such a project would be:
- how well is the code organised – make sure it’s easy to understand what each file and function does,
- which technologies are used – there’s no need to go overboard and use everything, but a demonstration of correctly used current libs/approaches will go a long way,
- a touch of something clever – not even necessarily at the code level. If your mini project does something clever it’ll definitely be noticed.
If you want to start in IT, great idea is to collect your own strong portfolio with your projects. Start by building small projects and adding them to your portfolio as you progress. This will help you to demonstrate your abilities to potential employers and clients.
The interview(s)
So your project was a hit and it landed you a few interviews. What to expect there? Junior position interviews often focus on the basics of code, and familiarity with the most fundamental technologies. Live coding is often practiced, so be prepared for writing during the interview. The exercises are rarely complex, but they’re often tricky. On front-end interviews for instance you’ll often see questions about what specific code will output – with the caveat that the code will focus on javascript-specific weirdness that you frankly rarely encounter. The usefulness of such tests aside, you need to be prepared for them. Fortunately the internet is full of sample interview coding tests to help you prepare. It’s also helpful to get familiarized with basic algorithms and principles. HackerRank is a great place to practice general coding problems in a language of your choice. DRY, SOLID, Time Complexity are concepts you should have a basic understanding of.
The interviewers are likely to ask a few questions outside of programming to get to know you better. As I mentioned before – development is a team effort and many companies, having recognized that, try to find people that would mesh well with the ones they already have. You can expect questions about your preferred work style, how you handle conflicts, or even your hobbies.
Don’t forget though – the interview is a two way street. You also have to decide if the company is right for you. Of course, when you’re just starting out you can’t yet know how to judge if a place is a good fit for you and you aren’t in a position to be very picky. There are some things that useful to learn about your potential employer though:
- What is their approach to teaching junior devs – Do they have a mentorship program? Are there going to be senior developers available to you for consults?
- Is there time and money allotted for conferences/workshops? – They are a great way to learn about new avenues and connect with other professionals
- How does advancement look? – Is your skill progression going to be monitored and cultivated and do you have a say in it?
- How are they going to gauge if you’ve reached a mid level?
Conclusion
The easy days for entry and start in IT are mostly over. In order to land your first job without experience and education you are going to have to put in a lot of work, study and practice. Entering the field of IT can be a rewarding and exciting career choice, as it offers a wide range of job opportunities and the chance to work with cutting-edge technologies. It is quite doable, however, and the career you’d open might be well worth it. I’m going to keep my fingers crossed for you!