Who is a programmer for? Tip to note

In the article I describe my opinion about priorities when choosing an employer for programmers. I indicated the size of the salary as the main factor, justifying this by the fact that this leaves more time for life. Next, I give my reasons why you shouldn’t get carried away with recycling. I continue the article with a look at the development of home projects, which, in my opinion, helps to keep up with the trends of the profession, and in addition, brings pleasure. I came to these thoughts after working as a full-time programmer for 8 years.


I encourage experienced people who know how to work and live to comment on my views and express their opinions on issues with which differences have been found. For those who have recently started their programming journey or have simply never thought about such things, I recommend not taking the article as a serious guide. I've written about my feelings on these issues in hopes that someone might find some helpful ideas if they're feeling discouraged as a programmer.

Priorities

When choosing a job, I set the following priorities for myself.

  1. The amount of cash income received. It's simple.
  2. Comfort of the work space. This is how convenient or inconvenient it can be what surrounds you at work: distance from home, people in the office, performance of the work computer, weather near the workplace, a surveillance camera on your monitor, your monitor facing the aisle, relationship with management, fines for being late and the like.
  3. Opportunity for your professional development. This includes the experience you gain on the job. This is learning technologies that are new to you, honing what you have previously learned, and acquiring new skills that are useful to you. Anything that makes you more experienced professionally.

Very little from this list can be learned in advance about the company before applying for a job. But given the order of priorities, you can easily compare your current job and another potential one, knowing the salary size. Sometimes you can sacrifice part of the second and third, for the sake of a good salary. Of course, this balance is different for everyone.


Some people are embarrassed to say it out loud, but money is the first and main factor in choosing a place to work. If you get paid well, you won't have to work extra hours and overtime, which means you'll have more time to enjoy life. My point of view is this: if you are a programmer with more than 3 years of experience, and you feel that you would like to get paid more, start achieving it without putting it off until later. Most likely, there is no reason for you not to receive more if possible.

How to increase your salary

There is an opinion that you can simply ask your management for this. It might work. But I suggest first finding out how much other employers are willing to pay you. If you do not have ready-made job offers, then you need to start looking for vacancies on your own. Consider options that are consistent with your experience and salary above your current one. Be prepared to do test assignments, Skype interviews or face-to-face interviews. Look at it as potential profit, don't wall yourself off with your ego.


Consider not only employers in your city, but also remote work. There are many articles about the disadvantages of remote work, but if you haven’t tried it yourself, then you can still consider such options. Remember that remote work does not necessarily mean working from home. With a programmer’s salary, you can rent an office or move into a coworking space.


You need to prepare for interviews. You can find a list of questions you might be asked online. Take the time to study them, think about the answers. The order of interviews is important. Start with the employer whose terms and conditions seem least attractive to you, then work your way up to make the potential new job more attractive. The point of this procedure is that it is much easier to fail at the first interviews. During your first interviews, you are likely to worry more, forget more, and act less confident. In addition, if you receive questions that you failed in one interview, you can study and answer them in subsequent ones. Thus, you will increase your chances of receiving an offer from the company that is most attractive to you.


If before an interview with a company it seems to you that you will definitely not go to work there, still take this interview seriously, because as a result, new details may be revealed that will make this employer more attractive. It is always worth remembering that you are choosing a new job, despite the fact that it all started with the goal of increasing your salary.


If you are starting to feel like you are taking the upcoming interview too seriously and are very worried because of this, then the advice is the opposite of the previous one: perceive the employer not as a potential one, but as simply a means of increasing your salary at your current job, knowing that if it doesn’t work out, then just nothing will change. But find the balance to come across as a professional and not a pushy guy with an inflated ego.


Once you receive an attractive job offer, do not silently leave your employer. Discuss the situation with the person making the decision to increase your salary. This is a very exciting moment; the first time you may not have enough determination. If you don't feel comfortable discussing these types of issues, you can try starting the discussion via email. But, most likely, you will still have to communicate by voice.


