Why Software Engineering Will Never Die
Written by Nikos Vaggalis   
Tuesday, 10 October 2023
Article Index
Why Software Engineering Will Never Die
Becoming a well-rounded developer
Online Training v Bricks and Mortar Universities

The industry also requires things that go beyond what is taught at Universities. That is amongst others, security, UI/UX,
performance, data synchronization, integration with external services, or be able to use software development tools and techniques that allow the development team to be at its highest level of productivity.

Becoming a well-rounded developer

Of course being involved in a project from beginning to end, the developer interacts with the stakeholders, gathers and analyzes requirements. However, higher education institutions face challenges in preparing students to work pro-actively in these high-performance teams. 

For that reason, the student integrated into a distributed team using Scrum as a software development process. This combination of developing a full-stack project using an agile software development process allowed the student to acquire the knowledge and preparation necessary for today's challenges in the modern competitive software development market. To do that the study suggests that the industry works with the educational institution who actively supervises the software product development.

In that context, we get a well-rounded developer. The study reveals what skills such a developer should possess necessary for today's industry.

A skill necessary at the very first of stage of the project is researching  and systematic review of scientific publications. This entails analyzing related work and articles addressing automatic data extraction from invoices and receipts were studied. The student learned how to effectively search for relevant scientific publications, how to navigate through them, how to keep those of worth and how to derive valuable information from them for use  in his own project. That also goes for researching relevant applications, for instance from Google and Apple stores in order to observe the different types of technologies and algorithms which they are using.

The research stage subsequently acts as the stimulator for the student honing his analysis and criticism skills. This
allows a clear and deep understanding of possible paths for the solution and opens a pathway for a better definition of
the functional requirements. These requirements of course under the Agile methodology were constantly being re-evaluated as the project progressed.

Can then a LLM be iteratively fed functional requirements in accordance with the business rules and spit out new plans of what is there to do? No. SE vs LLM 2:0.

This could also be read as "are the stake holders capable of instructing a LLM accurately with their wishes for the latter to really understand what they mean in order to let them know what is feasible or not and how to utilize it?". I don't think so.

Working in a team

The next thing to learn is working in a team. In this case, the agile team was composed of 6 members, following the recommendations of Scrum. In this process, the student, the central element of the approach, interacted with
other people, realizing the difficulties and aspects common in business projects of this type.

Note these 'people' are not co-students, who are clueless themselves, but experienced pros of the industry.
Can then a LLM collaborate with many such people and not in just 1to1 setting? No unless you suggest that the LLM can work totally autonomously. SE vs LLM 3:0

Project management. This includes planning, altering and monitoring. Jira was used to manage all stages of the project. This requires everyone to be on the same page as such everyone must follow good communication practices and compliance with activity logs and user stories.

Documentation. Requirements documentation, modeling, etc.
The requirements were documented using user stories. In
addition wireframes, the Entity-Relationship (ER) model and systems software architecture were used.

Integration. To take advantage of the resources provided by Azure cloud, the student had to parametrize and integrate with Azure Cognitive services as well as train the AI model in order to get the best performance. The service to integrate was Azure Form Recognizer which uses AI models to extract information from documents such as text and tables from our documents. In this case, the documents are invoices, and extracting the desired information from the invoices was possible.

Coding? This work involved full-stack Web and mobile
development using the OutSystems low-code platform, as such not much coding, while the recognition and automatic extraction of data from documents (invoices, receipts, etc. ) were so complex to implement that were better off offloaded to the Azure AI service.

At this point, yes, coding could be in danger by low code tools. Still at some point you got to go drilling down the the generated code as well as you must follow good software engineering principles, maybe even more than in typical code based projects. Let's give a point to each other. SE vs Low code 2:1.

As far as LLM's goes, yes too they can be considered as the coders' antagonists and maybe someday become able to automate the code writing. That is, coding but for isolated components and not fully fledged software development projects. Let's give a point to each other SE vs LLM 4:1

Security is another one. The security mechanisms implemented in the mobile application follow the Top 10 Mobile Risks identified by the OWASP organization in 2016.

Local Data. Using the application offline requires that some of the user and associated data be stored on the device itself. Therefore you have to cater for synchronization which becomes necessary when the mobile application is not connected to the internet.

Performance;How to tweak the application, choosing the best performing algorithms to incorporate.

Testing. Acceptance testing, after sale analysis of performance and user feedback are used for insight in improving the application on a later version.

And so on...In the end what is the magic formula that bridges the gap between college and industry?

The study strongly hints at industry-academia partnerships which incorporate all those aspects examined, help students become better and more quickly prepared to work in high-performing teams.

The study also demystified what the necessary skills that a well rounded software developer should possess regardless of being a student or a professional:

Research, development, soft skills, requirements gathering and analysis, documentation, agile methodology, project management, teamwork and permanent communication between all members, tools, software integration, application synchronization, security, coding. It really demonstrated the wide range of software aspects and tools the job market needs.
It requires technically well-prepared graduates with good soft skills and a holistic experience about the paths followed today by software companies.



Last Updated ( Tuesday, 10 October 2023 )