From birth until death, our path is filled with a choice of place and type of activity. Sometimes the world is good enough to allow us to influence our destiny. Due to the growing demand for their services, developers have something to discuss about their employment.
Whether you are a contract programmer, or a loyalist working in his booth with enthusiastic eyes, programming is teeming with ads, each of which worries with its own set of points about the structure of its career. And for some, this is a completely new area - after all, working with computers is as easy as scratching your fifth point.
')
The following nine points are key to building your career. Thinking about your own answers to these questions is more than just preparing for what they ask you. This is the first step to the formation of your interests and skills.
1. How useful is certification?
An important question for career developers is the usefulness of certificates. In the end, employers always want to determine if you know what they have indicated in the resume, and technical companies are always ready to come forward to meet with their certification programs to help them with this.
These programs are aimed at teaching specific technologies, and then testing your competence in the material learned. They focus on practical application, rather than on theoretical knowledge, as in most university courses. Thus, they turn to companies that want to test candidates for the ability to solve real problems.
The main question for developers is: “Is there real demand for a specific certificate?”. Most advanced technologies are too new and not standardized to be objectively verified, therefore employers are looking for other ways to solve their problems. The real market for certificates will always be based on basic tools, such as Oracle database service certificates or support for Microsoft servers. Companies that depend on Oracle or Microsoft usually pay more to those who have passed certification data and proved their competence. When your certification and employer demand match, everyone is happy.
But developers should carefully choose certificates. Preparation for exams takes considerable time, and questions usually check for trivial knowledge - testing usually takes place with the help of questions previously entered into the database. I passed several exams for testing in the field of Java, and thought: “Knowing these facts is not my concern, because there is Eclipse for this!”.
Also certificates usually have a limited scope. Being an expert in Windows XP was cool ten years ago, but it does not help today - if, of course, the company does not stick to Windows XP until the very end. You can also be certified in product versions 1.0, 1.2, 1.4.
2. What is the real value of a computer science diploma?
If it is difficult to determine whether a professional certificate is worth using its specific technology, it is almost impossible to assess the need to invest its resources in the traditional higher education. One glance at such leaders as Steve Jobs, Michael Dell, Bill Gates or Mark Zuckenberg, proves that a bachelor's degree is not a guarantee of the ability to change the world.
But traditions are hard to die. Some companies simply insist on bachelor's degrees, or even a master's degree, because this is an easy way to weed out a lot of resumes, or as one of the options to measure some intangible qualities: such as deep interest or extensive knowledge of working with computers. Whatever the reason, but many people continue to believe in the need for a diploma, so that developers, looking at the description of the necessary conditions for a vacancy, are faced with the dilemma of having to spend time and money on getting a diploma.
The practical value of higher education is controversial. Some consider the regular university timetable to be too focused on theoretical issues of algorithms to be useful in their work. Professors are more interested in determining the running time of algorithms, which can be expressed in a polynomial or exponential form.
Others believe that this abstract understanding of algorithms and data structures can greatly affect the quality of work when confronted with new tasks. Languages come and go, but a deep understanding of the basics remains until we leave.
3. Do you need to specialize in one technology or be a wide range of specialists?
A good programmer can program in any language, because languages are just constructions of the if-then-else type and reusable functions built into the language. But each developer has a favorite language and a set of idioms with common constructions that are firmly established in his subconscious.
The whole point is to choose the best language for the market. The most popular will be the languages that form the basis of large technological stacks: Java, C ++, PHP and JavaScript will always be a good choice.
But new languages will always be seductive. They not only solve problems that drive us crazy in old languages, but also offer new concepts that were not previously formulated.
Developers usually doubt when it comes to learning a new language. On the one hand, they like the promise of a new language to solve all the old problems, but on the other hand they are wise and skeptical about quirks. Improving technology can last for decades, and they have to choose deliberately to avoid wasting time on a one-day language that no one else knows.
The best option for a developer is to be an expert in a language that is rapidly gaining momentum. Before the release of the iPhone, Objective-C was an endangered language that was used to write native Mac applications. And then everything changed, and the need for Objective-C has grown rapidly. For each developer, choosing a new FooBar language that may disappear or become trendy is an adventurous decision.
4. Should you contribute to open source projects?
The classic stereotype around open source products is that they are made by cleaners who turn up their nose for money. This stereotype is quickly dispelled when people realize that gaining experience with good open source projects can be a valuable business card or even the beginning of a new career.
The most obvious advantage of working on open source projects is that you can share your code with a potential employer. There are no nondisclosure agreements or proprietary restrictions that keep you from sending your piece of the project and the phrase: “I wrote it.” Anyone can take a look at it. If you have received the status of a member (committer), this already shows that you work well with other people and know how to contribute to the project started. These are important skills that developers should always improve.
Many of the most popular open source projects are now part of corporate stacks, so companies are intensely looking for developers who are part of a community built around open source projects on which their stacks depend. One manager at a strong server company told me that he cannot afford to hire Linus Torvalds, but he needs experts in Linux. He oversaw the Linux project and hired people who knew Linus Torvalds. If mailing lists showed interaction between Torvalds and the developer, the manager picked up the phone.
Many open source projects require support, and the provision of this can be a side job, which leads to career growth and permanent employment. Companies often find it cheaper to adapt open source technology and hire a few consultants to support to do all the work than to go proprietary.
Usually, initiative programmers try to make contributions to open source projects in the early stages. They can work with advanced open source projects in their free time simply because they are great. If the project turns into Hadoop, Lucene or Linux, they are able to turn these experiments into a full-fledged work and, quite possibly, a long career.
5. How to bypass aging?
What does every technical recruiter want? He wants a single 21-year-old graduate of the best computer science institute who is ready to work long hours and create wonderful things. What about a 22-year-old with one year of work experience? Yy yy Probably. May be. Are there still 21-year-olds left?
One of the biggest, usually non-public, rules of the programming world is that managers have little idea of what age an employee would be suitable for his work. And it's not about deliberate discrimination, and not that people change when they get older. But they still think so. So everyone clings to stereotypes, even if they are illegal.
Most often this is noticeable in the particularly competitive world of start-ups, where the attitude towards applicants is like in a national basketball league. If you are late in obtaining your diploma, it is obvious that you are not suitable. In this world, win those who spend long hours in the implementation of obsessive ideas. They love youth, and it is not uncommon to hear that the venture capitalist has swept aside someone who is at least twenty with a penny.
The good news for developers is that some employers prefer older, more experienced people who have eaten a dog at work with other developers. These are not slippery jobs in the world of startups that the press is infested with, but often well-paid and satisfying jobs.
Most savvy programmers learn to distinguish themselves from others. Some vacancies require young insanely diligent people who will spend whole nights in writing code, and older developers with young families usually do not claim such places. Others require experienced creators, and young “rock stars” shouldn’t stick their nose in a job where the boss wants to see a stable, not a glowing and amazing person.
6. How important is the location?
If you are young and want to put all your things in the trunk of a car and move on, the only thing that matters to you at the place of work is whether you like to live near her. Good food and friendly neighbors - that's all you need at the moment.
But the question of finding your next job is very difficult when you can’t put all your belongings in a car in 10 minutes. If you have a family or another reason that makes a nomadic way of life difficult to impossibility, you must think about the long-term stability in the region before being employed there.
Many programmers in Silicon Valley are successfully moving from a startup to a startup. If it does not fire one, another will form next minute. It is full of jobs in various firms, and it makes it easy to find a new company.
This may be the main reason that some companies have problems attracting talent to regions where there is only one significant employer. If you move to Oregon or Washington and the job does not work out, you may need to move again.
7. Is it possible to choose such an area in order to avoid reductions due to lack of demand?
Recently, many programmers have begun to specialize in partial layers. Someone becomes a genius of user interfaces and specializes in making user interfaces simple and powerful at the same time. Others understand sharding and large amounts of data.
The growth potential of a career in a certain layer of the technology stack should always be considered carefully, due to the possibility of falling to the periphery. Some have suggested that user interfaces are culturally dependent, and this prevents them from being squeezed onto the periphery. Others believe that it is better to choose the next big wave, such as a large data warehouse, because the tide raises all the boats.
While changes in IT are constant, they cannot be practical and applicable to each wave. If you do not have a good aesthetic taste, you should not be a rock star of user interfaces. It also makes no sense to try to sell yourself as a genius of large amounts of data if you are confused in statistics. There is a top edge of your career ladder, but there are other ways. Be the players on the following trend technologies, and maybe you will find your strengths.
8. Should you work for yourself?
One of the most common career dilemmas - whether to work on a full-time basis or under contract? Many companies, especially from among large ones, are happy to work with independent contractors, because it simplifies their long-term planning, it allows them to take on projects without arousing the ire of managers who think about the number of working companies.
In practice, the biggest difference is health insurance and pension benefits. An independent contractor usually takes care of them himself. Some find this problematic, and some like the consistency they get by maintaining the same independent health insurance and retirement plan when they choose contracts and take care of them themselves.
Another big difference is what you like to do. Typical workers often act as curators and decision makers who keep everything in working order. Independent contractors usually act as builders, and solve problems as they are needed. These are not indisputable rules, but, for the most part, those who are nearby are burdened with supporting everything in order.
For this reason, independent contractors are often free to select specific technologies, while employees do not cease to specialize in maintaining the company in working condition. Both those and others may sell themselves as experts in Oracle, Microsoft or Lucene, but employees are the only ones who receive the task to raise and run the project, because the boss needs it until next Friday.
Depending on the employer's culture, this may mean either extensive experimentation for permanent employees, or an increased likelihood of using outdated software for much longer than we would like.
9. Is there a job outside the field of computer technology?
Most programmers often forget that there is a lot of work for programmers in companies that have little to do with technology. It is easier to assume that programmers always work with technology.
A smart programmer should note that choosing a non-technical specialty provides unique career opportunities. Currently, almost every company needs a computer savvy worker and a strategy for building computer systems. Salespeople need software to track potential customers. Warehouses need software to track goods. More often than not, someone just needs to configure this software to fit the requirements of their subject area.
Understanding the subject area and technology of the company is one of the best defenses against outsourcing. Knowledge of many popular tools often becomes widespread, and this means competition in the sea of low-paid programmers. But knowledge of two or more different spheres can not be massive, and it is difficult to replace.
Smart companies will often grow their technical specialists in an area that is likely to be key in the future. A company with a large computerized repository will grow its experts, because software development, which the company will make in the future, will become an integral part of its future strategy. Often, technicians can play a key role in non-tech companies.
The key question is how well you can study the subject area, whatever it may be. If you just want to talk about pointers and data structures, stay in tech companies. But if you are naturally curious about designing warehouses and you have always been a part of other areas outside of IT, understand that people who are with a computer are not always needed everywhere.