If you have no idea how to gain the courage to ask for a salary increase, then I suggest you the following. Start focusing on all the shortcomings of your current place of work: how you don’t like that someone is always heating fish during lunch, that the air conditioner is working right above your back, how you are enraged by the fine for being one minute late to work, how you tired of implementing features that no one really needs, how tired you are of the current stack of technologies used, how you haven’t learned something new for a long time. But most importantly, imagine that you could be making +X% money, but you're not getting it because of your employer. Do you like it when your employer keeps your money? No? Go ahead and talk to him about it. Just don’t go to work offended, do your job somehow, hoping that the manager will notice it and offer something. This is unprofessional.


If your manager denies you a promotion and lets you go, then it’s time to leave. How often can you ask for a raise? As long as you get offers that are significantly better than your current situation. But don't try to cheat, you should have a valid job offer after passing all the interviews.

Overtime work

A full-time job means you work 40 hours a week. If you are asked to work more than this, then remember that work already takes up about a third of your entire daily life. If you have nothing else in life besides work and sleep, then you can kill time with work. Otherwise, think about your priorities. Don't agree to work overtime if it doesn't pay enough. But even in this case, it may turn out that you simply do not have time to spend your salary. You may think that now you’ll save up for an apartment, then for a car, then for a family vacation, and then life will move on. But life is already moving on, and you are getting old. Try, after all, to start earning more for the same 40 hours a week, and not by overtime. Spend your free time doing things you enjoy and learning new things to keep up with trends in your profession.

Home Projects

There is a common opinion that goes something like this: “I already program all day, I don’t have the energy left to come home and develop a pet-project or commit to open source.” I understand that not everyone is a big fan of programming for the sake of the process, and for them the above opinion is true. But for some, I’ll assume the reason is that they simply haven’t tried to program anything interesting for themselves. Perhaps they simply didn’t think of something interesting that could be created, and perhaps they didn’t even try to think about it.



It may seem like you won't have time for this. But developing home projects has much more to do with creativity than your day job as a programmer. And there is an excellent comic about time for creativity. The point is that when you program for fun, you get into a rush that makes it hard to stop, even to eat or sleep. But remember that there are other interesting things in life besides programming, look for your balance.

The programming profession is relatively new, so there are few beaten paths in it. Specialists of this profile usually find their way to success through trial and error.

In what ways can they implement their accumulated experience?

Horizontal career as an executive programmer

The best choice for a geek is (that is, targeted training without changing job status). A programmer who constantly improves is a valuable employee.

He is unlikely to be offended when distributing the wage fund. He will become a worthy candidate for a place in some more reputable company, up to international organizations.

Tip to note:

It is unrealistic to be a generalist in IT. To quickly move horizontally, select specific direction(databases, C++, java, etc.) and try to become the best at it.

Promotion as an expert

Having reached a certain level, you will understand that you are ready to share your experience. At this stage, a new perspective opens up before you - self-realization in the role of a consultant.

You can consult both offline customers (for example, city firms that create a selling website for selling products) and clients from the virtual space. Good work of this kind will make a name for you, and this, in turn, will provide income.

Do you dream of becoming a respected expert? Don't focus on programming alone. Learn easily to communicate with people, competently and figuratively Express thoughts.

Management work

If you have grown to the level of an expert, but you do not want to register an individual entrepreneur, try to build a vertical career in a reputable company.

You will be tasked with planning and supervising the work of other specialists.

Essentially, you will be the boss. Therefore, develop in yourself leadership skills, learn to motivate people.

Own startup

Another career option—perhaps the most difficult—is bringing your own project to life (for example, launching some original paid service).

Startups succeed only for those programmers who have entrepreneurial spirit or find an experienced business partner.

Don’t immediately jump into a large project that requires a huge investment of money and time. First, try yourself in a business that will initially allow you to maintain your previous source of income.

Perhaps, after reading the article, you will begin to look for a vacancy. Take advantage of those published in our catalogue.


Looking around me, I think that it’s not very often, it seems to me, that people remain programmers for many, many years. Most often, they gradually move into managers over several years, at first still continuing to write code, but then more and more managerial responsibilities take up all the time. They often go to Product Management. Some, less often, in marketing. Many go into the world of startups and become their own businessmen - even if they continue to write code, this is already working for themselves. The reverse movement, from other professions to programmers, almost never happens in the middle of a career, only at the beginning (from mathematicians, physicists, engineers, just anyone else, if there is an inclination for this matter).

