Contents:

Free Python Course ➞ Mini-course for beginners and experienced coders. 4 cool projects in your portfolio, live communication with the speaker. Click and find out what you can learn in the course.
Learn MoreA husband and father working as a software developer at The New York Times. In my professional career, I create and optimize digital solutions that help improve user experience and ensure high performance of the web platform. My background in software development allows me to effectively solve complex problems and introduce innovative technologies to the media industry.
About Requirements
The definition of the term "requirements" can vary significantly depending on the industry, scale, and specifics of your company. Different industries may interpret this term differently, which affects the formation of standards and expectations. Understanding the specific requirements of your company and adapting them to your specific work environment will help you achieve better results and improve business efficiency.
In any of the above cases, developers will need to solve a specific problem. This is a core part of their work. To successfully solve a problem, it is important to first understand the problem. A proper understanding allows you to find effective solutions and optimize the development process.
During your work, you may encounter questions that cannot always be answered in the technical specifications or from personal experience. In such cases, it makes sense to seek help from colleagues, management, the client, a business analyst, or even loved ones. This is a natural process that will allow you to gather disparate knowledge and develop the necessary skills. Sharing experiences and opinions contributes to a deeper understanding of the tasks and improves the quality of work.
The presented algorithm is not a strict guide. Complete completion of all stages is necessary only when working on a truly complex and multi-faceted task. Avoid overly formalizing the process – each stage serves to more quickly understand the problem, but does not limit your actions. These are just useful guidelines for acting in uncertain situations.
Task Analysis
First of all, it is important to clearly understand what exactly is required of you. Don't rush to think about how you will accomplish the task. Focus on analyzing the possible consequences of your actions and, most importantly, understand expectations. Here are some effective techniques for achieving this goal.
Determine what type of task is required to fix the problem. For example:
- fix a bug;
- add a new feature;
- develop a new application;
- conduct research;
- improve performance;
- something else.
This step is critical, especially when the requirements are unclear. For example, you might be tasked with: "Develop a method for clearing users' cache after a website update." In such a situation, the interpretation of the task may vary. It is necessary to clearly define what exactly is meant by "clearing the cache": does a complete cache clearing require all users or only certain segments, such as registered users or users visiting a specific page. It is also important to consider how clearing the cache will affect site performance and user experience. A proper understanding of the task will help avoid misunderstandings and ensure an effective solution.
- configure cache clearing so that users always see the latest updates;
- analyze all cache storage methods and identify the best way to clear it after each site update;
- find and fix the error preventing cache clearing;
- and so on ad infinitum.
If you have any doubts about what exactly is meant by a task, it is recommended to clarify the details before performing it. This will help avoid misunderstandings and ensure a higher-quality result. Ask questions to get the information you need and feel confident in your actions.

Identify the main tasks for the day, formulating them in one or two sentences. If a task is too complex to describe briefly, break it down into subtasks to make it easier to understand and complete.
The optimal solution when updating a website is to assign each file a unique number. This will allow browsers to download only the latest code, improving performance and speeding up page loading.
When updating a website, it is important to assign each file a unique identifier. This will allow browsers to download only the latest code, avoiding caching issues. You should also notify the CDN about the need to update files. In addition, you should enable updates for mobile applications on iOS and Android. These actions will ensure users have access to the latest changes and improvements on the site.
The second option does not comply with the principle of brevity, as it combines several tasks into one. It would be more practical to delegate each task separately, which will ensure more efficient execution and a lower probability of errors.
Make a list of key actions in a format convenient for you. Present the information briefly, avoiding unnecessary detail. Key steps should be clearly defined to ensure clarity and ease of understanding.
At this stage, it's important to thoroughly analyze the task at hand. It's recommended to create a clear action plan. For example, I prefer to use notes on my phone to capture thoughts and ideas. This helps organize information and avoid missing important details.
If you're looking to target product advertising based on individual user preferences, you should follow a specific process. Start with a thorough analysis of your target audience. Identify user demographics, interests, and behavior. Then, gather data on your potential customers' preferences and habits through surveys, analysis of previous purchases, and monitoring online activity.
Next, create audience segments based on the information you've collected. This will allow you to more accurately tailor your advertising campaigns and offer users the products they're most interested in. Use various advertising platforms, such as social media and search engines, to reach as many users as possible.
Don't forget the importance of testing your ads. Run several variations to determine which ones resonate best with your target audience. Analyze the results and adjust your strategies based on the data you've gathered. Continuously optimize your campaigns to improve their effectiveness and achieve your goals. This approach will ensure successful product promotion and customer satisfaction.
- Segment existing advertising based on user metrics.
- Find a way for marketers to correlate new advertising with user data (no coding!).
- Collect user metrics relevant for advertising.
- Develop a system that delivers targeted advertising based on user ID.
The benefits of a visual list are obvious. It allows you to quickly discuss key points with colleagues or management. For example, if you demonstrate it to your team lead, they may suggest adding an important point: users should be able to opt out of advertising. This is a reasonable decision, since it is important not to irritate users and maintain their comfort. This approach helps improve the user experience and increase product loyalty.
The result is obvious: before starting programming, we analyzed the key problem and developed an action plan to solve it. This allowed us to pause and thoroughly evaluate all aspects, which in turn saved many hours or even days, avoiding unnecessary effort in the future. This approach not only increases efficiency but also contributes to higher-quality project delivery.
Some of you may have doubts: in a serious business, all requirements should be analyzed before handing over to developers. However, I disagree with this opinion. Unfortunately, our world is not perfect, and developers often face uncertain tasks. Therefore, the ability to objectively assess requirements is a necessary skill for every specialist in this field.

