In our recent article, we tackled the question of what the optimal team composition for developing a new software product is. We mentioned roles such as quality assurance expert, solution architect and UX designer - but these are only some of the people who might be involved in creating business software solutions. Let’s take a more detailed look at some of the development team roles you might have heard of and wondered about, such as DevOps experts, fullstack developers, or data engineers.
This first part of our guide focuses on the various development and engineering jobs related to building software products. But those are not the only skill sets necessary to achieve success. In part two of our guide, we will take a look at roles related to QA, project managements, design, and other crucial elements of the software development process.
Developers - what do programmers actually do?
The work of software developers is difficult to sum up in a few paragraphs. Depending on their exact expertise and seniority, they may design product architecture and features, write code in a number of programming languages, write tests, fix bugs, add niche expertise to the project, and lead teams of other developers.
Simply put, a lead developer is a step up from a senior developer - but not in terms technical skills. Lead developers have all of the qualifications of senior developers, and on top of that, they are also mentors and leaders, able to guide less experienced developers, manage teams and make decisions with a business impact for the project. They help non-technical team members and stakeholders communicate with the developers, making sure each side understands the other. They also participate in product planning, aiding management with their understanding of both the technical intricacies and the business side of the project.
To properly develop a software solution, in a way that answers users’ problems and brings the most business value, a strategic approach is often best. Solution architects look at the business side of a project and make decisions that match it. They design technical features, introduce best practices and choose technologies with a specific outcome in mind, making sure the development team is working towards fulfilling the right vision. Solution architects are also responsible for setting project goals and standards in areas such as security, reliability, performance, cost-effectiveness, and risk management. Domain knowledge (such as experience with fintech or software solutions for healthcare) is a big advantage for these experts.
- Understanding business & technical ecosystems,
Developers by seniority
The most common division of development roles in a project is by seniority, into junior, regular and senior developers. Though the relations between these levels of experience is self-explanatory, it’s not always easy to determine when a developer crosses from being a junior to a regular, or from a regular to a senior. It’s important to note that the main thing to look at is experience in a given technology - a developer may have been working on Ruby on Rails projects for many years, yet still could count as only a junior when using a vastly different language, such as Go, for the first time.
In general, a junior developer has less than 2 or 3 years of experience working with their technology of choice. They should be able to complete most development tasks, solve problems, use resources and collaborate with team members. However, they do so under supervision - they might need help choosing between two similar solutions, implementing best practices, or understanding the project’s business goals. They are very valuable members of a development team, as they complete important but uncomplicated tasks at a low cost for the client.
A regular developer usually has between 2 and 10 years of experience and is able to complete tasks independently. If they need help, their experience will allow them to notice this and ask for advice. They may be responsible for designing parts of the product, and communicate with clients about their work.
Finally, senior developers can be considered experts in their technology stack of choice. Aside from designing and implementing the most complex elements of a project, they also mentor less experienced team members, solve emerging problems, support project managers in organizing the team’s work, and help educate stakeholders about how the technological solutions used in the project affect its business side.
A very important aspect of this division is deciding on the ratio of senior to junior developers on a project team. There’s no clear-cut, universal answer to the question of what the best ratio is. Companies such as iRonin.IT often offer the option of flexible developer engagement, which means adjusting team composition throughout the project to best meet current needs. This way, the client always gets the most value out of their investment. At the same time, we focus on hiring senior-level talent, because we know how important code quality and security are. We test each candidate’s practical skills ourselves, to find out exactly what they are capable of. Our project team composition always includes advanced experts who have the experience and knowledge to ensure success. Additionally, our clients have the final say regarding who works on their product: we provide developer profiles and open channels of communication to each team member.
Depending on their chosen technology stack, developers can be divided into a number of categories. Backend developers build the parts of a software product that users don’t interact with directly - the server side of a product. They may implement complex calculations and architectures, and always need to make sure their solutions can be seamlessly integrated with the front end of the product. Backend developers are also responsible for implementing application logic and representing business goals (and problems) through the use of backend tools (such as databases, including MySQL and PostgreSQL, and data processing).
Examples of backend programming languages:
The “front” part of a software product means the customer facing side: the user interface (UI). Frontend developers need solid technical skills, knowledge about app and website structure, as well as an understanding of how users behave. The buttons, sliders, and overall style of an app are all implemented by frontend experts.
These experts have skills and experience in both frontend and backend technologies (though it’s important to note that they don’t know all possible combinations of backend and frontend languages - only some). They are capable of building software projects from start to finish, and understand the working of all app layers, which can allow them to make valuable technical and business insights.
Data engineers are responsible for setting up, structuring and supporting data infrastructures which become the basis for the operation of applications. They design efficient, scalable data systems and processes (e.g. data gathering or modeling for machine learning), then build and implement them. The scale of such an endeavor can be small, or indescribably large for a global corporation. Data engineers need to have a working knowledge of data architecture and administration, as well as a number of tools, databases and programming languages.
- SQL and NoSQL databases,
Functional programming means using a language that supports functional programming in everyday work. Most modern programming languages (such as Ruby, Java, C++ or Python) are object oriented, which works very well in many scenarios. Sometimes, however, a functional approach is preferable. It can reduce code redundancy, make the finished product easier to maintain, and supports a more modular software architecture. The important thing to remember is that functional programming requires skill and experience which not every developer has, though in many ways both groups (functional and object oriented developers) do the same kind of work - writing code.
Example functional languages and languages that support functional programming:
As the name suggests, ecommerce developers are experts in building, implementing and maintaining ecommerce platforms. They usually possess all of the skills a web developer would, along with deep experience with popular ecommerce tools. They know best practices for building online stores that are scalable, secure and reliable, and are able to choose solutions that fit the needs of the client’s business.
Example eCommerce technologies and tools:
- Spree (an e-commerce solution based on Ruby on Rails),
- REST APIs,
- Various payments solutions.
Web design & development vs web app development
Web design & development usually means creating simple websites, or websites built with popular out-of-the-box CMS tools, like Joomla or Wordpress. This type of programming work is restricted to setting things up, coding the visual template (if a custom one is necessary), and integrating plugins for the website.
Web app development, on the other hand, means implementing customized solutions, apps, SaaS platforms, etc., but also building more advanced portals and websites with tailored features, such as:
- Custom logic and interactions,
- Alerts, notifications and monitoring,
- Custom search engines,
- Chats and communication tools.
This approach requires a lot of custom code, or significant modification of existing tools and frameworks.
Web App Developer vs Mobile Application Developer
This division between programmers that build web apps and programmers that build mobile apps is more than superficial. Though their work is similar in many ways (writing high quality code using similar best practices, for example), they use different technologies, create features that answer different user needs, work with different distribution platforms (mobile developers have to meet Google Play Store and App Store standards), and most importantly, they need to create software tailored for different devices. Specializing in either field requires skill and experience.
Example web technologies:
- Ruby on Rails,
- Python with Django
- Headless CMS, such as Prismic or Ghost.
Example mobile technologies:
- React Native (for hybrid apps - apps that work on both the Android and iOS platforms).
DevOps is a space between software development and IT infrastructure administration, connecting the two fields for a more efficient outcome. It combines not only their practices and tools, but also philosophies and cultures, breaking down communication barriers and resulting in a high velocity delivery process. The quality of work improves, as well, as operations expertise joins the programming team for the entirety of a product’s lifecycle, answering issues of capacity or scaling sooner. DevOps experts bring these and many other benefits to product development, lowering project costs and speeding up work.
- Software development process know-how,
- IT operations,
- Problem solving & collaboration,
- System and network administration.
Site reliability engineers (SREs) focus on automating inefficient tasks, defining and using best practices for a consistent release process, as well as responding to arising emergencies. Like DevOps experts, SREs facilitate communication between development and operations teams. Their role is only slightly different, in that they ensure infrastructure reliability and the predictability of processes, rather than the smooth delivery of a particular project.
- IT operations,
- IT infrastructure know-how,
- Infrastructure monitoring,
- Incident response,
- Problem solving.
Artificial intelligence (AI) refers to sophisticated software that can imitate human behavior, while machine learning (ML) is a process through which programs can be trained to make intelligent decisions based on data. Common applications of these technologies include text and image recognition, as well as intelligent automation. Creating AI and ML solutions requires specialist knowledge and skills. Developers focused on this field implement AI/ML algorithms and logic, adding powerful functionality to software projects.
- Software development,
- Algorithms and data structures expertise,
- Mathematical and statistical models,
- Supervised and unsupervised machine learning methods,
- Decision making systems and fuzzy logic,
- Algorithms for clustering, prediction and classification.
These software engineers specialize in extracting, transforming and data loading processes. Extraction refers to collecting information from various systems and in various formats. Transformation means storing the data in a staging area and formatting it in preparation for the next step. Loading previously structured data into an appropriate database or data warehouse allows the client to fully leverage its value.
- SQL and NoSQL databases,
- Data storing formats, data scraping, and API integrations,
- Data processing automation (e.g. with Python),
- Data management and integration software (e.g. Microsoft SQL Server Integration Services, Oracle Integrator, or Apache Kafka and Apache Airflow),
- Business intelligence tools and methods.
Analytics brings forth data-driven insights for executives and stakeholders, allowing them to identify the most valuable business processes, find hidden inefficiencies, and make better decisions. Analysts specialize in gathering the right data (and often designing the processes of gathering data), formatting and storing it to ensure database scalability and usability, as well as using that information to empower the organization. They apply statistical tools for data interpretation, prepare reports, and build knowledge bases, helping others understand their metrics, process and results. Importantly, data analysts need to look beyond the information they gather and take the context of their organization into consideration.
- Data structures, logic, probability theory, and statistical analysis,
- Data wrangling,
- Data processing and data mining,
- Business Intelligence tools,
- Data manipulation, aggregation, and Boolean search,
- Data interpretation and reporting.
The job of a data scientist consists of three major elements: advanced mathematics, programming and noticing trends. They produce business insights based on large volumes of data, which they often need to collect, structure, and process first. Many modern companies sit on unused hoards of information - and data scientists can help them turn that information into metaphorical gold.
- Programming with a language like Python or R,
- Machine learning and deep learning.
Big Data Developer
Similarly to a data scientist, a big data developer works with data. The major difference between them is the focus on scale. Big data means truly incredible volumes of information, which needs to be gathered, stored, analyzed, and often either visualized or at least squeezed into a report readable for business executives. Big data developers build and manage big data systems, with the goal of making huge stores of information sustainable.
- Apache Spark,
- Apache Kafka,
- Apache Mesos,
- SQL & NoSQL databases.
As you can see, the number of specific roles in the field of software development is large - and it will only grow in the future. Don’t worry, though, no project needs each and every one of the roles described above. On the other hand, it might need other kinds of experts - such as a project manager or a UX designer. In part 2 of our guide to software development roles, we will cover these and many other specialists that can be valuable to your project.
Not sure what the team composition for your project should be? Let’s talk.
At iRonin.IT, we provide full teams tailored to our clients’ needs.