In this article, I will discuss a very important topic that may seem insignificant to a beginner programmer. It's about business requirements, i.e. how the system being created should work or how an existing system works according to the person who commissions it to be written. Often, how the system is supposed to work is not important to the programmer and does not go hand in hand with his vision, which is a serious problem and leads to many misunderstandings.
Who is the person who orders the software to be written?
Before I move on to explaining the concept of a business requirement, I will answer the question who is the person who commissions the writing of the software or system? It can be any person for whom we are creating the system, e.g. our employer, the company we were hired to work for delegated as part of outsourcing, where we work as a subcontractor. Usually, it is a person who does not have extensive technical knowledge, but knows how the system should work. In my opinion, it is very good that there is a non-technical person, because such a person does not look through the prism of the "limitations" of a programming language or framework.
What are business requirements?
Business requirements are assumptions about the functions that the system to be created is to perform, e.g. making transfers in the banking system, opening a currency account. To understand business requirements, you need to understand the system being created, e.g. a bank transfer requires knowledge in a field related to banking, such as account, transfer, interest, capitalization.
Sources of business requirements
You can acquire such knowledge yourself by reading various books and guides, but it is a long way and does not necessarily end in success. The second way is to simply communicate within the team with a business analyst who should explain how the system works in terms of bank transfer.
The second way, communication within the team, is required from programmers in 90% of cases, long gone are the days when the programmer "locked himself in the basement, wrote magic code" and others had to be delighted with the effects of his work because he used it in the code the latest elements of a given programming language. Yes, it doesn't work, I wrote more about team communication and soft skills in Junior Java Developer technical skills and soft skills. The programmer must understand the domain of the system being created, otherwise he will not be able to write a good system.
Why are business requirements so important?
Please remember that in 99% of cases we write code for someone else, unless we create our own system, e.g. in a start-up. A programming language and the code created in it are only a tool for implementing business requirements. The role of a programmer is to create high-quality code that meets the assumed business requirements.
What does the developer do with the business requirements?
Now that we know how important business requirements and communication with the person ordering the system are, I will now present an example of what will happen if the programmer does not thoroughly understand the business requirement and writes a given system function. Let's imagine that a programmer is tasked with writing code that performs a foreign transfer in a foreign currency.
Does not understand the requirements
I will now describe a variant in which the programmer did not understand the business requirements and therefore does not know the domain of the system. The programmer created the code responsible for the foreign transfer. To perform the transfer operation, I need information about two accounts: the first one from which we transfer the money and the second one to which we transfer the money. For the first account, check whether the customer has funds in the account, this is obvious and has been well implemented. The programmer also thought about the fact that transfers can be made on banking days.
As you can see, one business requirement conceals two more, this is always the case, rarely is one requirement so simple that it does not require the implementation of other elements. The programmer returns the implemented foreign transfers, and during the tests, errors in the code itself as well as errors in the business logic are revealed; the latter are as important as the former. The programmer receives information that the transfer has not been converted correctly because each foreign transfer must first be converted into Euro and then into the target currency, e.g. a transfer from PLN to USD requires conversion of PLN to EUR and then EUR to USD.
The programmer did not know this because he did not delve deeply into the business requirements and/or did not understand the field of the system being created. What are the consequences of such incorrect implementation of any functionality in the system? Firstly, the financial consequences if such functionality were made available to the public, where the bank has hundreds of thousands of customers. In addition, longer implementation time, repeated implementation, deployment and testing paths, which involves different people. Additionally, if such a situation repeats more often, it may result in a decline in the reputation of a given programmer.
Understand the requirements
The variant in which the developer understood the business requirements simply does not have the negative consequences described above. Additionally, a programmer who has already understood a part of the system will more easily absorb subsequent business requirements and will better understand the field of the system being created.
Please remember that business requirements for the system being created change over time and what was valid yesterday may need to be changed tomorrow. Therefore, a programmer must know the programming language very well to adapt to the changing business requirements for a given system. The programmer's goal is not programming itself and using the latest technologies at all costs, his goal is to implement a working system in accordance with business requirements.
Tips for the programmer
What should be done in the future to avoid such situations? You should definitely focus on understanding the field of the system being created, cooperate with business analysts or people who have business knowledge about the system being created. Additionally, the programmer must hone his skills in a given programming language so that he can later easily translate business requirements into a programming language.
Regarding creating a system according to business requirements, the ideal approach would be Domain-Driven Design – DDD. When it comes to honing your skills as a programmer, you should complete as many exercises and tutorials related to the technology and language currently used as possible. You can also use www .codewars.com, where you can practice programming skills through tasks and compete with other programmers. I also recommend https://challengerocket.com/ – Solve a SkillChallenge and get immediate feedback to see if you qualify for the recruitment process. All done remotely.
As you can see, business requirements are a very important element of the IT system being created.