To get the necessary data, just answer a few simple questions.
- Who will need it and why What will I do?
- What real or potential global problem am I trying to solve?
A clearly formulated answer is always important. For example, in the case of caching, you might say, "Users always get access to the latest updates." For advertising, you might say, "Users only see ads that are actually relevant to them." This approach ensures more effective engagement with content and increases user satisfaction.
If you don't have an obvious answer to the question posed, it might be worth seeking the help of an outside specialist. This can help you gain a clearer understanding of the problem or rethink the requirements you are facing. Discussing with another person often opens new perspectives and allows you to better understand complex situations.
The value of your interlocutors' answers is obvious. A deep understanding of the problem and goals allows you to make informed decisions in both development and business. By analyzing unsuccessful solutions and unimportant obstacles, you save resources and avoid unnecessary costs. This contributes to a more efficient use of time and effort, which ultimately leads to successful results.
Specifying and Evaluating Requirements
At this stage, it is important to clearly understand your goals and intentions. Now you need to focus on the implementation details: how to achieve what you planned and why this particular approach was chosen.
Some may consider this step unnecessary, but it is especially important for new team members and employees of large companies. In such situations, the likelihood of encountering unfamiliar terms in requirements increases significantly. Therefore, it is important to pay attention to understanding specific vocabulary and terminology to avoid misunderstandings and improve overall work efficiency.
By terms, I mean various commercial concepts, such as product names, customer categories, or specific processes. These can also be development-related terms, including utilities, applications, models, services, and libraries. Understanding these terms is essential for effective communication in the business and software development worlds. Knowing and using them correctly facilitates clearer communication and enhances professionalism in these fields. Ensure you clearly understand all key concepts, avoiding ambiguity and ambiguity. This will allow you to confidently complete assigned tasks and achieve desired results. Understanding key terms and concepts is an important step to successful completion.

