The labor market in IT is on increase in spite of the crisis, and senior developers are the most needed. Constant demand on the labor market, high level of salaries, really challenging and interesting tasks and respect from the colleagues in the industry are inherent parts of being senior. But what should you do to become one? How to become the best in your job and be proud of it? We have discussed these and several other questions with Noveo senior developers and now want to share with you 5 attributes of seniors and 20 most useful pieces of advice that will help you to become a senior developer.
What are essential attributes of senior developers?
- The capability to see the system “from above” and to have a wide look at the project. Each project is developed in order to reach some business purposes, and the sure sign of a senoir developer would be the capability to see not only modules and classes in a system, but these business porposes and real people - the users of the system. It is essential during the archicecture design phase.
- A high level of responsibility. The responsibility means not only making one’s job well, but the eagerness to take responsibility for the whole project: to see the possible issues and bottlenecks, optimize the system when possible, and inform managers about problems and possible solutions if the task is out of developer’s personal scope of works.
- Efficiency in getting out a message. It often happens that a senior developer is not only in charge of code writing, but also fulfills some team lead tasks. Besides that he is often responsible for task fulfillment control, training new developers in the team, code review, etc. All these tasks require certains social skills and the effeciency in getting out a message. It is not enough to know a good solution, it is necessary to explain it to the team.
- Knowledge of technology stack. It is absolutely necessary to follow the development of your technology stack in the constantly changing IT world. One should follow the updates, new functionalities and versions, be aware of optimal solutions for typical tasks, use them in code and recommend to the team.
- General knowledge, creativity and “being a humanities-minded person”. First of all it means a large scale of technical knowledge: languages, technologies, skills of project deployment and environment setup. But a senior developer (as well as the other developers) should remember that a machine knows nothing about beauty or usability, technologies have to adapt to the human limitations and imperfections. What benefits the development greatly is the capability to bring the experience from the real life, whether it is a hobby, a dedication or just a custom to learn something new, into implementation of a solution.
What should one do to become a senior?
- Write code. A lot of code: some things come only with practice. A variety of projects will serve well: the more different projects - the better. It is good to have experience in large projects, it is excellent to have skills of highload systems development. It must be owned that product companies developing one project for years don’t oblige developers to know a range of different things, they look for developers that are abreast of the project and their scope of work, but who know it very well. In companies like Noveo there are always different tasks and the possibility to try something that you have never done before, and here the knowledge of different languages and platforms becomes essential. “To each his own, but for me diversity is an advantage, as it gives a chance to learn something new without leaving a team” - told us one of our developers.
- Work in a strong team. One may grow professionally only in case he/she is trying to reach someone who is more clever and experienced. Note that it shouldn’t be Steve Jobs or Bjarne Stroustrup, but someone among your colleagues. Here comes the motivation not to let someone who trusts you down. If you are locked in your own mind, you can’t find new ideas and points of view and rapidly discover the most effectives solutions. It is necessary to discuss tasks and problems, to ask, to learn.
- Collect made-up solutions. The more made-up solutions for different problems and tasks you have, the more precious you are as a specialist, the more effectively you work.
- See a challenge in your tasks. A professional is not the one who fulfills only interesting tasks, it is the one who can make any task interesting.
- Teach. Teaching helps to set material in head and find leaks in one’s own knowledge. Replying to the students’ questions, you may come to thoughts, that would never come into your head without it. The necessity to explain your position develops communicative skills that are so essential for effective team work.
- Have a stack of reference resources. If you have a stack of reference resources, you won’t have to urgently look for information everywhere. It is impossible to know and remember everything, but you don’t need to, if only you know where you can find the information you need. Having collected a stack of reference resources (books, sites, forums) with nice materials on different technologies, you can several-fold speed up the development.
- Keep up-to-date in IT. Languages and technologies do constantly change, new versions and new approaches appear. A good developer should be around it long enough and be aware of all the latest events. There are different ways to do it - one may participate in conferences, pass trainings or master classes, communicate with people, and read dedicated forums. Each way has its own advantages and weaknesses, but the point is the same: it is necessary to know about all the latest changes.
- Make experiments. New ideas and approaches should be verified on practice - it is the only way to understand their worth. You should break something 10 times, before you build something. Though, it is better to do it not on the customer’s production server one day before the release. ;) But in general it can be very good to involve one’s creativity.
- Know hot keys amd make as much as possible using the keyboard. As well as optimize all the working processes in general. It is the same with touch typing. You will just make everything faster - sometimes several-fold faster.
- Know the tools well. IDE, debugger and work in the command line will be a great helping hand in increasing efficiency!
- If English is not you native language, learn it. It is useful for all developers, but it is a must-know for a senior, including speaking skills. There are a lot of reasons: from the fact that the majority of interesting articles, worthy conferences and books are in English to the fact that the letters and specifications on your project may be in English, and the customers who Noveo regularly contacts on conference calls may know no word in Russian.
- Be flexible. Senior developers must remember that everything changes and be ready to change their opinion. “If you were right a year ago, it doesn’t mean that you are right now”. It is necessary to be able to admit your own mistakes. It often happens that people don’t do that for fear of loosing authority, and this is not correct. It is necessary not only to be capable of eliminating the consequences of a mistake but also to admit that you were wrong.
- Relax. If you do the same thing all the time you just burn out. And on the other hand, if you get distracted, you work more effectively when back. It is the subject to all the developers. It is great to travel: it not only helps to enlarge general knowledge, but also to look on the customary things and questions from a different perspective. It is awesome to practice sports. In general all the hobbies are good.
- Not only to take, but to give away. Not only because it is just cool, but also seeking lucre - in order to check whether your code is good and useful for the other people. It may be an account with opensource code on GitHub or answers and recommendations on dedicated forums like StackOverflow.
And at last some things you should never do:
- Rest on your laurels. Even if you have achieved a lot.
- “You should never write hurry-scurry!”
- Be afraid of making mistakes. Alas, but except for the obvious cases it is possible to learn only from mistakes.
- Write code at home! Let your brains relax.
- Put a cup of tea or coffee near your working laptop! :)
- rm -rf /