📜 ⬆️ ⬇️

Notes junior programmer: how to get the first job

Not only am I in my time, but many of my friends and classmates are now seriously concerned about the question: I want to be a programmer, how do I get started?

The purpose of writing the article served not only self-doubt of my friends. I suspect that the number of people who are currently thinking on this very issue is large enough so that my first article in my life could help some plan with more than a couple of friends.
What is the problem? It is necessary to make a resume, throwing a couple of technologies in the “Professional skills” section that correspond to the desired job, send it to the vacancies and it seems like everything should work out. But there are pitfalls:

1) The quality of technical education. Despite the fact that my specialty is proudly called “Computer Science”, in 70% of the curriculum, knowledge in subjects is outdated, and the teachers are either just older people who have long since modern technology, or everything with a strengthening marasmus. And from this follows the problem of non-compliance with the requirements of the labor market of a student who wants to become a developer, but has gaps in understanding modern technologies. I'm sure not the only one who has encountered this.
')
2) Self-doubt and doubt. A novice developer is often elementary afraid to go for an interview, considering himself not even ready to try. He may misjudge the degree of his training. And finally, the same person sometimes knows only one way to get a job - for example, courses in a particular company. But the limited choice (the same courses have a set time frame, requirements, interviews) only give rise to unnecessary obstacles and doubts. The result - lost time.

3) The presence or receipt of a diploma is not a specialty. A good developer with a technical mindset may not necessarily be his education. But a self-taught programmer often does what he likes and how he sees himself. The absence of any systematic knowledge in his knowledge and gaps in the basics can be the causes of failures after the interview.

A little about myself: I am a fifth-year student, I started working from the middle of the third, immediately on full-time in the position of Automation QA. In the previous company, she worked almost a year and a half on two projects. Currently working as a junior java developer in Luxoft. Current experience with java: about 2 years.

In today's publication, I want to offer you a review of all the ways I know, the result of each of which can be the desired work by the developer (I will illustrate the proven in practice with examples). All the stories mentioned below are the courses of companies corresponding to Kiev, the stones in the garden to education - KPI, the faculty of computer science and computing (a particularly large boulder for my department).

1. Courses in a particular company.
Luxoft, Epam, Yandex, Global Logic - not the whole list of companies that invite to attend courses, internships and training centers. Many training classes are open at technical universities.
The advantages of this option are obvious:
• free education
• work with technologies demanded in the labor market on interesting real-world tasks
• subsequent employment in the same company
• in the case of a job change - an indispensable plus for other employers.
Unfortunately, no less cons:
• time limit for recruiting students (often either from the beginning of the school year or in the spring). For those who did not have time to wait and lose time.
• requirements for applicants. It is not profitable for companies to recruit people who are far from IT for courses, since it will take more time to train and enter real projects, which means more costs. Therefore, they prefer to cooperate with certain faculties of technical universities, and therefore less likely to get a person “from the side”.

2. Profile courses in educational centers
On this request, Google will helpfully prompt a lot of centers, schools and courses that are ready to make from any person Jobs (black.) Programmer. The main thing - the desire and a serious approach to employment.
Advantages of this option:
• training in specialties and technologies demanded in the IT market
• a high probability of employment at the end (I had three colleagues in a team who completed the same Java courses at different times. At the end of two, they invited to interview hr, and the third sent a resume). Later, these courses became a good help for one of them to work on a new project (in which, for example, knowing only ore but not HER, I had to figure out the campaign).
• recruit everyone willing and willing to learn
Minuses:
• they are not free. Often not available to students whose scholarship is 2 times less than the cost of a month of study there.
• not all courses are of the same quality. When choosing a center, be guided by the reviews of real people, and not by advertising and the sweet promises of guaranteed employment.

3. First job on the automation QA position
I will begin, perhaps, with my example, because this was my first job in IT. In general, I was sorely lacking practical knowledge and minimal experience to work as a developer, but they took a tester (simple questions about Java Core and networks). I got on a project in which the client testing process was written by the Automation QA Android team, which sent a lot of different requests to different resources for certain patterns. Our team also had its own framework with a bunch of utilities for analyzing logs, tcp dumps, device behavior, and I got my first virgin experience in writing my own utility for configuring ip-tables. And also an understanding of the OSI model, experience with a client-server application, and finally - a completed production-project, the presence of which helped in the subsequent job search. That is why I do not consider the work of automation to be something shameful, primitive or a bad step towards the work of a developer — before you say no, you need to have a good understanding of what it will be. On the second project in the same company I was given the task of covering the old functional unit-tests, allowed to refactor a little. The work is of course boring, but after a few months, fix tasks for uncomplicated bugs went. Thus, I gained experience with Unit testing (Powermock, Mockito) and the skill to quickly understand unfamiliar technologies (the same bug in JavaScript).

