The manager of the developer of the billing has two ways to build a team. The first is to recruit ready-made "seniors" and continuously create such working conditions, so that they use the skills and experience to the maximum, develop and not fight over. The second is to create a team from a mix of newbies, "mints" and pros, so that they communicate, influence each other, learn and grow within the company. I am against the vicious circle a la "no experience - no work - no experience" and I see no problem in hiring a novice developer. Forward Telecom has a long-term internship program, which has become the springboard of a career for many working employees.
Now I’ll tell you how I see the development path of the developer of billing, and in what sequence I need to learn professional skills.
1. Learn the programming language
For starters - any. In priority of Java, Python and JavaScript, but Ruby, Go, C, C ++ are suitable for getting basic knowledge. How to learn? To take paid and free courses, I can advise training from Golang. If the level of English allows, to watch foreign videos is a good additional skill.

')
2. Understand OS concepts
Operating systems are based on seven components that you need to know and be able to explain the principle of operation:
- Process management;
- Threads and multithreaded code;
- Socket (program interface);
- I / O dispatch;
- Virtualization;
- Storage;
- File systems
I recommend going through a basic Linux administration course. Second operating systems on the queue: Windows and Unix.
3. Get used to the terminal
By analogy with a clean sheet phobia, there is a phobia of a blank black screen with a blinking cursor. You will have to overcome it in order to learn how to write good commands on the command line.
Be sure to know:
- Bash and KornShell;
- Commands find, grep, awk, sed, lsof;
- Network commands nslookup and netstat.

4. Network and security
Billing is closely related to the network and data protection requirements. You cannot write online services without understanding how the network works, so you need to learn the basic concepts and protocols: DNS, OSI model, HTTP, HTTPS, FTP, SSL, TLS. Then when you encounter the Connection Refused error, you will know what to do.
5. Servers
After studying the principles of information transfer in the network, you can get started with the basics of server operation. Start with web servers: IIS, Apache, Nginx, Caddy and Tomcat.
Next on the list:
- Reverse proxy server;
- Anonymous proxy;
- Caching;
- Load balancing;
- Firewall
6. Examine infrastructure as code
I believe that this stage is one of the most important. We'll have to sort out three broad topics:
- Containers: Docker and Kubernetes
- Configuration Management Tools: Ansible, Chef, Salt and Puppet
- Reservations: Terraform, clouds.
7. Examine CI / CD
Another useful skill for the billing developer is to be able to customize the pipeline for continuous integration and delivery. In the CI / CD area there are Jenkins tools, TeamCity, Drone, Circle CI and others. Spoiler: learning widely used Jenkins at first will be enough.
8. Control of software and infrastructure
The key goal is to understand the basics of monitoring applications. Tools in this area are divided into three groups:
- Infrastructure monitoring: Nagios, Icinga, Datadog, Zabbix, Monit.
- Application Performance Monitoring: AppDynanic, New Relic.
- LMS: ELK Stack, Graylog, Splunk, Papertrail.
9. Cloud services
In the near future, each application or software will have a cloud counterpart. Sooner or later, developers will encounter clouds, so read about popular cloud providers (AWS, Google Cloud and Azure) and the basics of technology.
10. Work with DB
All current projects use databases, and the experience of interaction with the DBMS and SQL will facilitate the start of work. Learn how to write SQL queries, use explain, and learn how the index works. The easiest way is to complete the course. You can also practice Postgres documentation skills, play around with replication.
11. Bleed soft skills
A point unexpectedly out of the general canvas, but no less important. For starters, be patient. You can quickly get used to situations like “repair an iron, a tyzhprogrammist”, but you need to be morally ready to launch new projects. If you are considered a junior in programming from zero to a year, get ready for criticism and learn to accept it, reviewing the code as a mentor is often a painful process. But at the same time, an obligatory skill is the ability to defend one's point of view and argue constructively, sometimes truth is born in a dispute. Developers never stop learning, the ceiling in the profession practically does not exist, so learning and the desire to learn new things are the basis of your development.

I am often asked when a novice reaches the level of middle, and when it is already possible to be proudly called the “seigneur”. I believe that the moment of transition from level to level is not determined by the number of years worked, although practical skills are a key criterion. As a matter of fact, software often determines the growth rate of a developer: a trained and hard-working novice can write quality code in several languages ​​and be able to work in a team in just a few months. A developer with 10 years of experience may be unable to solve non-standard tasks, manage a team and have one-sided skills.
So I see the development path of the developer of billing, so we are raising qualified specialists in our team Forward Telecom. It seems that I did not miss anything, but I am always grateful for the useful additions on the merits.