Writen by Pagi team - ilegra, in 26/07/2022
5 minutes of reading
Software Digital Transformation: what do you need to know?
From the organization and composition of teams to the choice of technologies, learn what you need to know to carry out the digital transformation in your company's software.
When we hear about successful companies we tend to think about excellence both in administration and in process execution. However, such excellence is still lengthy if we think about travel reimbursement and contract signature, for example. For this reason, there are tons of softwares that are built to help such companies run faster and more productively.
The development of a software must be considered as a medium to long term project due to the involvement of different professionals as each one has its importance during the different stages of the project.
First, we suggest a team of software architects and engineers. They will better understand the business area and its needs and will also work on defining how the software will be with all its functionalities.
Next, it is important to add to the team those professionals who think about the user experience. They will be responsible for both building the user interface of the software and communicating to the architects and engineers of any change required on the business side.
At this point, we understand that there is going to be a team focused on visualizing and analyzing what fits best to the project as a whole such as being responsible for facilitating the communication between different areas of the project and also building those areas.
This team will be called ENTERPRISE. There will be members of a variety of expertise such as Solution Architecture, Backend Software Engineering and Architecture, Front End Engineering and Architecture and Mobile Engineering and Architecture. It is important that these team members have solid knowledge of their area of expertise as they will be responsible for hiring new members. Also, there will be an Agilist, a DevOps Engineer, a Database Administrator (DBA), a UX Designer and a UX Researcher working on this team.
It is important to remember that the ENTERPRISE team will be responsible for doing all the communication between the different teams that will come. At this point, we will focus on the teams that will work on the software modules.
For each module, we suggest having a leader, which is a person responsible for the team and for all the communication with the ENTERPRISE team. This leader, called Product Owner (PO), will be helped by a Backend Developer, Frontend Developer, Mobile Developer and a Quality Assurance Specialist (QA).
It is worth noting that while the ENTERPRISE team is unique, the module teams will multiply by the needs of the software. Further down this article, we will explain each term specifically as well as their responsibilities and technologies used for each professional in each area.
SOLUTION ARCHITECT
A solution architect must have a macro view of the software and work along with the software architecture team to define the solutions which must be used for the software demands, we take those solutions for cloud components such as IaaS, SaaS, and PaaS.
SOFTWARE ARCHITECT
A software architect is responsible for the source code structure definition, as well as components communication, in addition to planning the structures focused on high scalability, disponibility, and low costs. However, it’s necessary to constantly be updated concerning current technologies and always seek innovation along with the Engineering Team aiming to transform and improve the everyday developer experience.
BACKEND DEVELOPER
The backend developer is the professional responsible for developing the software’s internal processes so that their skills are focused on ensuring that the software performs the desired operations in an agile and secure manner, building mechanisms that receive the data and perform the processing. This professional has no contact with the UI (User Interface) to which the end-user has access.
It’s in this area that the software processing occurs and the entire storage structure exists. In the case of processing technologies, it is suggested to use NodeJS or Spring. As for data storage technologies, there will be options focused on speed, like the non-relational databases MongoDB, Cassandra, and Redis; and others focused on integrity, such as the relational databases MySQL and PostgreSQL.
FRONTEND DEVELOPER
Acting as a frontend developer requires an understanding of how to receive user input from the software, send it to the backend and display the return of that processing. This professional must also be concerned with the device that will be used by the user for the correct capture and display of data.
It is up to the frontend developer to develop the screens according to the created flows, configure the project through a bundler (e.g. Webpack), and keep the screens responsive and stylized, in addition to writing unit tests and components tests.
There are also professionals who specialize in mobile development: mobile frontend developers. These professionals are concerned with developing the screens of native applications for mobile devices and their operating systems, such as Android and iOS.
Since this is the main area where the client interacts with the software, it is important to use technologies that give flexibility to meet the end user’s needs, especially in visual resources. As suggestions, we can mention TypeScript, in addition to Angular or Next.js frameworks and React JS library. Regarding the mobile developer, we can mention Kotlin, Java, and React Native.
QUALITY ASSURANCE
This group is responsible for keeping the software available for use and automating tasks, providing greater productivity and reliability to software development. It is also responsible for ensuring the quality of the deliveries made by the development teams according to the requests made by the client. The Quality Assurance professional performs load, stress, and scalability tests, ensuring that all business requirements have been implemented correctly, without bugs or anomalies.
This professional is a reference in software quality, and also contributes to risk analysis, testing strategies, and decision making, participating in all stages of software development.
The suggested tools for the professional are Jest and Testing Library (Frontend). Functional and performance tests are also automated to provide quick feedback on the quality of systems, using tools such as Selenium, Appium, Gatling, and Postman. There is also consulting company scenario creation and management and test coverage with tools like Zephyr Scale.
DATABASE ADMINISTRATOR (DBA)
Professional responsible for managing the databases used by the software, performing tasks such as keeping the database secure, ensuring data integrity, updating or migrating database management systems, guiding best practices, and ensuring scalability and availability, among others.
SOFTWARE ENGINEER
It is responsible for implementing and maintaining the source code structure defined by the architecture team, even as the integrations with the other parts of the software.
This professional must ensure software deliveries of high quality, scalability, and performance while achieving a cost reduction. Actively participating in the definition of new solutions and architecture is the focal point when it comes to bringing innovations and improvements to the company.
OPERATIONS
This professional is concerned about the non-functional requirements, in other words, the software disponibility to be accessed by the user at any time as long as there are no security issues. Apart from that, the Operations Engineer also assists the development teams by providing automation in the code release process, making the work more productive, effective, and scalable.
Jenkins or TravisCI are the tasks automation tools suggested. Forgerock or Keycloack stand out in terms of authorization and authentication control. Tools for software hosting include Microsoft, Amazon, and Google, because they provide container services such as Docker and Kubernetes in a practical way. Git and Github are used for software source code change storage and control. Moreover, tools for quality and security software evaluation such as Sonarqube and Fortify are used. And finally, there are also tools for software behavior, security, and performance monitoring such as Grafana, Dynatrace, OpenSearch, and Kibana.
UX DESIGN/RESEARCH
These professionals are responsible for the users experience understanding and design when interacting with the software interfaces. The UX Designer focuses on the design of the interfaces, while the UX Researcher analyzes the users’ behavior when they interact with the software by using research methods such as interviews or by conducting usability tests. This way, the researcher can understand how to improve the users’ experience and which features of the software are most valuable to the final user.
PRODUCT OWNER (PO)
The product owner is responsible for connecting the business demands to the software requirements and therefore must have a clear understanding of the product. Some of their responsibilities include defining and prioritizing the product backlog, ensuring that ceremonies such as daily and planning occur, communicating the product vision to the team, and ensuring that the expected deliveries are made.
The software digital transformation in a company can be achieved in phases, where in each phase there is a natural incrementation of the team, adding specialties and reducing delivery time. When performing this transformation, even before the project is totally finished, the company can already feel productivity gains in tasks that started to be processed by new software, and it is able to glimpse all the new possibilities for the software in development. The task is nonetheless challenging, yet the burden can be diminished by hiring third parties to help during the whole process, from prospecting and hiring professionals to the execution of development activities.