Let's look at the cache example. You probably know that finding a way to access the collected user data is essential to solving the problem. But do you know what "adding them to a DAO" means? It involves integrating cached data with a data access object (DAO), which enables more efficient database interaction and speeds up query processing. Using a cache can significantly reduce system response times and improve the user experience.
In the second example, it becomes clear that the advertising data needs to be formatted correctly. But do you understand what a MADF (marking advertisement data feed) is? If not, this highlights the importance of understanding key terms in this field. Lack of knowledge can lead to errors and misinterpretations of data. Understanding concepts like MADF will help you avoid common mistakes and optimize your advertising data workflow.
How you implement this step depends on your work environment and the specific task. Sometimes you're given only the end goal of creating a specific feature, without specifying how to achieve it. In other cases, you may be given a detailed action plan. You've likely encountered both situations before.
If you lack specific instructions, taking action on this issue can be difficult. If instructions are available, review them carefully. Don't jump to conclusions, assuming everything is clear. It's important not only to know what to do, but also to understand when to do it. Understanding the timeframe and sequence of actions plays a key role in successfully completing tasks.
When given a task, we often rush into its details without considering its essence. However, this approach does not always lead to successful results. It is important to first reflect on the problem at hand, which will allow you to more clearly define the goal and effective ways to achieve it. Understanding the essence of the task will help you avoid unnecessary mistakes and focus on the necessary actions.
In this section, we've combined the first and second steps of our plan. In the first step, you focused on key goals and expected results, answering the questions "what?" and "why?" In the second step, you delved into the details, asking the question "how?" Now it's time to compare the desired with the actual. This means analyzing the details in light of the big picture and assessing whether the original problem has been solved.
Evaluate whether the established requirements will lead to the expected result. It is important to understand whether this result is truly capable of solving the original problem.
If you answered yes to both questions and are confident in the feasibility of your actions, begin implementing your plan. If you have any doubts, proceed to the next step, which will help resolve the conflict.
Turn on critical thinking
At this stage, you should clearly understand the problem and a possible solution. Now you need to check its correctness and ensure its effectiveness.
Creating a high-quality product is ideally based on freedom of opinion. Each team member should have the opportunity to express their opinion on actions that may negatively affect the final result. It is important to create an atmosphere where constructive criticism and discussion of ideas contribute to improving the quality of the product and increasing the effectiveness of the entire team.
You shouldn't voice your objections without a good reason. You can't simply limit yourself to phrases like "I don't like it" or "I feel like something is wrong." It is important to carefully analyze the situation and clearly formulate your arguments. This will not only allow you to convey your point of view but also increase the effectiveness of the discussion. A well-reasoned position facilitates constructive dialogue and helps find the optimal solution to a problem.
When expressing disagreement, it's important to keep several key rules in mind. First, try to remain calm and polite, even if your opinion differs from the other person's. Emotional restraint will help avoid conflict and create a more productive atmosphere for discussion. Second, use facts and reasoning to support your point of view. This will add credibility to your arguments and increase the likelihood of being heard. Third, respect the other person's position, even if you disagree with it. This promotes constructive dialogue and can open new perspectives for understanding. Finally, strive to seek compromises that can satisfy both parties. By following these guidelines, you can more effectively disagree and maintain healthy communication.