I will highlight the advantages of this option:
• with the right choice of the project - work and education in one bottle (no one interferes in parallel with communicating with the developers on their own project, receiving from them practical knowledge, reading and writing something in their spare time)
• money. Very motivated to grow professionally in working with the technologies you like. Well, I want to live not only on a scholarship.
• production experience (using Scrum, version control systems, task tracking systems (the same JIRA), etc.). At the university, I almost didn’t say anything like that (until the middle of the third year, for sure), something about Scrum was on the 4th, C Git met only this year (thanks to the teacher - Android developer). This is an advantage when looking for the next job and while performing tasks on it (when only a settled junior doesn’t have to re-create some kind of brunch in the panic at night, or look for how to change the commit because today is the end of the sprint, but with the same Git ' om or understanding scheduling tasks is a mess.
• experience with technologies that can then be profitably submitted and sold, considering the position of the developer. (For example, after my first project I have enough knowledge to claim a position on a project with client-server interaction)
Without the drawbacks, alas, no way:
• even in the case of deep immersion in programming for QA positions, then you need to sweat a lot in correctly drawing up a resume and presenting your experience in order to be invited to an interview for a developer position. I'm not saying that this is a hard and fast rule; read “this often happens” and not “this is a hard and fast rule”. And now a little illustrate. The first example is my colleague, Automation QA: with little effort I found a new job as a developer in a small office, where previous experience played no role. The second example is me. Indeed, this minus opened up to me with an unpleasant fact when looking for a job as a developer (they didn’t want to be invited to an interview), but I correctly compiled a CV (indicating the previous position, of course, but briefly describing all my respons on two projects and the general experience with Java). And I sent it everywhere where I found it, significantly increasing the chances of getting to as many interviews as possible.
• the risk of remaining a tester. Not too burdensome duties, the salary is not lower than that of the developer and the simple code is relaxing. In this case, think about what you want at all - a lot of money, interesting tasks, or not to do anything.

4. University training, educational projects, work in laboratories.
In universities there are plenty of opportunities to learn something, well looking. Like to make websites? Write \ rewrite \ support faculty or kaferalny site. Do you want to code for Android? Write your application, which he himself, as a student, would like to use. Look at the university laboratories and educational centers - this is the first experience. In a word, it is necessary to revise all possible options in its immediate habitat.
Pros:
• technical experience (in the case of the presence of a technically savvy manager, quality additional training)
• the ability to independently learn new things. My current Android development instructor made, as his thesis, an application for students of our university with a timetable, teachers, corpus map and university radio. Despite the incompetent manager in this matter, he figured out himself, and after passing the diploma he got a job with an Android developer without any problems.
Minuses:
• Be prepared for the fact that the responsibility for the project started will fall on your shoulders, and the teacher / manager may not be competent to help you technically, but very meticulous as a customer.
• forget about paying your labor (I hope you don’t need to explain why).

5. Open source projects
Here, each according to his abilities and preferences. Having chosen the project you like in one language or another, a great start is to add some simple functionality to it or update and fix an uncomplicated bug. This is an opportunity to work on a real project with experienced developers, getting feedback and knowledge from them. Reading someone else's code teaches not only to compile it in your head, but also to immediately find “bottlenecks” or incorrect implementation.
Pros: listed above :)
Minuses:
• this method of training can not be united, but only as an addition and consolidation of knowledge in practice.

6. Home preparation
This includes reading technical literature, online lessons, studying documentation, and finally targeted preparation for an interview. The best option for home preparation is the parallel maintenance of your own small project and reading literature. To come up with an application that you would use yourself, divided into tasks and every day for several hours to deal with them is not difficult. The main thing to start. And how to write - Google to help, the newcomer now there can find the answer to almost any problem that has arisen.
Quite a lot of advantages:
• reading books and documentation gives a good base not only for an interview, but also for future work
• the first project can and should be laid out in open access, criticism of others will show the bottlenecks and possible ways of change, refinement, improvement
• availability of a ready application (albeit small) - an argument for the employer and the opportunity for the interviewer to evaluate the practical experience of the applicant (big plus)
• ability to independently plan time and solve tasks (not every developer is able, alas)
Minuses:
• The first mistakes that will not be able to find a solution, and the absence of an experienced curator, can discourage the desire to continue at all. In this case, it is worth considering - and what can you even achieve in this life if you give up on a minor problem? Hmm, this is probably more plus.
• the absence of the curator may lead requirements, architecture or the implementation of the project in the “jungle”
7. Combination of the above.
Nobody forbids working Automation QA to attend courses in the evenings, or while studying and doing a project at a university, at home to cut tasks in an Open Source project and read books. The more effort you make, the more likely you are to get the job you want. I think that in any combination the pluses will be just all of the above options. The main disadvantage that I want to highlight here is the postponement of the job search “for later”. Constantly monitor the market, especially those vacancies that relate to the language or technology you are interested in. Periodically go to interviews in order to understand your real level and progress.

I admit that many of the above rules will have their exceptions. But, as you know, they only confirm the rules.

Source: https://habr.com/ru/post/240761/


All Articles