Fury Road: The Billing Developer Journey

The manager of a billing development company 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 their skills and experience to the maximum, develop and do not fight. The second is to create a team from a mix of newbies, mids 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 do not see a problem in hiring a novice developer. Forward Telecom has long had an internship program that has become a career springboard for many working employees.

Now I’ll tell you how I see the development path of a billing developer, and in what sequence you need to master professional skills.

1. Learn a programming language

For starters, anyone. The priority is Java, Python and JavaScript, but Ruby, Go, C, C ++ are suitable for obtaining basic knowledge. How to teach? Take paid and free courses, I can advise training from Golang. If the level of English allows, watching foreign videos is a good additional skill.

Fury Road: The Billing Developer Journey

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 (software interface);
  • I/O scheduling;
  • virtualization;
  • Storage;
  • file systems.

I recommend taking a basic Linux administration course. The second OS in line: Windows and Unix.

3. Get used to the terminal

By analogy with the phobia of a blank slate, there is a phobia of a blank black screen with a blinking cursor. You have to overcome it in order to learn how to write good commands on the command line.
Must know:

  • Bash and KornShell shells;
  • Find, grep, awk, sed, lsof commands;
  • Network commands nslookup and netstat.

Fury Road: The Billing Developer Journey

4. Network and security

Billing is closely related to 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 a Connection Refused error, you will know what to do.

5. Servers

After studying the principles of information transfer in a network, you can proceed to the basics of how servers work. Start with web servers: IIS, Apache, Nginx, Caddy and Tomcat.

Further down the list:

  • Reverse proxy;
  • Anonymous proxy;
  • caching;
  • Load balancing;
  • Firewall.

6. Learn infrastructure as code

I think that this stage is one of the most important. You will have to deal with three broad topics:

  • Containers: Docker and Kubernetes
  • Configuration management tools: Ansible, Chef, Salt and Puppet
  • Redundancy: Terraform, clouds.

7. Learn CI/CD

Another useful skill for a billing developer is to be able to set up a pipeline for continuous integration and delivery. The CI/CD area has Jenkins, TeamCity, Drone, Circle CI and more tools. Spoiler: learning about the widely used Jenkins will suffice at first.

8. Control of software and infrastructure

The key goal is to understand the basics of application monitoring. 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, every application or software will have a cloud counterpart. Developers will encounter the cloud sooner or later, so read up on the popular cloud providers (AWS, Google Cloud, and Azure) and the basics of the technology.

10. Working with the database

All current projects use databases, and experience with DBMS and SQL will make it easier to get started. Learn how to write SQL queries, use explain and learn how index. The easiest way is to take the course. You can also practice your Postgres documentation skills and play around with replication.

11. Upgrade softskills

An item that is unexpectedly out of line, but no less important. For starters, be patient. You get used to situations like “fix the iron, you programmer” quickly, but you need to be mentally prepared for the timing of the launch of new projects. If you are from zero to a year in programming and are considered a Junior, prepare for criticism and learn to accept it, code review by 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, there is practically no ceiling in the profession, so learning and the DESIRE to learn new things is the basis of your development.

Fury Road: The Billing Developer Journey

I am often asked when a beginner reaches the middle level, and when it is already possible to proudly be called a “senior”. I believe that the moment of transition from level to level is not determined by the number of years worked, although practical skills are the key criterion. It is precisely soft skills that often determine the growth rate of a developer: a trained and hardworking beginner can write high-quality code in several languages ​​and be able to work in a team in a few months. And a developer with 10 years of experience may not be able to solve non-standard tasks, manage a team, and have one-sided skills.

This is how I see the development of a billing developer, this is how we grow qualified specialists in our Forward Telecom team. I don't seem to have missed anything, but I'm always grateful for helpful additions to the point.

Source: habr.com

Add a comment