There are programmers over 50 in the foreseeable space, but they are quite few. How to explain why? - Is it because people mostly go into management and other professions? - or rather because the profession is still expanding very rapidly, and 30 years ago much fewer people studied to become programmers and entered the profession, so now there are few of them in the general mass? Probably both explanations are correct, but maybe one of them is much more important? Don't know.

I'm 37, and aside from a few teenage part-time jobs, I've been programming for a living for just over 20 years. Most of this time is in companies where I am not my own boss. Until now, I have consciously resisted the undercurrent that draws programmers into management for two reasons. I feel like I enjoy it less and I don't think I'll be very good at it. Until now I have not regretted this decision. But what will I do in another 20 years, assuming I'm alive, relatively healthy, and still working? Much can still change; but if I don’t specifically try and flutter, the law of inertia of life says that even at the age of 57 I will be pressing keys and entering keywords in a text editor at some company. Will there be good, interesting opportunities and projects for the 57-year-old me in the industry that it will be like in 20 years? Now in our industry, I repeat, there are programmers over 50, but there are quite a few of them...

A recent discussion on HN ("What happens to older developers?") sparked my thoughts on this, and while it didn't provide a concrete answer, it suggested many possibilities. The top comment there well sums up the different development options that I described above: become a manager, remain a programmer and deepen your skills, become a startup businessman, go into a completely different profession. There are a lot of people like me in the comments there who still prefer, all things being equal, to make money using keywords in the editor. Those over 50 write more often that as long as they maintain technical knowledge and keep up with the times, they do not have difficulty finding a job - although these are mostly American opinions, it may be different in other countries. But it's unclear how many remain who wanted the same thing but found it difficult to change jobs in old age, or that they found it difficult to accept the fact that everyone their age had surpassed them in the hierarchy, or that they were simply fed up.

Of course, only I can decide for myself whether I should “specially try and flutter,” or continue with keywords and editors. But I will be glad to know the opinion of programmers, current and current, who have retrained as building managers or who are striving for this, on this topic.

You should start your path to a career as a programmer by answering the question, do you need programming at all? This question does not apply to those who are studying or have studied in a specialty close to programming. If you were better at math at school than the humanities, if you like to spend a lot of time on the computer, if you want to learn something new, then programming is for you.

Where to begin

There are several options for the development of events, as a result of which a person becomes a programmer. The first is parents-programmers who taught their children everything. These children don't even need to go to university. The second option is the fashionable profession of a programmer. After school, we had to choose where to go to study, and we chose the fashionable field of IT, which we seemed to like. And the last option is a hobby that has grown into work.

If none of the above happened to you, then you have a choice of four options:

  • Self-education. This option can be used either independently or in combination with other methods. The Internet is full of applications that help you learn various programming languages ​​and technologies. But this is the most difficult path for beginners.
  • University. If you finish school and want to be a programmer, then go to university. If not for knowledge, then for the crust. It can serve as a bonus when applying for a job. Although you will also gain some knowledge. But don't forget to educate yourself. Choosing a university should be approached very responsibly. Carefully study the training programs and choose the best technical universities.
  • Mentor. It will be very good if you find a person who agrees to help you and point you in the right direction. He will suggest suitable books and resources, check your code, and give useful advice. By the way, we have already written about where you can find a mentor. You can look for a mentor among familiar programmers, at IT parties and conferences, on online forums, and so on.
  • Specialized practical courses. Try looking for courses in your city that will teach you some programming language or technology. I was pleasantly surprised by the number of such courses in Kyiv, including free ones and with subsequent employment.

Which language, technology and direction to choose

