Silicon Valley-related movies attract hundreds of passionate young men and women to the coding world, dreaming of becoming the next Bill Gates, Steve Jobs, or Mark Zuckerberg. But what about this fantasy is real and how can you achieve these dreams? Well, this article is precisely about this subject.
It is very easy to enter the world of clichés and we often have a preconceived vision of the profession of our neighbors, and before knowing how to become a developer, a small personal and evocative definition of this beautiful profession is welcomed. Programming could be ideally defined as: “Learn and understand the world around us to create, almost magically, endless possibilities”.
More concretely, we can draw a simple parallel with cooking, an example specially conceived for the gourmets among you.
The good news is that anyone can cook, you can create an app, a website, and much more.
Millions of people, just like you, can cook a good meal. Do you want to know how? Well, all you need to cook food or to code and therefore make people happy is:
- Ingredients (quality if possible): An explanation of the subject on which to work (specifications) and of the data (also of quality if possible).
- A cooking recipe: all the rules to follow (specifications) so that the application does exactly what is expected of it.
- A place to cook: the development environment
- Kitchen equipment: design tools, tools for consulting data, “libraries” and “framework”, test tools, deployment tools, etc.
- A room to receive people who are going to taste: Your mobile phone, your internet browser, your car, your household appliances, etc.
- And well, even the best chef makes mistakes from time to time so the bugs are a bit like fish bones in your meal: the important thing is that the cooker did his best and he will be prepared to work on his mistakes to improve every day.
You have understood, if we change the terms a little, we remain on the same principles.
The ways of working can vary as in the kitchen, you can cook for yourself and your friends, be a “home chef” or be part of a team of cooks where you have to prepare meals for 200 people.
Sometimes generalist, sometimes specialized, the job of a developer is as exciting as it can be varied, with the pleasure of creating and offering.
What can I work for if I become a developer?
To develop is to process information to meet a real-world need. Then, there are billions of subjects and needs of real people, out there, that haven’t been covered yet so, does it mean that a developer must know a lot about everything? Let us take a few examples in which there are computer programs created by developers:
- Medical imaging
- Research in mining geology
- The music
- Finding love, etc.
Luckily, there are several answers, but in all cases, the applications created are based on “business areas”, that is, the real-world subjects on which the data to be processed is based.
The developer can work for him (small personal programs) but he can also evolve into a “brigade” (large projects, often large companies or collaborative “open source” projects).
Depending on the project, you could be an orchestra man who knows some about each instrument and therefore can guide everyone’s effort to create a masterpiece. Anyway, you could also be a musician who cares only about the technique and who focuses all his energies on mastering his instrument to become the best on it. In the end, you cannot play all the instruments at the same time that’s why the work is divided into different professions (business / functional expert, head of the project, technical expert, developer, designer, tester, etc.).
The good news is that depending on your desires, tastes, and skills, you can focus only on technique, or even go as far as meeting the client to support them in their needs. Over time, it is even possible to pivot on other areas you had never imagined reaching. The world is full of possibilities for you!
How is the daily routine of a developer?
The extreme sedentary case. You work for a company that wants you to be there because it pays your services “for the whole shift” to develop a project over several months. The application on which you work is critical and your workstation is secure, you do not have the right to take the work with you at home at night, and you have signed a non-disclosure of data clause, which can send you to prison, and so on.
The extreme nomad case. You work on your own for several clients or missions. You are in complete autonomy on the project, or you are part of a team made up of a client with several providers who have set up collaboration/sharing tools that allow everyone to work, as if everyone was in the same room.
Between these two worlds there are of course several variations, but why not choose the ones you want and orient your choices according to your own life goals?
Well, independently of your final decision of life, let us try to take the most standard routine because not everyone is developing in a blockhouse or sipping a cocktail on a bar terrace.
Most of the time the day starts at 9:00 a.m. and ends at 6:00 p.m., it is often possible to adjust your schedules to start a little earlier and leave a little earlier, priority being given to respecting the schedules and the necessary joint meetings to the team in place.
And what is the typical week like? If you open your mind a little bit, it is more relevant to talk about a typical week, because development will not necessarily be the developer’s only activity. There will therefore be meetings that will depend on the project methodology used (V cycle, agile methods, etc.). It is important to have feedback on each person’s progress, to have a global vision of the project, to discuss the difficulties together, and to be able to respond to them. A sense of belonging is important, as well as helping each other. Knowing where to find oneself also makes it possible to answer the famous question of what “remains to be done”.
This last question is extremely important since the developer must be able to estimate how much time it will spend to develop a feature. It is a difficult task. This is why the project manager must continually ensure that the “estimated” tasks do not drift and plan for the necessary actions as soon as possible (plan a code review by a more experienced developer to help the beginners progress faster or, if necessary, put them to work together temporarily on a complex issue, find simplifications if the imagined implementation is too complex, or renegotiate the need with the client to achieve the objective on time / on budget, etc.).
How will your successes as a developer will be measured?
The developer must rely on specifications to achieve the functionalities requested of him. These are generally documented in Word format, written by a “business” analyst who translates the needs expressed by the customer (specifications, expression of need, email, etc.) into functionalities. The document must explain how these features will be implemented and will work with each other (the input screens, the rules to follow when the user performs certain actions, the rules to follow in the event of an error, etc.)
Depending on the project (this is often the size of the project) the developer may make the specifications. Sometimes they do not exist, and the developer implements feature directly from an email. Without being an expert, it is easy to imagine the following: What would happen if we built a house without a plan? Not to mention the day when the developer is no longer there, and others must work on the house. Then planning is the first step, but there is still too much to be done.
When writing your code, testing is essential. You must make sure that the features will fit together in the end bug-free. Therefore, it is important to test your work as the software is built. In the building, once the foundations have been completed, the concrete is tested by an inspection body to ensure that the foundations will comply. Well, in I.T., it is the same!
Another part of the week could be dedicated to “delivery”. This consists of making a version of the application available, often on an integration environment, then on a production environment. Take the case of a train, say their design. It is more reassuring than after the design, the Amtrak tested the train, up to its limits on a track closed to the public, in complete safety before sending it at 300 km / h on the public rails.
Last part of your professional development: training or self-training. Either in the form of sessions, or a little every day or every week, training is an important point in the life of a developer. Changes are surprisingly and market demands are constantly evolving (developer profile in tension, specializations that appear). Keeping abreast of trends and training in certain areas allows you to keep a CV up to date and evolve.
How much money will you make as a developer?
We will use the building analogy again. A developer can be a generalist and design and build a house from A to Z. They can also be more specialized. Some will do what is “visible”: the framework, the walls, the painting, etc., and others what is invisible: the water and drainage networks, the foundations, the insulation, etc.
Like any profession, the experience will come into play, but also the place from which you work. Salaries in Silicon Valley are higher than in Saskatchewan compared to the cost of living. It is therefore interesting to hire a developer living in rural communities or smaller cities who has expertise in a specific subject and work remotely with them. It is a win/win because the company has a motivating resource to work from home, without traffic jams and benefits from skills at a lower cost. Of course, the organization of the project must allow It, but it is possible!
Be careful with the numbers you will find on the Internet; it happens that IT companies publish offers that do not exist. They do this for several reasons (this is a personal analysis, to be challenged of course):
- Constantly update a “pool” of profiles ready to respond, to tap into it when a project arrives (you must be able to set up teams quickly). This makes it possible to build an up-to-date internal CV-library.
- Maintain an active corporate image, with frequent offers demonstrating attraction to listening candidates (feeling that the company is only growing and recruiting)
It can be good to have this scheme in mind, to be vigilant about the environment in which you want to operate (it is often the large groups that keep pools up to date). Please note this is not a generality, but it may influence the official figures and the “computer shortage”. There is a strong demand, to be sure, but it is not the door open to all windows either!
The last point to think about, the working environment, if you are employed in a specialized company or independent (freelance) things can be radically different (they are not the same charges)! You also need to know how to consider the time spent “producing” and the time spent training and looking for assignments/clients. So, anticipate!
How much you earn as a developer depends extensively on two main variables: your experience and your specialization. For instance, we can find the next data about developer’s salary:
- Beginner: $50,000/year
- Late-career developer: $85,000/year
- Entry-level data scientist: $90,000/year
- Cybersecurity engineers: $95,000/year
- Network engineers: $72,000/year
- Web developers: $60,000/year
The most valuable software developer skills in 2020 https://t.co/95GzEwJRJL pic.twitter.com/JkjGLLuaZ8
— Thequantumtech (@Thequantumtech1) October 8, 2020