Secrets of Success: What Every Junior Developer Shoud Know (Introduction)

Admir Mujkic
6 min readApr 21


A successful software project depends on an accurate estimation of effort, time, and cost. Project budgets, timelines, and scope can be tricky to manage without proper estimation.

Occasionally, poor estimation can cause us to introduce a lot of stress trying to meet deadlines and deliver what we promised.

We can say that software estimation helps with identifying potential risks and uncertainties, prioritizing tasks, allocating resources efficiently, and ensuring customer satisfaction.

Hopefully, this article will explain why software estimation is so important and how it can benefit teams and customers.

Photo by on Unsplash

Various types of project requirements

To start discussing project estimation approaches, we need to understand the different types of requirements and what’s included and not included in the approaches we’ll be discussing in these articles.

These approaches are suitable for software development or improvement projects that depend a lot on the size of the software. However, this approach cannot be used for all software or system projects.

A more detailed explanation of functional size measurement will follow in the one of the next article. For now, is important to understand the three types of requirements for software projects in order to explain functional size measurement and how it fits into estimating.

Figure 1: Various types of software development project requirements

According to Figure 1, project requirements can be divided into three distinct categories (this breakdown also improves communication between users and project team members). There are three types of requirements: User functional requirements, User nonfunctional requirements, and Building technical requirements.

User functional requirements

Clarifying the functions of software is essential when developing it. An essential requirement is a set of specifications that describe how the software should perform specific business processes or tasks, such as observing the temperature of an environment.

It is often used to measure the size of a software system’s functional requirements based on the number of function points. In order for the software system to be able to perform its intended functions, function points are calculated according to the number of inputs, outputs, and user interactions it requires.

A software developer can better estimate the time and resources required for building and testing software by defining the functional requirements and calculating function points.

Here is an example of functional requirements from a semi-real-world scenario. Let’s assume that we are going to build software for a CMS, such as Penzle or Strapi, for example.

Figure 2: Functional requirements for a CMS

Based on these functional requirements, the software development team would need to calculate the function points for the CMS. For example, the CMS might have a total of 180 function points.

This can help ensure that the CMS meets the needs of its intended users and performs its intended functions correctly, ultimately leading to a successful and effective content management system.

Please take note that developing a CMS is much more complex than in the previous example, and there is a lot of functionality involved. If you’re interested in how many features a CMS can have, I would suggest taking a look at the website to see what they offer or youtube video materials.

User nonfunctional requirements

The second type of software requirement is referred to as nonfunctional requirements, which describe how the software should perform and are not considered part of the functional size. Examples of nonfunctional requirements include security, accuracy, and reliability.

It is important to note that these requirements are often not written separately, but are instead integrated throughout the requirements document. Nonfunctional requirements specify the software’s characteristics, such as data encryption and response time. Therefore, it is crucial to keep them in mind and be careful when considering them.

We can say that nonfunctional requirements, we known also as quality requirements are all about ensuring that the software operates correctly and meets users expectations. They include things such as:

Figure 3: User non-functional requirements

The term ‘non-functional’ refers to requirements that are not related to the functionality of a system or product, but relate to other aspects, such as performance, security, scalability, reliability, and availability. The importance of these requirements cannot be overstated since they contribute to the quality of the system and its ability to meet the needs of the users.

In engineering, non-functional requirements are crucial to developing high-quality products and systems. During the planning, design, implementation, and testing of products or systems, engineers must consider non-functional requirements. It is necessary to process many transactions in real-time if it is a transaction processing system in banks, for instance. Performance may be an important non-functional requirement.

Building technical requirements

These requirements are mostly related to engineers and address how the software will be developed or built. They include tools, methods, the type of project, resource skill levels, and so on. These requirements are where architectural design, configuration management methods, development methodology, use of packages, and the use of CASE (Computer-Aided Software Engineering) tools come into play. The technical requirements encompass hardware and software requirements, infrastructure requirements, database types, and so on.

Figure 3: Building technical requirements

Keeping an eye on building technical requirements is crucial for ensuring that a software system meets its functional requirements, is scalable, maintainable, and efficient. By taking technical requirements into account during development, teams can create software systems that meet the needs of users and stakeholders, are cost-effective, and can evolve over time to meet changing requirements.


As is evident from the discussion above, all three types of project requirements are essential for producing an accurate estimate of the total software project effort. However, in the next article, we will be focusing primarily on functional size. Functional size represents the size of the functional requirements and is a crucial component in the estimation process.

It is important to note that functional size is just one of several required variables for accurate estimation. For a new development project, functional size refers to the size of all the delivered or installed functionality, similar to a building’s floor plan. For an enhancement project, functional size is the total size of all new, renovated, or removed functional requirements in the software.

If you are interested in this important topic, please keep an eye on the upcoming article or consider subscribing, as poor estimation can often result in project failure.



Admir Mujkic

Admir combined engineering expertise with business acumen to make a positive impact & share knowledge. Dedicated to educating the next generation of leaders.