When you become a programmer, after a year or two you will be free to choose any language you like. But when choosing a first programming language, a beginner should consider the following criteria:

  • Availability of vacancies on the market. The ultimate goal of this path is to find a job as a programmer. And this will be difficult to do if no one is looking for developers in your programming language on the job market. Check job sites, see who is most sought after, write down a dozen languages. And move on to the next criterion.
  • Low entry level. If you have to spend a long time learning a language, it may discourage you from programming at all. Read about the languages ​​you selected above. Review the literature you will need to read to learn these languages. And choose those that are described as easy, or that seemed easy to you. Such languages ​​may be PHP, Ruby, Python.
  • The thrill of the process. If you don't enjoy writing code in your chosen language, you won't enjoy the process, your work, or your life. Do you need it? Make the right choices.

You will also have to decide on the direction of programming. Mobile, desktop, games, web, low-level programming and so on. The most popular and relatively easy industries are development for web, mobile and desktop clients. One language may be suitable for each direction and not another at all. That is, when choosing a programming language, it is also worth starting from this factor.

Either way, learn web technologies. This is HTML markup language, CSS styles and , which will make your page dynamic. The next step is to learn a server-side language (Python, PHP, Ruby and others) and web frameworks suitable for it. Study the databases: almost every programmer vacancy mentions this.

How to get initial experience

Without experience you won't get a job. Without work you won't get experience. A vicious circle of real life. But it’s okay, we’ll get out of it.

First, don't wait until you've read every book on your chosen programming language. Start writing your first lines of code after the second chapter of the book. Complete all the tasks from the books, retype the examples, understand them. Complicate the examples and tasks from books with your own ideas. Create your own tasks for the material you have covered. Solve these problems.

Secondly, you need to find your first projects. This is probably the most difficult option, but it works. You will have to look for orders yourself, fulfill them, and bother with payment. For a beginner, this is extremely difficult, but then all other options will seem like a piece of cake. Completed projects can be recorded as experience and shown to your future employer. Real projects are a big plus on your resume.

If you know English, it is better to register on English-language exchanges. The market is bigger there. If you don't know English, learn it. In the meantime, Russian-language freelance exchanges are available to you. Look for small projects that are at or just above your skill level. Apply for a couple dozen of these jobs. And get ready to receive a sea of ​​refusals. But if one or two applications come through, you'll have a chance to gain real experience.

Another good option for getting real experience is open source. Such projects always need new people, even beginners. You can search for bugs in the project or look in the bug tracker and suggest methods for solving them. You can easily find such projects on GitHub or . Feel free to ask questions there.

The fourth option for gaining experience is helping fellow programmers. Ask them to hand over small, simple tasks to you. If something doesn't work out, you will always have someone to turn to. And at the same time you will participate in a real project.

The last way is your own projects, various hackathons or working in a coworking space. It’s difficult to start your own projects on your own; it’s better to look for acquaintances or friends.

Why choose Python

Let's talk a little more about choosing your first programming language. The first language should be simple and popular in the market. Such a language is Python. I highly recommend choosing it as your first programming language.

The Python program code is readable. You don't even need to be a programmer to get a basic understanding of what's going on in a program. Due to Python's uncomplicated syntax, it will take you less time to write a program than, for example, in Java. A huge database of libraries that will save you a lot of effort, nerves and time. Python is a high-level language. This means you don’t have to think too much about memory cells and what to put there. Python is a general purpose language. And it's so simple that even children can learn it.

In fairness, it is worth mentioning other programming languages. Java could be a good choice for a beginner. This language is more popular than Python, but also a little more complex. But the development tools are much better developed. One has only to compare Eclipse and IDLE. After Java, it will be easier for you to move on to working with low-level programming languages.

PHP- another very popular language. And I think it's even simpler than Python. It is very easy to find a mentor or a solution to a problem on the forum. This is because there are a huge number of PHP programmers of different levels in the world. There is no normal import in PHP; there are many options for solving the same problem. And this complicates learning. And PHP is designed exclusively for the web.

Languages C And C# very difficult for a beginner. Ruby- a good choice as a second language, but not a first. JavaScript- a very simple language, but it won’t teach you anything good. But the task of the first programming language is still to teach you something correct, to set some kind of logic.

Is English important?

Important! Do not know? Teach. Do you know? Improve. Learn to read, write, listen and speak English. Focus on technical literature. Listen to English-language podcasts. Read English-language programming textbooks.