Before disagreeing, make sure you fully understand the situation. Avoid challenging aspects you haven't yet fully understood. If you can't clearly formulate the problem and offer possible solutions or justify your position, this indicates that you're not ready for a discussion. Objections are appropriate only with a thorough understanding of the context. Otherwise, it's recommended to return to previous points and address existing knowledge gaps.
Avoid subjective judgments and focus on specific aspects of the problem. For example, the statement "I don't like this solution" doesn't provide an objective assessment of the situation. Instead, it's better to formulate your position like this: "The number of operations involved could lead to performance issues." This formulation is more constructive and allows you to focus on solving the problem.
"I used a different approach previously" or "I would choose a slightly different solution because it aligns with my views" are also expressions of subjective opinion. It's important to understand that each person has their own unique preferences and strategies. Different methods can lead to different results, and that's okay. Openly discussing different approaches promotes the exchange of experience and allows you to find optimal solutions in various situations.
Be prepared to substantiate your point of view. Can you claim that something is incorrect if you cannot explain your doubts? It is recommended to write down all the errors you have identified and offer possible solutions. If no solution exists, be sure to indicate this at the beginning of your message.
Before expressing disagreement with colleagues, it is worth thinking over your position several times. Carefully listening to other people's opinions will help you better understand the situation and form a reasoned opinion. Don't skimp on this process, as it promotes more productive communication and strengthens team spirit.
If you followed my recommendations carefully, you probably already have a good understanding of the task at hand. However, it is possible that you may have missed something. Pay attention to details and make sure all aspects are taken into account.
I prefer to start a conversation with the phrase: "I'm not saying I disagree with you, I just don't fully understand." This approach helps create a constructive dialogue and avoid unnecessary conflict. Then, if necessary, you can delve into the discussion. Arguing without understanding the essence of the issue can lead to misunderstandings and deterioration of the relationship. It is important to strive for clarity and openness in communication, which contributes to more productive and mutually beneficial conversations.
Express disagreement correctly
Verifying the validity of your objections is an important step in any discussion or argumentation. Make sure that your objections are based on at least one of the following flaws: lack of factual information, logical errors, inconsistency of data, ignoring context, or lack of relevance. These aspects will help you determine the extent to which your objections are valid and constructive. Properly assessing critical comments promotes more effective dialogue and improves the quality of the discussion.
- the technical solution is based on outdated information;
- the technical solution is incorrect;
- the problem or solution is illogical;
- the technical solution does not fully meet the stated requirements.
Let's consider each point in more detail. Relying on outdated information is not always a negative aspect. In fact, new data may have appeared after the solution to the problem was found. In addition, it is possible that an existing system capable of performing the necessary actions to solve the problem was simply not known. It is important to remember that in the rapidly changing world of technology and information, constantly updating knowledge and monitoring new developments are critical to success.
A technical solution is considered incorrect if it is based on inaccurate information. For example, when SEO specialists set the task of indexing an authorized page in a developed application using the Google search bot, this can lead to errors. The fact is that Google doesn't support this feature, meaning SEO specialists were relying on incorrect data. This highlights the importance of accurately understanding the capabilities of SEO tools and search engines to achieve effective results in online marketing.
When we discuss the illogicality of a task or solution, we question its feasibility. My experience in development shows that such requirements often boil down to the formula "create one at the expense of the other." Typically, such tasks cannot be considered adequate, as they have a negative impact on the end result. An effective solution must consider all aspects of the task to ensure balance and optimization of resources, which ultimately leads to a higher-quality product.
A technical solution can be intentionally incomplete. When launching a project, software developers often create a minimum viable product (MVP). During the initial development stage, they deliberately exclude secondary features, focusing on the core ones. This allows for faster time to market and allows for faster user feedback, which contributes to further product improvement.
There are two main scenarios to consider when reporting a non-compliant technical solution. The first occurs when the system fails to perform the stated functions or tasks envisaged by the design. The second scenario concerns the solution's non-compliance with technical standards or regulations, which may entail risks to security and functionality. It is important to carefully analyze each of these circumstances to substantiate the claim and propose possible ways to correct the situation.
- the deadline for completing the task has expired, but there is no result;
- the proposed actions are not sufficient to create a working product or function.
Conclusion
Keep in mind that the method I have described should be considered an auxiliary tool. Its main purpose is to help you quickly solve the problem. Perhaps you'll find it sufficient to jot down a few notes on your phone and then discuss the task details with colleagues when needed. This is a simple and effective approach to organizing your work.
Checklist for Better Understanding Technical Requirements
Analysis is the first and key step in the successful completion of any project. It involves collecting and evaluating information, defining goals and objectives, and examining the current situation. This allows you to identify problems and opportunities that may impact further actions. Proper analysis helps minimize risks and enables more accurate planning, which ultimately leads to increased efficiency and the achievement of goals. The analysis stage requires attention and a deep understanding of the subject area, which contributes to more informed decisions in the future.
- Categorize the task.
- Briefly formulate the task.
- Outline an action plan.
- Define the problem.
Step 2. Specification and Evaluation
At this stage, it is important to detail the set goals and assess their achievability. Specifying goals allows you to define clear success criteria and simplifies the process of monitoring progress. Evaluation includes an analysis of resources, time, and possible risks, which helps in developing an effective strategy for achieving the set goals. This is an important part of the process, as it helps avoid uncertainty and creates a basis for further steps. Proper specification and evaluation can significantly improve the chances of successful project completion.
- Clarify terminology.
- Define objectives.
- Evaluate the problem solution.
Critical thinking is an important skill that allows you to analyze information, evaluate its reliability, and make informed decisions. In today's world, saturated with data and opinions, the ability to critically think is especially relevant. This process includes the ability to ask questions, identify biases and logical errors, and form your own judgments based on facts.
Developing critical thinking requires constant practice and introspection. Reading a variety of sources, discussing different points of view, and participating in debates help improve this skill. It is important not only to accept information at face value but also to be able to analyze it, which contributes to a deeper understanding of the world around us.
Critical thinking helps not only in everyday life, but also in professional activities, allowing you to make more informed decisions and avoid manipulation. By developing this skill, you become more confident in your ability to evaluate information and draw conclusions, which is an important step towards personal and professional growth.
- Don't rush to object.
- Express disagreement correctly.
Read also:
- How to learn programming correctly: the Franklin method
- Tatiana Sviridova: "If something doesn't work out, hide your emotions and solve the problem"
- How to make a preview for a video in JavaScript

