9 key issues in a career as a developer
From birth to death, our path is filled with the 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 regarding their employment.
Whether you are a contract programmer, or a loyalist with enthusiastic eyes working in your booth, programming is teeming with ads, each of which excites with its own set of fad about the structure of his career. And for some this is a completely new area - after all, starting to work with computers is as simple 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 to be asked. This is the first step towards shaping your interests and skills.
1. How useful is certification?
An important issue for careerists is the usefulness of certificates. In the end, employers always want to determine if you know what you indicated in the resume, and technical companies are always ready to speak with their certification programs to help them.
These programs are aimed at teaching specific technologies, and then testing your competence in the learned material. They focus on practical application, rather than theoretical knowledge, as in most university courses. Thus, they turn to companies that want to test candidates for their ability to solve real problems.
The main question for developers is: "Is there a 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 problem. The real market of 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 these certifications and have proven 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 test trivial knowledge - testing usually takes place using questions previously driven into the database. I passed several exams to test knowledge 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 that won't help today - unless, of course, the company sticks to Windows XP to the very end. You can also be certified in product versions 1.0, 1.2, 1.4.
2. What is the true value of a diploma in computer science?
If it is difficult to determine whether a professional certificate is worth the certain technology of obtaining it, then it is almost impossible to assess the need to invest your resources in traditional higher education. One glance at leaders such 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 undergraduate diplomas, or even a master’s diploma, because this is an easy way to weed out heaps of resumes, or as an option 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 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 find the usual university curriculum too focused on theoretical questions of algorithms to be useful in work. Professors are more interested in determining how long algorithms work, which can be expressed in polynomial or exponential form.
Others believe that this abstract understanding of algorithms and data structures can greatly affect the quality of work when faced with new tasks. Languages come and go, and a deep understanding of the basics remains until we leave.
3. Do you need to specialize in one technology or be a specialist in a wide range?
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 designs that are firmly established in his subconscious.
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 have not been formulated before.
Developers usually hesitate when it comes to learning a new language. On the one hand, they like the promise of a new language to solve all old problems, but on the other hand, they are rational and skeptical about quirks. Improving technology can stretch for decades, and they have to choose wisely to avoid wasting time on a one-day language that no one else knows.
The best option for a developer is to be a specialist in a language that is rapidly gaining momentum. Before the release of iPhone, Objective-C was an endangered language that was used to write native Mac apps. And then everything changed, and the need for Objective-C grew rapidly. For each developer, choosing a new FooBar language that may disappear or become trendy is an adventurous decision.
4. Do you have to contribute to open source projects?
The classic stereotype around open source products is that they are made by cleanlings that turn your nose away from 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 benefit of working on open source projects is that you can share your code with a potential employer. There are no non-disclosure agreements or proprietary restrictions that prevent 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 are working well with other people and know how to contribute to the project you have 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 strenuously looking for developers who are part of a community built around open source projects that their stacks depend on. One manager at a strong server company told me that he cannot afford to hire Linus Torvalds, but he needs Linux experts. He oversaw the Linux project and hired people who knew Linus Torvalds. If mailing lists showed an 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 that 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 the proprietary path.
Usually, initiative programmers try to contribute to open source projects in the early stages. They can work with advanced open source projects in their free time simply because they are awesome. If the project turns into another Hadoop, Lucene or Linux, they get the opportunity to turn these experiments into a full-fledged work and, quite possibly, a long career.
5. How to get around aging?
What does every technical recruiter want? He wants a single 21-year-old graduate of the best institute of computer science, ready to work long hours and create wonderful things. What about a 22-year-old with one year of work experience? Oooh. Probably. May be. Are there still 21-year-olds?
One of the biggest, usually unspoken, rules of the programming world is that managers have a poor idea of what age an employee would be suitable for his work. And it is not a matter of willful discrimination, nor is it 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 a particularly competitive world of startups, where the attitude to the applicants is like in the national basketball league. If you are late in obtaining your diploma, then it is obvious that you are not suitable. In this world, those who spend long hours in the implementation of obsessions win. They love youth, and one can often 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 ate the dog at work with other developers. These are not slippery jobs in the startup world that the press is teeming with, but often well-paid and satisfying jobs.
The most savvy programmers learn to distinguish themselves from others. Some jobs require young insanely diligent people who will spend whole nights writing code, and older developers with young families usually do not apply for such places. Others require experienced creators, and young "rock stars" should not poke their nose into jobs where the boss wants to see a stable, not a flaming 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 living next to it. Good food and friendly neighbors are all that is needed at the moment.
But the question of finding your next job is very complicated when you cannot put all your property in a car in 10 minutes. If you have a family or other reason that makes the nomadic lifestyle difficult to impossible, you must think about long-term stability in the region before you get a job there.
Many Silicon Valley programmers are successfully moving from startup to startup. If one does not fire, another will form next minute. It is full of work in various companies, and this makes it easy to find a new company.
This may be the main reason that some companies have problems attracting talent to those regions where there is only one significant employer. If you move to Oregon or Washington and work does not work out, you may need to move again.
7. Is it possible to choose such an area in order to avoid a reduction in lack of demand?
Recently, many programmers began to specialize in partial layers. Someone becomes the genius of user interfaces and specializes in making user interfaces both simple and powerful. Others understand sharding and large amounts of data.
Career growth potential in a certain layer of the technology stack should always be considered carefully, due to the possibility of falling to the periphery. Some suggest that user interfaces are culturally dependent, and this prevents them from being extruded to the periphery. Others believe that it is better to choose the next big wave, such as large data warehouses, because the tide raises all boats.
While changes in IT are permanent, they cannot be practical and applicable to every wave. If you do not have a good aesthetic taste, you should not be the rock star of user interfaces. Also, it makes no sense to try to sell yourself as a genius of large amounts of data if you are confused in statistics. There is the upper edge of your career ladder, but there are other ways. Be players on the following trending technologies, and you may find your strengths.
8. Do you have to work for yourself?
One of the most common career dilemmas is whether to work on an ongoing basis or on a contract basis. Many companies, especially large ones, are happy to work with independent contractors, because it simplifies their long-term planning, this allows them to take on projects without incurring the anger of managers who think about the number of working mouths.
The biggest difference in practice is health insurance and retirement benefits. An independent contractor usually takes care of them himself. Some find it problematic, and some like the constancy 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 exactly you like to do. Typical employees often act as curators and responsible persons who maintain everything in working order. Independent contractors usually act as builders and solve problems as needed. These are not indisputable rules, but, for the most part, those who are nearby are burdened with maintaining everything in order.
For this reason, independent contractors are often free to choose specific technologies, while employees do not stop specializing in maintaining the company in working condition. Both of them can sell themselves as experts in Oracle, Microsoft or Lucene, but workers are the only ones who get the task to raise and launch the project, because the boss needs this until next Friday.
Depending on the culture of the employer, this can mean either extensive experimentation for regular employees, or an increased likelihood of using outdated software much longer than we would like.
9. Is there work 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’s easier to assume that programmers always work with technology.
A smart programmer should note that the choice of a non-technical specialty provides unique career opportunities. Nowadays, almost every company needs a computer-savvy employee and a strategy for creating computer systems. Salespeople need software to track leads. Warehouses need tracking software. More often than not, someone just needs to set up this software to fit the requirements of its 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, which means competition in the sea of low-paid programmers. But knowledge of two or more different areas cannot be massive, and it is difficult to replace.
Smart companies will often grow their techs in an area that is likely to be key in the future. A company with a large computerized repository will grow its experts, because the software development that the company will do in the future will become an integral part of its future strategy. Often, technical experts can play a key role in non-technical 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 with tech companies. But if you are naturally curious about the design of warehouses and you have always been a part of other areas outside of IT, understand that people who are with you on the computer are needed always and everywhere.