Where do programmers start from?
According to an ideal scenario, a programmer starts his education in school already. Specialized mathematical education becomes a foundation and base of a programmer’s education. This is either information technology, mathematical education or physics. These are three big fields where one learns fundamental mathematical things, different theoretical concepts and what underlies a creation of program work logic.
A “Program Logic” is an algorithm which efficiency is a main driver influencing a program working speed. For example, there are algorithms that allow writing 10-line code which would work ten thousand time units. It’s possible to write a 5-line code which would solve the same problem a hundred times faster. Without fundamental higher technical education, it’s very difficult to know such algorithms and understand the models and mathematical apparatus to be used. Therefore it is very important for a programmer or a developer to have a higher specialized education:
Where do programmers start from in terms of real projects?
At present moment, the lion’s share of these projects is websites, namely website creation. Those who create websites are called web-developers. The people who do web-development start from creating simple websites. It means they are Juniors who can do small tasks without involving related complex systems, using various website builders. If a person did only web development, he, at best, is just a Junior.
What are web technologies?
Next level of development is a creation of more complex systems. For example, online education systems which use web technologies. Everything that a user sees in a browser is actually web technology. As a counter to them, there are so-called native applications working on a computer without a browser. For example, if you start Slack or Zoom on a computer, this is already a native client and not a web technology. However, if we dig deeper, these applications can use web technologies too. In other words, this is a program shell which uses a web interface.
For example, you can log in to Slack either through a browser or through an application. A program, an application, is necessary when a resource contains, for example, a lot of graphics. An application containing all graphical components is downloaded and stored in the computer, and occupies space. When we open a program, all graphics become available. But, for example, in online games, a program sends to the server the coordinates at minimum size, then takes from the local disk its own graphical components, and quickly processes them and displays them on the screen. Therefore, online games use web technologies only in data transferring.
Next step of a programmer’s development is realized by fulfilling more complex tasks. For example, a landing page which is visited by 50-70 people is one story, but a website which is simultaneously accessed by 1000 people is already another story, then you need to know how to work with a series of technologies under heavy load.
What should a Senior Developer be able to do?
- to work with technologies under heavy load
- to integrate a website with a complex database
- to create, not just a simple landing page, but a site with complex functionality and logic, working under a heavy load
For example, the online game developer has two issues during the process: the game site itself is a complex mechanism requiring high performance, while at the same time it must be able to work under heavy load when there are more than 1000 people using the resource. Therefore, a developer without mathematical and technical education will not be able to solve these problems. Moreover, a minimum of 5 years of experience of working in these fields is required.
What is the difference between developers of different levels?
The difference between web developers and programmers is that a programmer is a common definition, but a web developer is a particular case of a beginner programmer.
Senior, Middle and Junior programmers differ by the experience of working on complex wide scale projects.
A ”Middle Programmer” is a person who worked from 3 to 5 years on complex projects. A “Senior Developer” has from 5 to 7 years.
During this period, a Senior programmer has been working on several wide scale projects and on projects with different technological histories. While working in one project, a person acquires a quite specific experience of using a technology. During 5 to 7 years, a programmer has accomplished dozens of projects and has experienced different technologies including their pitfalls. He evaluated how a technology works in real time. He not only studied technical manuals, but saw a big number of discrepancies between theory and practice. Having acquired this real experience during 10-15 projects, a programmer can become a “Senior Programmer”.
As another distinctive high-level criteria, we can name the following:
- A Junior must know 50-70% of a theory; and during real working experience he may have used 25% of theoretical knowledge of technologies
- A Middle knows 80-90% of a theory, respectively, and he has experience of using about 50% of technologies which he knows from the theory
- A Senior knows 95-100% of a theory, at the same time, he understands the origin of the theory, knows application of fundamental concepts and their shortcomings. A Senior practiced about 75% of his knowledge.