Armenia has great potential to grow its IT sector. The problem, however, is that the younger generation doesn’t fully understand the breadth and scope of possibilities that the industry can offer.
A country’s success in IT is not measured by how many companies a country can boast, but rather how well-equipped the sector is when it comes to actually creating something new or having to confront different challenges. Having a good idea is not always enough, especially if the execution is flawed.
To know how to mitigate failure, it is important to understand what IT exactly means, what are the strengths and weaknesses of the Armenian IT industry, and examine where it stands in competing with other countries. The term IT in Armenia is overutilized when referring to the profession. Developers, DevOps or System Administrators are often simply referred to as IT.
There are several professions that encompass IT. The following are the main ones:
Software engineering (developer/programmer)
Often, a position will combine more than one. For example, if you take a mathematician, teach them the right programming language and data engineering, you can develop a pretty good artificial intelligence specialist. Or if you take a system administrator with very strong networking and security knowledge, and teach them, again, the right programming language, you can develop a cybersecurity expert. These profiles are still IT, but let’s keep it simple.
In order to consider an IT community in a given country to be strong, it needs to have a balance of specialists in all five pillars mentioned above. And in order to achieve this balance, it is necessary to understand that none of these specialties is irrelevant. Each of them is as important as the other; to think that it is better to be a software engineer than, say, a network engineer is a fundamentally wrong mindset for advancing the overall sector.
Currently, Armenia doesn’t have the right balance. There are many more developers than the other specialties, creating two major issues:
There are significantly more programmers than there is a demand for, leaving Armenian developers to take ad hoc freelancing gigs, which suppresses wages compared to equivalent full-time positions.
It becomes very challenging to build a team that can create something on its own and present it to the world, as only one component, programming, is done in Armenia. They need other IT profiles in order to fully execute a powerful innovation.
One way the current situation manifests itself is in the fact that the Armenian business model, when it comes to having a presence on the Internet, is satisfied with only a Facebook Page rather than a fully-functional stand-alone website. They choose Facebook not only because it is free, but also because it provides better performance than they are capable of building, due to a lack of professionals. And even those who do have websites, including the top tier of Armenian IT companies, are mostly with an external service provider, rather than maintaining their own team.
The Armenian IT community needs to understand the importance of system administration. It is not optimal to pay some third-party service provider for just a basic package. These packages have limited infrastructure complexity. You should want to build your own infrastructure, control your own security, control your own data. To be competitive, you need to shape your infrastructure to your business needs, not your business to your infrastructure.
Unfortunately, in Armenia, there are very few system administrators, and most of them are Windows specialists. Let’s be frank, the IT community doesn’t like Windows; it much prefers Linux. To prove the point, about 5% of the top 1000 websites run on Windows servers, which leaves 95% running on Linux systems.
In many countries where the IT industry has reached a certain level of maturity, the online business model is already moving from maintaining your own datacenter to the Cloud. Getting a server, and putting your app on it; kind of plug and play model, compared to having your own datacenter, where you control every single bit of your infrastructure, or being in the Cloud, where you still have the control of the most important aspects of your infrastructure, is still a non-professional approach.
The “Cloud” is a very misunderstood term in society. To be clear, it is not a storage service to save your photos and videos. The Cloud, or cloud computing, is an on-demand service for different IT resources, such as servers, load balancers, storage and databases, Big Data services, security services, etc. Depending on the technology stack, companies receive different resources, and they pay as they use them. That is the direction every major company is moving today. Jeff Bezos didn’t become the richest man in the world because of amazon.com, but because of AWS (Amazon Web Services), which is the biggest cloud provider in the world.
As Amazon grew, and started selling more than just books, they needed an infrastructure that could handle their ever-increasing traffic. But Internet traffic is not constant. During holidays like Christmas or Valentine’s Day, traffic grows exponentially. In order to face this demand, their infrastructure had to be robust, which means installing an army of servers. The problem is that, for 95% of the year, these servers were redundant and inactive.
To monetize their spare capacity, Amazon came up with the idea to rent it out when it wasn’t being used. They created a “cute” web interface from which anyone could get a server with a couple of clicks, providing the option to host their web application from there with better reliability than if they kept it in their own house. As more and more features were added, today AWS offers over 200 services.
Cloud providers have changed the way businesses work today. A regular business still has to face the same problem Amazon did years ago. They need to maintain an infrastructure that can handle their peak traffic. You can’t be an online business, and allow your site to go down on Black Friday. So now, instead of purchasing servers they don’t need most of the time, along with the other inconveniences that come with maintaining your own datacenter, companies have decided to work with cloud providers, who offer them everything they need, and charge them only for the resources they actually use.
Another game changer is containers. Containers don’t need to run on the Cloud; they can run on the premises, although the Cloud is the best environment for them. Containers make a web application more flexible. As a side note, although there are private and open source companies behind it, containers are a set of Linux features. So, when someone runs a container on a Windows machine, they are actually virtualizing a Linux machine on Windows, to be able to run a container.
To clarify, a monolith online store would have several package boundaries, such as user data, a catalog, a cart, a wishlist, a payment section, suggestions, etc. All these services run in the same program. But all these sections do not get the same amount of traffic, or need the same level of security, among other attributes. A user might be shopping for an hour, clicking here and there, but make only one payment in a couple of minutes when checking out. To scale a monolith application, say because there is too much traffic, all the components need to be scaled together. Containers break up a monolith application into logical services. For the same online store, there would be a separate “user data” service, which only stores user data. Maybe this service needs extra security features, as the data is more sensitive. A separate “catalog” service that would list all the items of the store, would be public and common for all users. This service could scale independently, as it will probably get more traffic than the other services. A separate “cart” and a “wishlist” service could be dynamically created upon a login for each “user data” service. A “payment” service would also have some extra security features.
As is evident, a microservice-based application becomes more flexible and efficient, but it also becomes more difficult to develop and deploy. There are container orchestrators, such as Kubernetes, that solves the deployment aspect, and programmers need to change their approach to start developing applications as microservices. As developers and operations got tightly coupled, the term DevOps came in.
Armenia is missing this entire side of IT. The point is that, if the way the applications are built and deployed in Armenia are outdated, so are the developers. In a Kubernetes cluster, it is possible to deploy an application within an hour that would simply be impossible on traditional servers. And you are on very thin ice when your limitations are the technology you are using.
To sum up, Armenia currently faces challenges to its competitiveness, when compared to peer countries. The Armenian IT community, besides software engineers, has not yet matured to the same level of professionalism as other countries. Its tools and its approaches are outdated, and therefore lack the power that state-of-the-art technology offers. Armenia needs a knowledge injection of modern application deployment strategies. It needs to emphasize the importance of having different types of professionals in the sector that not only write applications, but also build infrastructures, secure them, and make them as efficient and robust as possible.
Fortunately, with the right choices in education, Armenia can build a decent IT community capable of creating its own secure and reliable systems, which will be beneficial from the business perspective as well as for social institutions, including government and national defense. The urgency of taking this step is clear, but we have yet to take it.