The software development market has an abundance of small companies with lean teams which make an enormous contribution to technological innovation. A large part of the development of new apps, tools and processes takes place in what are known as startups. The structure of these companies will largely define what tomorrow's developers will be like.
1.- A software developer, a jack of all trades
In this type of company with a reduced infrastructure, all-round profiles with knowledge in a number of areas involved in software development are in great demand. These types of developers are known by the name of "full-stack" or "rockstar" developers because they allow targets to be achieved for less cost due to their vast range of talents.
Laurence Gellert, software developer, was the first to arrive at a definition of this type of profile back in August 2012. Gellert starts his article by recalling that a Facebook employee told him in an open code convention that the social network only employed full-stack development professionals. According to Gellert, they need knowledge in:
– Servers and networks: They need to know about file systems, cloud storage, network resources, and data redundancy.
– Data modeling: Full-stack developers must know about UML, the language used for talking to databases to define the structure and the relation between the information, or make operations for handling the data –everything from modifying, to deleting or recovering them.
– Application programming interfaces: APIs have completely changed the software development scenario. They have become the key element in the reuse of straightforward web services, mobile services, tools and programs. Developers must be capable of building an API REST, for example.
– User interface and user experience: In any digital development project it is essential to have knowledge of information architecture, user interaction, interface design, browser design and so on.
– Understanding the needs of customers and the business: These developers need to understand what happens when the customers use their tools and how this affects their business.
2.- Front-end developer
No full-stack developer can get by today without a broad knowledge of front-end development. They must therefore have experience in three basic fields:
– HTML: Specifically in HTML5 and in the semantic web.
– CSS: specifically in CSS3, cascading style sheets that are a feature of the latest webpage design; and also in style sheet languages such as SASS, LESS and XML.
– Responsive design: the type of design that is adapted based on the type of device from which the query is being made. In today's information consumption –mainly through mobile devices like smartphones– it is essential to have a knowledge of responsive and adaptive design in order to create competitive web projects.
3.- Back-end developer
An all-round developer must also have experience in back-end development. Here there are three major areas:
– Programming: He or she must know how to program in several languages: in PHP (an open code language widely used for creating dynamic webpages) or Ruby (this is a language that is becoming popular with developers as it is simple, user-friendly and vastly reduces developers' efforts when making prototypes, for example). In this line of legible languages, Python is also a good option.
– Databases: Another support for back-end development is databases. At a minimum it is necessary to have knowledge in a particular database from the two major groups: relational and non-relational. In the first case, a good choice would be MySQL, whereas in non-relational databases, MongoDB has fast been gaining ground within the developer community (this type of databases store the information in documents, not registers, and it is therefore necessary to have worked with JSON, a light format used for data exchange). Another interesting option of this type is Amazon DynamoDB, a database within the Amazon Web Services cloud service.
– Servers: When managing servers it is essential to know Apache, possibly the most widely used service in the world (server side programming languages such as PHP or Python can be used). There are other options on the market that may be interesting: Google Web Server, Nginx and lighttpd.
5.- And in addition, everything else apart from software development
Companies often tend to choose this type of profiles with abundant knowledge in a variety of disciplines and a global view to head up teams. Evidently, a software developer may have experience in front-end and back-end, but be lacking in aptitudes for leading people and projects or the right qualities for teamwork.
However, they must know the businesses of the corporations that pay for their services, be able to manage the demands of customers in real-time, and efficiently coordinate teamwork to ensure the development of products that meet expectations.
Follow us on @BBVAAPIMarket