What you need to know besides the programming language

Of course, besides the programming language and English, you need to know something else. But what depends on the direction you choose. A web programmer must know HTML, CSS, JavaScript. A desktop programmer teaches operating system APIs and various frameworks. A mobile application developer learns Android, iOS or Windows Phone frameworks.

Everyone needs to learn algorithms. Try taking a course on Coursera or finding a book on algorithms that suits you. In addition, you need to know one of the databases, programming patterns, and data structures. It's also worth checking out code repositories. At least with one. Knowledge of version control systems is required. Choose Git, it's the most popular. You need to know the tools you're working with, the operating system, and the development environment. And the main skill of a programmer is to be able to Google. You won't live without this.

Last steps

You need to prepare a resume. Not just a resume, but a . You shouldn’t write there, but you also don’t need to remain silent about your skills. Once you are invited to an interview, you must prepare for it. Go through the material that is listed on your resume. You must be confident in your knowledge. Look through the projects you've worked on, think about the technologies you've used. And forward - to a bright future with a new profession as a programmer.

Think about your career. Photo: Udachnaya kimberlite pipe, Yakutia.

A bad programmer is one who does not strive to become a CIO. Ambition and desire for career heights usually go side by side with the desire to become an excellent professional in your field.

HR managers often list the possibility of career growth as one of the points when hiring a young specialist, and for most large IT companies, the prospects for a developer’s professional development are spelled out literally point by point. Such a plan reflects the main factors that should improve the employee’s performance for subsequent promotion to a higher position.

Let's consider a programmer's career path using the example of vertical movement, since this is the classic and most common path from trainee to manager. In addition, it is vertical growth that contributes to the fastest career advancement.

Trainee (Junior Developer)

Most programmers begin their careers with this first step. Among the main requirements for hiring:

Higher or incomplete technical education.
Knowledge of the basics of programming languages.

The first position of a young specialist does not involve participation in large projects: they are assigned the role of performing standard, typical tasks. At this stage, the developer has enough time to hone his skills and gain the maximum possible layer of knowledge to move forward. It will help you gain basic knowledge.

Software Developer

By the time of transition to this position, the programmer must at least:

Possess a specialist diploma (preferably a technical specialty, but not required).
Know everything about software engineering.
Proficient in several programming languages.
Have an understanding of database management systems, web services, OS.

At this stage, the employee’s responsibilities reach a completely different level - he is entrusted with the development and implementation of software, entrusted with working on new projects and maintaining existing ones.

HR managers emphasize that in the position of software developer it is important for an employee to prove himself not only as a specialist savvy in programming processes, but also as a sociable, non-conflict person. Further advancement up the career ladder involves closer contact with the team, employees of other departments, and heads of departments, so personal qualities are very important.

Lead Developer

Requirements for the applicant additionally include:

Experience in a large specialized company, from 2 years.
Participation in commercial corporate projects.

The range of professional tasks facing the lead developer includes the implementation of detailed design of components based on existing general specifications, as well as programming and initial testing of the component. Speaking about the prospects for further advancement, it is worth noting that leading developers who not only have potential, but also know how to organize the work of a group of people have a greater chance of moving further up the career ladder.

Head of Development Department (Team Leader)

All additional requirements for a candidate for this position are essentially limited to experience managing a development team consisting of at least two people and possession of management skills. The manager must know the basics of project management, be able to prepare effective, intelligent presentations and speak in front of an audience. He also needs the ability to delegate authority, identify problems and the most effective ways to solve them.

The main responsibilities, as a rule, include project administration and making design decisions, organizing team work, and solving all kinds of technical problems.

Project Manager

As practice shows, specialists with both management skills and knowledge in the field of development perform best in this position. But sometimes project managers become people who are far from the actual field of programming. Therefore, every ambitious developer at this stage has many competitors. Here it is important to prove yourself well and as an intelligent manager, who has enough non-trivial ideas in his bag.

Move on - in several directions: move to another, more interesting and large-scale project, develop as a development director, or become an IT director. The chosen path largely depends on the interests of the specialist and the area in which he seeks to prove himself.