{"id":3158,"date":"2021-08-18T15:13:31","date_gmt":"2021-08-18T12:13:31","guid":{"rendered":"https:\/\/djangostars.com\/blog\/?p=3158"},"modified":"2025-10-21T12:07:01","modified_gmt":"2025-10-21T12:07:01","slug":"pre-development-phase","status":"publish","type":"post","link":"https:\/\/djangostars.com\/blog\/pre-development-phase\/","title":{"rendered":"The Pre-Development Phase: How to Avoid Mistakes that May Cost You a Fortune"},"content":{"rendered":"<p><span style=\"background-color: #f1f5f7;\">When someone wants to emphasize the importance of the first step in doing something, we often hear them say something like, <i>&#8220;It&#8217;s important to build a strong foundation.&#8221;<\/i> But if you look at that plan more closely, it&#8217;s easy to see that the foundation isn&#8217;t the very beginning: before laying the cornerstone, and even before digging the construction pit, many preliminary decisions must be made. You should look around, decide what exactly you want to build, then determine the sequence of actions, and so on. Moreover, when making all these decisions, you should take into account further prospects \u2013 in other words, <b>the future of your project<\/b>.<\/span><br \/>\nSoftware development works according to similar rules. Before actually coding, you have to make strategic decisions regarding the product&#8217;s architecture, design, how it works with data, etc. All this happens in the initial stages.<\/p>\n<p>To help you sort this out, let&#8217;s focus on <b>the Pre-Development stage<\/b>, define its place in the software development process, and consider the points that are especially important to pay attention to so that your project can move ahead smoothly and without high-cost mistakes.<\/p>\n<h2 id=\"header1\">Pre-Development Stage: What\u2019s in It?<\/h2>\n<p>As you can learn from the article that describes <a href=\"https:\/\/djangostars.com\/blog\/software-development-process\/\">Software Development Life-Cycle<\/a>, the Pre-Development phase follows the <a href=\"https:\/\/djangostars.com\/blog\/discovery-phase-in-software-development\/\">Discovery phase<\/a> and precedes the Development phase.<\/p>\n<h3 id=\"header2\">Pre-Development Vs. Discovery: What&#8217;s the Difference?<\/h3>\n<p>The interaction of planning, analysis, and project structure development as a whole occurs in both of these phases. However, there are differences.<\/p>\n<ul>\n<li><b>The Discovery phase<\/b> is a \u201cstrength test\u201d of \u200b\u200byour product idea. The clarification of requirements can be considered as its core, especially from a business point of view, i.e., checking the desirability of developing a product with specified characteristics in a competitive environment and a preliminary estimate of the budget and resources required to make it happen.<\/li>\n<li><b>The Pre-Development phase<\/b> (i.e. preliminary development) is more about the developers&#8217; perspective. This includes deploying servers, setting up tools, API design, defining test strategy and a project roadmap, etc.<\/li>\n<\/ul>\n<p><span style=\"background-color: #f1f5f7;\">Like preparing construction blueprints that you can hand over to different contractors,<\/span> the Discovery phase can act as a separate service and be carried out even before you&#8217;ve decided to cooperate with a certain vendor. Ideally, though, these two phases flow smoothly into each other.<\/p>\n<h3 id=\"header3\">Who\u2019s Involved in the Pre-Development Process?<\/h3>\n<p>Since the initial stages of project development largely determine the future &#8220;room for maneuvering&#8221;, it&#8217;s crucial here to listen carefully to the recommendations of an experienced vendor and involve highly qualified developers. You shouldn&#8217;t skimp on paying for senior-level workers because mistakes can be very costly (to the extent of having to rework the project).<br \/>\nOn the other hand, you may need to connect with some specialists only once, because there&#8217;s no need for constant participation in the project from their side.<\/p>\n<table style=\"height: 96px; width: 95.874%; border-collapse: collapse;\" border=\"1\">\n<tbody>\n<tr style=\"height: 24px;\">\n<td style=\"width: 11%; height: 24px; text-align: center; background-color: #62c5a6; border-color: #f7f7f7;\"><span style=\"font-size: 12pt;\"><strong>Role Name<\/strong><\/span><\/td>\n<td style=\"width: 43%; height: 24px; text-align: center; background-color: #62c5a6; border-color: #f7f7f7;\"><span style=\"font-size: 12pt;\"><strong>Responsibility<\/strong><\/span><\/td>\n<td style=\"width: 2.5%; height: 24px; text-align: center; background-color: #62c5a6; border-color: #f7f7f7;\"><span style=\"font-size: 12pt;\"><strong>Involvement<\/strong><\/span><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 11%; text-align: center; height: 24px;\"><span style=\"font-size: 12pt;\"><strong>Business Analyst<\/strong><\/span><\/td>\n<td style=\"width: 43%; height: 24px; text-align: left; padding-left: 20px; font-size: 12pt;\"><span style=\"font-size: 12pt;\">Provides business analysis and appropriate outcomes, e.g., the Project Estimate.<\/span><\/td>\n<td style=\"width: 2.5%; text-align: center; height: 24px;\"><span style=\"font-size: 12pt;\">one-time<\/span><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 11%; text-align: center; height: 24px;\"><span style=\"font-size: 12pt;\"><strong>Tech Lead<\/strong><\/span><\/td>\n<td style=\"width: 43%; height: 24px; text-align: left; font-size: 12pt;\">\n<ul>\n<li><span style=\"font-size: 12pt;\">Coordinates team technical activities such as environment configuration, 3rd-party services integration, project setup, etc.<\/span><\/li>\n<li><span style=\"font-size: 12pt;\">Helps Project Manager fulfill the Backlog.<\/span><\/li>\n<\/ul>\n<\/td>\n<td style=\"width: 2.5%; text-align: center; height: 24px;\"><span style=\"font-size: 12pt;\">process owner<\/span><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 11%; text-align: center; height: 24px;\"><span style=\"font-size: 12pt;\"><strong>Project Manager<\/strong><\/span><\/td>\n<td style=\"width: 43%; height: 24px; text-align: left; padding-left: 20px; font-size: 12pt;\"><span style=\"font-size: 12pt;\">Coordinates team organizational activities such as Backlog fulfillment, communication with the client, etc.<\/span><\/td>\n<td style=\"width: 2.5%; text-align: center; height: 24px;\"><span style=\"font-size: 12pt;\">full-time<\/span><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 11%; text-align: center; height: 24px;\"><span style=\"font-size: 12pt;\"><strong>QA<\/strong><\/span><\/td>\n<td style=\"width: 43%; height: 24px; text-align: left; padding-left: 20px; font-size: 12pt;\"><span style=\"font-size: 12pt;\">Is responsible for project quality, preparing testing documentation, and performing software testing.<\/span><\/td>\n<td style=\"width: 2.5%; text-align: center; height: 24px;\"><span style=\"font-size: 12pt;\">full-time<\/span><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 11%; text-align: center; height: 24px;\"><span style=\"font-size: 12pt;\"><strong>Solution Architect<\/strong><\/span><\/td>\n<td style=\"width: 43%; height: 24px; text-align: left; font-size: 12pt;\">\n<ul>\n<li><span style=\"font-size: 12pt;\">Writes a high-level solution document and checks the <a href=\"https:\/\/djangostars.com\/blog\/business-analyst-in-software-development\/\">Business Analyst\u2019s<\/a> estimates.<\/span><\/li>\n<li><span style=\"font-size: 12pt;\">Supports the Tech Lead, Project Manager, and team.<\/span><\/li>\n<\/ul>\n<\/td>\n<td style=\"width: 2.5%; text-align: center; height: 24px;\"><span style=\"font-size: 12pt;\">full-time<\/span><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 11%; text-align: center; height: 24px;\"><span style=\"font-size: 12pt;\"><strong>UX\/UI Engineer<\/strong><\/span><\/td>\n<td style=\"width: 43%; height: 24px; text-align: left; font-size: 12pt;\">\n<ul>\n<li><span style=\"font-size: 12pt;\">Creates Design solutions.<\/span><\/li>\n<li><span style=\"font-size: 12pt;\">Supports Project Lead, Project Manager, and team.<\/span><\/li>\n<\/ul>\n<\/td>\n<td style=\"width: 2.5%; text-align: center; height: 24px;\"><span style=\"font-size: 12pt;\">full-time<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Depending on the size and structure of a particular company, the composition and names of the <a href=\"https:\/\/djangostars.com\/blog\/roles-in-the-sdlc\/\">SDLC roles<\/a> might vary slightly. For example, the Team Leader can assume the Tech Leader role. However, practice shows that you shouldn&#8217;t get carried away with the combination of roles, and certainly shouldn&#8217;t omit the tasks for which an appropriate specialist is required.<\/p>\n<h3 id=\"header4\">The Outcomes of the Pre-Development Phase<\/h3>\n<p>After completing the pre-implementation stage,<!--After completing the Pre-Development phase,--> you should be fully prepared for the Development phase and able to provide it with the needed inputs. The full list might vary, but here are the major points to pay attention to:<\/p>\n<ul>\n<li><b>Product Backlog<\/b>, i.e., a scope of forthcoming tasks that will be performed according to priority.<\/li>\n<li><b>CI\/CD workflow<\/b>: tests, build, deploy.<\/li>\n<li><b>API<\/b> <b>design <\/b>with a short specification of all API endpoints required for the new application.<\/li>\n<li><b>Design artifacts<\/b> including<br \/>\n&#8211; <em>a User Flow<\/em> (the order of actions that users follow to achieve their goal when using the product);<br \/>\n&#8211; <em>a Wireframe<\/em> (black and white images without any app data that represent not the app design, but what elements should be situated on the page);<br \/>\n&#8211; <em>a Mockup<\/em> (the early version of the product visual design that represents not only the elements on the pages but how the data will be shown to users);<br \/>\n&#8211; and <em>a Prototype<\/em> (live presentation of your application that imitates the app behavior like on an interactive storyboard and could be shown to investors or end-user for gathering their feedback).<\/li>\n<li><b>BPMN <\/b><b>Diagram of the main flow <\/b>(Business Process Modelling Diagram)<b>.<\/b><\/li>\n<li>An updated <b>Test Strategy <\/b>(a document that describes the testing approach of the specific software product).<\/li>\n<li><b>Components structure <\/b>(formed in <a href=\"https:\/\/djangostars.com\/blog\/jira-training-for-product-owners\/\">Jira<\/a>).<\/li>\n<li><b>Configured development and beta environments.<\/b><\/li>\n<\/ul>\n<p>Note that, as mentioned above, the software vendor might change after the Discovery phase is completed. In this case, the chosen solutions might be adjusted again according to the expertise of the new team. For example, they might advise you to reconsider your decision about choosing the <b>product architecture<\/b>. We\u2019ll discuss this in more detail below.<\/p>\n<h2 id=\"header5\">Mistakes to Avoid at the Pre-Development Stage<\/h2>\n<p>The main mistake would be underestimating the preparatory work. This is similar to the principle attributed to Napoleon: get involved in that battle, and see what happens next.<br \/>\n<span style=\"background-color: #f1f5f7;\">However, a different principle applies in construction: you can&#8217;t just demolish a building after you understand how it should have been built. Rather, you can, but this means additional money and time.<\/span><br \/>\nEqually, in software development, you inevitably have to start by defining the logic of user actions, choosing the type of architecture, and the API design. You should keep in mind many important parameters such as the expected number of users and the load on the product, the correct configuration using suitable frameworks, testing capabilities, performance, scalability, etc.<br \/>\nGenerally, architectural decisions are made during the Discovery phase. Then the process configuration and task prioritization are passed to Pre-Development. In practice, however, it&#8217;s usually the vendor implementing the project that makes the final adjustments at the Pre-Development phase.<br \/>\nAnd since the architecture choice will dictate further possibilities, boundaries, and the mainstream of your project development,\u00a0 this step should be taken seriously.<\/p>\n<h2 id=\"header6\">More on Architecture: How to Choose the Right One<\/h2>\n<p>When choosing architecture, developers are often tempted to foresee all possible situations in advance. By doing so, they run the risk of not only overcomplicating the architecture but also introducing errors into the project. And, you know, reality will still make its own adjustments that you didn\u2019t calculate.<br \/>\nUsually, the best way is to start small but have well-thought-out functionality that can be scaled as needed. A good tip\u00a0is to take a close look at the processes in your business domain in order to model their logic as accurately as possible.<br \/>\nBut at the same time, it&#8217;s important to abstract to the necessary degree from the organizational structure of both your company and the vendor&#8217;s company to avoid a pitfall that <a href=\"https:\/\/en.wikipedia.org\/wiki\/Conway%27s_law\">Conway&#8217;s Law<\/a> warns about: &#8220;<i>Any organization that designs a system will produce a design whose structure is a copy of the organization&#8217;s communication structure<\/i>.&#8221; (Otherwise, you can quietly introduce old boundaries into the new design.)<\/p>\n<h3 id=\"header7\">Types of Architecture and Cases When It\u2019s Most Appropriate<\/h3>\n<p>Some architectures are more famous than others. But it&#8217;s not about just fashion or what you might have seen from your neighbors. Instead, the project itself and the gathered requirements should dictate your choice of architecture. Here, everything is individual.<\/p>\n<h4 id=\"header8\">1. Layered Architecture (a.k.a. N-Tier Architecture)<\/h4>\n<p>This is perhaps the most widely known layered architecture concept. It\u2019s found in most Java EE applications. Here, the components are organized into horizontal layers. (Their number and order may vary depending on the size and purpose of the application.)<br \/>\n<img decoding=\"async\" class=\"alignnone size-full wp-image-3162\" src=\"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2021\/08\/1_Layered-Architecture-1.jpg\" alt=\"Layered Architecture\" width=\"1258\" height=\"1081\" \/><br \/>\nEach layer has a specific role in the application, such as storing data, processing requests, or presenting the user interface. It&#8217;s important that adjacent layers can exchange data in a suitable format without caring about the tasks of each other. For example, the presentation tier should only display customer data, not process it. At the same time, data cannot flow from one layer to another by bypassing the layers between them.<br \/>\nThe distribution of tasks and autonomy of layers helps simplify the pre-development, development,<!--Distribution of tasks and autonomy of layers helps simplify development,--> testing, management, and maintenance of applications in a layered architecture due to well-defined component interfaces and limited component scope.<br \/>\n<b>Pros and Cons:<\/b><\/p>\n<p style=\"padding-left: 40px;\"><span style=\"color: #37591e;\"><b>\u2714<\/b> It\u2019s easy to start. Generally, if you don&#8217;t know where to start, it makes sense to start with a layered architecture.<\/span><br \/>\n<span style=\"color: #37591e;\"><b>\u2714<\/b> A large choice of frameworks is available.<\/span><br \/>\n<span style=\"color: #8a2d6b;\"><b>\u2718<\/b>\u00a0Expanding functionality isn\u2019t always easy because, as a rule, you have to use several layers to implement new features.<\/span><br \/>\n<span style=\"color: #8a2d6b;\"><b>\u2718<\/b>\u00a0It\u2019s relatively difficult to achieve high performance.<\/span><br \/>\n<span style=\"color: #8a2d6b;\"><b>\u2718<\/b>\u00a0Achieving scalability is challenging.<\/span><\/p>\n<p><b>Note:<\/b>\u00a0The wide popularity of layered architecture is due to the fact that it\u2019s a convenient default option for a project. Usually, if you don&#8217;t know where to start, it would help if you start with it. Due to the isolation of the layers, any of them is quite easy to modify or even completely replace if necessary.<\/p>\n<h4 id=\"header9\">2. Event-Driven Architecture<\/h4>\n<p>Event-driven architecture uses an <a href=\"https:\/\/djangostars.com\/blog\/asynchronous-programming-in-python-asyncio\/\">asynchronous<\/a> operating principle, which is a good choice when building highly scalable software products.<br \/>\n<img decoding=\"async\" class=\"alignnone size-full wp-image-3163\" src=\"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2021\/08\/2_Event-Driven-Architecture-1.jpg\" alt=\"Event-Driven Architecture\" width=\"1258\" height=\"1398\" \/><br \/>\nThis architecture focuses on the event queue. Various event processors are subscribed to these events and do their part of the overall work asynchronously. For example, in an online store, when an event comes in the form of an order, separately prescribed processors can handle the reservation of goods in the warehouse, invoicing, shipping, and other subtasks. In this pattern, the channel of <i>initial events<\/i> can be split into smaller channels that, in turn, contain <i>processing events.<\/i> Another implementation method is to distribute the event flow across the processor components in a chain-like fashion (suitable for less-complex products).<br \/>\nBecause the event-driven architecture is asynchronous, it&#8217;s relatively difficult to implement. Here, you need to think carefully about which events can be executed independently to avoid conflicts.<br \/>\n<b>Pros and Cons:<\/b><\/p>\n<p style=\"padding-left: 40px;\"><span style=\"color: #37591e;\"><b>\u2714<\/b> Expansion of the functionality is easy, because it usually comes down to adding new processors that can be connected independently.<\/span><br \/>\n<span style=\"color: #37591e;\"><b>\u2714<\/b> Testing is easy.<\/span><br \/>\n<span style=\"color: #37591e;\"><b>\u2714<\/b> Scalability isn\u2019t difficult, and we can vary the technologies used in different processors.<\/span><br \/>\n<span style=\"color: #37591e;\"><b>\u2714<\/b> High performance can be achieved.<\/span><br \/>\n<span style=\"color: #8a2d6b;\"><b>\u2718<\/b>\u00a0Despite its apparent simplicity, the architecture is difficult to design.<\/span><br \/>\n<span style=\"color: #8a2d6b;\"><b>\u2718<\/b>\u00a0Identifying problems can be difficult (due to a large number of interacting processes).<\/span><br \/>\n<span style=\"color: #8a2d6b;\"><b>\u2718<\/b>\u00a0It\u2019s difficult to ensure eventual consistency (due to asynchronous data changes that can be delayed).<\/span><\/p>\n<p><b>Note:<\/b> Different types of architecture can be combined. For example, you can make one of the event processors layered or, conversely, build one of the layers using event-driven architecture.<\/p>\n<h4 id=\"header10\">3. Microkernel Architecture (a.k.a., Plug-In Architecture)<\/h4>\n<p>The microkernel architecture is generally the first choice for building product-based applications. It allows you to add additional features as plug-ins to the core application, which provides extensibility as well as separation of different functions.<br \/>\n<img decoding=\"async\" class=\"alignnone size-full wp-image-3164\" src=\"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2021\/08\/3_Microkernel-Architecture-1.jpg\" alt=\"Microkernel Architecture\" width=\"1258\" height=\"980\" \/><br \/>\nThis architecture uses two types of components: a core system, which contains only minimal functionality, and stand-alone plug-in modules with additional functionality. Thus, it becomes possible to choose only the necessary functions for connection or to customize the application for specialized needs. Also, it\u2019s convenient if you want to control user access to various functions.<br \/>\nPlug-ins can be connected in various ways, be completely independent, or require other modules to be installed. But it\u2019s important here to minimize data exchange between modules to avoid dependency issues.<br \/>\n<b>Pros and Cons:<\/b><\/p>\n<p style=\"padding-left: 40px;\"><span style=\"color: #37591e;\"><b>\u2714<\/b> It&#8217;s easy to extend functionality with additional plug-ins.<\/span><br \/>\n<span style=\"color: #010202;\"><span style=\"font-size: 14pt;\"><b>+\/-<\/b><\/span> Performance can vary in different cases.<\/span><br \/>\n<span style=\"color: #010202;\"><span style=\"font-size: 14pt;\"><b>+\/-<\/b><\/span> Scalability can vary in different cases, depending on how the kernel is written and how the plugins interact.<\/span><br \/>\n<span style=\"color: #8a2d6b;\"><b>\u2718<\/b>\u00a0It&#8217;s difficult to design (since the core system determines the format of further interactions.)<\/span><\/p>\n<p><b>Note<\/b>: This type of architecture isn\u2019t common in <a href=\"https:\/\/djangostars.com\/services\/web-development\/\">web development<\/a>. A simple example of such an architecture would be various IDEs, where the basic version is usually a text editor, but one for which you can get a convenient development tool by connecting various plug-ins with additional features.<\/p>\n<h4 id=\"header11\">4. Microservice Architecture<\/h4>\n<p>The popularity of microservice architecture is growing because it arose to solve the well-known problems inherent in monolithic applications (cumbersome deployment) and service-oriented architectures (excessive complexity).<br \/>\n<img decoding=\"async\" class=\"alignnone size-full wp-image-3159\" src=\"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2021\/08\/4_Microservice-Architecture-1.jpg\" alt=\"Microservice Architecture\" width=\"1258\" height=\"947\" \/><br \/>\nEach component of the microservice architecture is deployed as an independent unit and is completely separate from the others. The components are accessible via the remote access protocol.<br \/>\nThis distributed architecture contributes to increased scalability, ease of deployment, and continuous delivery. On the other hand, it can be more difficult to achieve coordinated functionality due to a high degree of application and component decoupling within your application. Hence, there&#8217;s a high probability that the functionality of various components will be largely duplicated to preserve the independence of the components. Also, it\u2019s difficult to maintain consistent processing of a single transaction by different service components.<br \/>\n<b>Pros and Cons:<\/b><\/p>\n<p style=\"padding-left: 40px;\"><span style=\"color: #37591e;\"><b>\u2714<\/b> The functionality is easy to expand (if the interface layer is written correctly).<\/span><br \/>\n<span style=\"color: #37591e;\"><b>\u2714<\/b> Performance can be high (thanks to component optimization).<\/span><br \/>\n<span style=\"color: #37591e;\"><b>\u2714<\/b> Scalability isn\u2019t very difficult.<\/span><br \/>\n<span style=\"color: #010202;\"><span style=\"font-size: 14pt;\"><b>+\/-<\/b><\/span> Testing one microservice is easy, but testing the interaction of many microservices is difficult.<\/span><br \/>\n<span style=\"color: #8a2d6b;\"><b>\u2718<\/b>\u00a0It\u2019s difficult to design.<\/span><\/p>\n<p><b>Note: <\/b>Like event-driven architecture, microservices hide complexity behind seeming simplicity. Here, you need to properly divide closely related services, carefully consider the interface layer, ensure data security, permissions, etc.<\/p>\n<h3 id=\"header12\">A Word about Difficulties and Other Architecture Approaches<\/h3>\n<p>There\u2019s no reason to say that any one of the architectures is the answer to every question. Why else would you need so many different answers? The aforementioned pros and cons can manifest themselves on different scales. Much depends on the specific implementation.<br \/>\nThere\u2019s always complexity. But in different architectures, this complexity can look different:<\/p>\n<ul>\n<li>With <b>Layered Architecture<\/b>, data conversion from layer to layer is important.<\/li>\n<li>With <b>Event-Driven Architecture<\/b>, you should take into account Eventual Consistency.<\/li>\n<li>With <b>Microkernel Architecture<\/b>, the requirements for the kernel architecture are increased.<\/li>\n<li>With <b>Microservice Architecture<\/b>, the interface (communication) layer between services is the most responsible.<\/li>\n<\/ul>\n<p>Of course, we\u2019ve come across many other approaches to software architecture. (For some interesting examples, refer to <a href=\"https:\/\/blog.cleancoder.com\/uncle-bob\/2012\/08\/13\/the-clean-architecture.html\">The Clean Architecture<\/a> by Robert Martin.) But on closer inspection, many of them turn out to be author&#8217;s variations on familiar themes that use similar principles. Often, it\u2019s more about placing emphasis and going deeper into some architectural &#8220;framework.&#8221; In any case, when choosing an architecture, you must first take into account all the tasks that a specific project sets out for you.<br \/>\nHowever, one more checklist is never superfluous.<br \/>\n<img decoding=\"async\" class=\"alignnone size-full wp-image-3160\" src=\"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2021\/08\/5_Parameters-to-Consider-when-Choosing-the-Type-of-Architecture-1.jpg\" alt=\"Parameters to Consider when Choosing the Type of Architecture\" width=\"1258\" height=\"1526\" \/><\/p>\n<h2 id=\"header13\">Haste Makes Waste<\/h2>\n<p>It&#8217;s necessary to clearly understand that the decisions made in the Pre-Development phase will become the basis for the further development of the product. Therefore, in the future, even seemingly minor changes in the interface, for example, might require serious changes in the data structure, in which case you again will need to spend time\/money and involve qualified people.<br \/>\nWhen deciding on a project architecture, much depends on developers&#8217; professional experience and background. As it\u2019s the time when the scope of the future project is being defined, the correct systematic approach shouldn\u2019t be neglected. Definitely, it makes sense to listen to the vendor&#8217;s recommendations and not overlook important details. A good idea is to find a vendor who offers not just \u201chands-on\u201d but expertise in building complex <a href=\"https:\/\/djangostars.com\/solutions\/\">solutions for business<\/a> needs.<\/p>\n<p>Visit our <a href=\"https:\/\/djangostars.com\/case-studies\/\">case studies<\/a> page to learn more about Django Stars as a software vendor. <b>To discuss cooperation, fill out the <a href=\"https:\/\/djangostars.com\/get-in-touch\/\">get in touch<\/a> form.<\/b><br \/>\n<div class=\"lead-form-wrapper lets_disqus\">\n    <div class=\"lead-form transparent-footer\">\n        <p class=\"discuss-title paragraph-discuss col-md-12\">Have an idea? Let&#039;s discuss!<\/p>\n\n        \n<div class=\"wpcf7 no-js\" id=\"wpcf7-f2589-o1\" lang=\"en-US\" dir=\"ltr\" data-wpcf7-id=\"2589\">\n<div class=\"screen-reader-response\"><p role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><\/p> <ul><\/ul><\/div>\n<form action=\"\/blog\/wp-json\/wp\/v2\/posts\/3158#wpcf7-f2589-o1\" method=\"post\" class=\"wpcf7-form init\" aria-label=\"Contact form\" enctype=\"multipart\/form-data\" novalidate=\"novalidate\" data-status=\"init\">\n<div style=\"display: none;\">\n<input type=\"hidden\" name=\"_wpcf7\" value=\"2589\" \/>\n<input type=\"hidden\" name=\"_wpcf7_version\" value=\"6.0.6\" \/>\n<input type=\"hidden\" name=\"_wpcf7_locale\" value=\"en_US\" \/>\n<input type=\"hidden\" name=\"_wpcf7_unit_tag\" value=\"wpcf7-f2589-o1\" \/>\n<input type=\"hidden\" name=\"_wpcf7_container_post\" value=\"0\" \/>\n<input type=\"hidden\" name=\"_wpcf7_posted_data_hash\" value=\"\" \/>\n<input type=\"hidden\" name=\"form_start_time\" value=\"1776780393\" \/>\n<input type=\"hidden\" name=\"_wpcf7_recaptcha_response\" value=\"\" \/>\n<\/div>\n<div class=\"form_holder\">\n    <div class=\"input_section input_row\">\n        <div class=\"input_holder\">\n                            <span class=\"input_label\">\n                               Your name *\n                            <\/span>\n            <input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" id=\"your-name\" aria-required=\"true\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"text-898\" \/>\n\n            <input class=\"wpcf7-form-control wpcf7-hidden\" id=\"uniq_ga_id\" value=\"\" type=\"hidden\" name=\"uniq_ga_id\" \/>\n        <\/div>\n        <div class=\"input_holder\">\n                            <span class=\"input_label\">\n                                Your email *\n                            <\/span>\n            <input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-email wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-email\" id=\"your-email\" aria-required=\"true\" aria-invalid=\"false\" value=\"\" type=\"email\" name=\"email-882\" \/>\n        <\/div>\n    <\/div>\n    <div class=\"input_section single_input_row\">\n        <div class=\"input_holder\">\n            <span class=\"input_label\">How can we help you? *<\/span>\n            <input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" id=\"message\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"message\" \/>\n        <\/div>\n    <\/div>\n    <div class=\"file_attach\">\n        <input size=\"40\" class=\"wpcf7-form-control wpcf7-file\" accept=\"audio\/*,video\/*,image\/*\" aria-invalid=\"false\" type=\"file\" name=\"file-930\" \/>\n        <div class=\"file_placeholder\">\ud83d\udcce <span>Attach File<\/span>\n            <span class=\"file_formats\">Formats: pdf, doc, docx, rtf, ppt, pptx.<\/span><\/div>\n    <\/div>\n    <div class=\"checkbox_row\">\n        <div class=\"single_checkbox\"><div class=\"checkbox_indicator\"><div class=\"checked_indicator\"><svg width=\"14\" height=\"12\" viewBox=\"0 0 14 12\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4.66804 12L0 7.26951L1.22426 6.05269L4.54927 9.40456L12.6737 0L14 1.10613L4.66804 12Z\" fill=\"#1E232C\"\/><\/svg><\/div><\/div><input type=\"checkbox\" name=\"agree\" id=\"privacy\" value=\"agree privacy\"><label for=\"privacy\" class=\"\">I have read and accepted <a href=\"https:\/\/djangostars.com\/privacy-policy\/\" style=\"margin-left: 6px;\"> Privacy Policy*<\/a><\/label><\/div>\n        <div class=\"single_checkbox\"><div class=\"checkbox_indicator\"><div class=\"checked_indicator\"><svg width=\"14\" height=\"12\" viewBox=\"0 0 14 12\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4.66804 12L0 7.26951L1.22426 6.05269L4.54927 9.40456L12.6737 0L14 1.10613L4.66804 12Z\" fill=\"#1E232C\"\/><\/svg><\/div><\/div><input type=\"checkbox\" name=\"agree\" id=\"marketing\" value=\"agree for marketing\"><label for=\"marketing\" class=\"\">I agree to receive marketing content from Django Stars<\/label><\/div>\n    <\/div>\n    <div class=\"submit\"><button type=\"submit\"><span>send message<\/span><\/button><div class=\"safeguard\">We safeguard your privacy<\/div><\/div>\n<\/div>\n<div style=\"position: absolute; left: -5000px;\" aria-hidden=\"true\">\n    <input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"website_url\" \/>\n<\/div><script type='text\/javascript'>\n\n\t\t\t\t\t\tif(contactform === undefined){\n\t\t\t\t\t\t\tvar contactform = [];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar innerVal = [2589,'mail_sent_ok','Thank you for your message. It has been sent.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'mail_sent_ng','There was an error trying to send your message. Please try again later.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'validation_error','One or more fields have an error. Please check and try again.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'spam','There was an error trying to send your message. Please try again later.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'accept_terms','You must accept the terms and conditions before sending your message.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'invalid_required','The field is required.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'invalid_too_long','The field is too long.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'invalid_too_short','The field is too short.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'upload_failed','There was an unknown error uploading the file.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'upload_file_type_invalid','You are not allowed to upload files of this type.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'upload_file_too_large','The file is too big.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'upload_failed_php_error','There was an error uploading the file.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'invalid_date','The date format is incorrect.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'date_too_early','The date is before the earliest one allowed.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'date_too_late','The date is after the latest one allowed.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'invalid_number','The number format is invalid.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'number_too_small','The number is smaller than the minimum allowed.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'number_too_large','The number is larger than the maximum allowed.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'quiz_answer_not_correct','The answer to the quiz is incorrect.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'invalid_email','The e-mail address entered is invalid.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'invalid_url','The URL is invalid.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'invalid_tel','The telephone number is invalid.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'gdpr',''];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\t<\/script><div class=\"wpcf7-response-output\" aria-hidden=\"true\"><\/div>\n<\/form>\n<\/div>\n    <\/div>\n\n    <div class=\"success_disqus\">\n        Thank you for your message.\n        <span>We\u2019ll contact you shortly<\/span>.\n    <\/div>\n<\/div>\n\n<script>\n    \/\/ (function ($) {\n    function click_input() {\n        jQuery('.file_placeholder').on('click', function () {\n            jQuery(this).parent().find('input').click();\n        })\n    }\n\n    document.addEventListener(\"DOMContentLoaded\", click_input);\n\n    \/\/ })(jQuery)\n<\/script>\n\n\n<br \/>\n<div class=\"dj-main-article-faq\" style=\"padding-top: 0px;\">\n\t\t<div class=\"dj-main-article-faq-title\">\n\t\tFrequently Asked Questions\n\t\t<\/div>\n\t\t<div class=\"dj-main-article-faq-items\">\n\t\t\t<div class=\"dj-main-article-faq-accordeon accordeon\"><dl>\n\t\t\t\t<dt>Are the pre-project phase and pre-development the same thing? \n\t\t\t\t<div class=\"cross\">\n\t\t\t\t<span><\/span>\n\t\t\t\t<span><\/span>\n\t\t\t\t<\/div>\n\t\t\t\t<\/dt>\n\t\t\t\t<dd>Both phases are preliminary, but there is a difference. When preparing for a project, the discovery phase can be considered a \u201cstrength test\u201d of the product idea. Its core is the clarification of requirements, especially from a business point of view (including the product competitiveness and the resources needed for its development). The pre-development phase is more about the developers\u2019 perspective. This includes deploying servers, setting up tools, API design, defining test strategy and a project roadmap, etc.<\/dd>\n\t\t\t<\/dl><dl>\n\t\t\t\t<dt>Why is it risky to omit the pre-development phase? \n\t\t\t\t<div class=\"cross\">\n\t\t\t\t<span><\/span>\n\t\t\t\t<span><\/span>\n\t\t\t\t<\/div>\n\t\t\t\t<\/dt>\n\t\t\t\t<dd>It\u2019s necessary to clearly understand that the decisions made in the Pre-Development phase will become the basis for the further development of the product. Therefore, in the future, even seemingly minor changes in the interface, for example, might require serious changes in the data structure, in which case you again will need to spend time\/money and involve qualified people.<\/dd>\n\t\t\t<\/dl><dl>\n\t\t\t\t<dt>Who participates in the software development process at the pre-development stage? \n\t\t\t\t<div class=\"cross\">\n\t\t\t\t<span><\/span>\n\t\t\t\t<span><\/span>\n\t\t\t\t<\/div>\n\t\t\t\t<\/dt>\n\t\t\t\t<dd><br \/><ul> <li>Business Analyst<\/li>\t <li>Tech Lead<\/li> <li>Project Manager<\/li> <li>QA<\/li> <li>Solution Architect<\/li> <li>UX\/UI Engineer<\/li> <\/ul> <br \/>Don't skimp on paying senior-level workers because mistakes can be costly. On the other hand, you may need to connect with some specialists only once because there's no need for constant participation in the project from their side.<\/dd>\n\t\t\t<\/dl><dl>\n\t\t\t\t<dt>What is your company's experience in performing pre-development? \n\t\t\t\t<div class=\"cross\">\n\t\t\t\t<span><\/span>\n\t\t\t\t<span><\/span>\n\t\t\t\t<\/div>\n\t\t\t\t<\/dt>\n\t\t\t\t<dd>The pre-development phase is the stage that precedes the development of software products in Django Stars. To conduct it, we engage experienced business analysts, project managers, engineers, designers, and solution architects. Our team has sharp tech skills and versatile knowledge of clients' domains and target locations trusted by Fortune 500 and Y Combinator.<\/dd>\n\t\t\t<\/dl><\/div>\n\t\t\t<\/div>\n\t\t<\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>When someone wants to emphasize the importance of the first step in doing something, we often hear them say something like, &#8220;It&#8217;s important to build a strong foundation.&#8221; But if you look at that plan more closely, it&#8217;s easy to see that the foundation isn&#8217;t the very beginning: before laying the cornerstone, and even before [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":3304,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[45,40],"tags":[62],"class_list":["post-3158","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-startup","category-tech-consultation","tag-it-processes"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Software Development Blog &amp; IT Tech Insights | Django Stars<\/title>\n<meta name=\"description\" content=\"What\u2019s the Pre-Development stage, where does it fit in the software development process? This guide helps you understand how to choose the best product architecture.\" \/>\n<link rel=\"canonical\" href=\"https:\/\/djangostars.com\/blog\/wp-json\/wp\/v2\/posts\/3158\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"The Pre-Development Phase: How to Avoid Mistakes | Django Stars\" \/>\n<meta property=\"og:description\" content=\"What\u2019s the Pre-Development stage, where does it fit in the software development process? This guide helps you understand how to choose the best product architecture.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/djangostars.com\/blog\/pre-development-phase\/\" \/>\n<meta property=\"og:site_name\" content=\"Software Development Blog &amp; IT Tech Insights | Django Stars\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/djangostars\/\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/a.ryabtsev\" \/>\n<meta property=\"article:published_time\" content=\"2021-08-18T12:13:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-21T12:07:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2021\/12\/The-Pre-Development-Phase-How-to-Avoid-Mistakes-that-May-Cost-You-a-Fortune.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1440\" \/>\n\t<meta property=\"og:image:height\" content=\"620\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Alexander Ryabtsev\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@djangostars\" \/>\n<meta name=\"twitter:site\" content=\"@djangostars\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Alexander Ryabtsev\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/djangostars.com\/blog\/pre-development-phase\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/djangostars.com\/blog\/pre-development-phase\/\"},\"author\":{\"name\":\"Alexander Ryabtsev\",\"@id\":\"https:\/\/djangostars.com\/blog\/#\/schema\/person\/f1a566bbee334235e6f57edd6930fdc1\"},\"headline\":\"The Pre-Development Phase: How to Avoid Mistakes that May Cost You a Fortune\",\"datePublished\":\"2021-08-18T12:13:31+00:00\",\"dateModified\":\"2025-10-21T12:07:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/djangostars.com\/blog\/pre-development-phase\/\"},\"wordCount\":2668,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/djangostars.com\/blog\/pre-development-phase\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2021\/12\/The-Pre-Development-Phase-How-to-Avoid-Mistakes-that-May-Cost-You-a-Fortune.jpg\",\"keywords\":[\"IT Processes\"],\"articleSection\":[\"Startup\",\"Tech Consultation\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/djangostars.com\/blog\/pre-development-phase\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/djangostars.com\/blog\/pre-development-phase\/\",\"url\":\"https:\/\/djangostars.com\/blog\/pre-development-phase\/\",\"name\":\"The Pre-Development Phase: How to Avoid Mistakes | Django Stars\",\"isPartOf\":{\"@id\":\"https:\/\/djangostars.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/djangostars.com\/blog\/pre-development-phase\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/djangostars.com\/blog\/pre-development-phase\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2021\/12\/The-Pre-Development-Phase-How-to-Avoid-Mistakes-that-May-Cost-You-a-Fortune.jpg\",\"datePublished\":\"2021-08-18T12:13:31+00:00\",\"dateModified\":\"2025-10-21T12:07:01+00:00\",\"author\":{\"@id\":\"https:\/\/djangostars.com\/blog\/#\/schema\/person\/f1a566bbee334235e6f57edd6930fdc1\"},\"description\":\"What\u2019s the Pre-Development stage, where does it fit in the software development process? This guide helps you understand how to choose the best product architecture.\",\"breadcrumb\":{\"@id\":\"https:\/\/djangostars.com\/blog\/pre-development-phase\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/djangostars.com\/blog\/pre-development-phase\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/djangostars.com\/blog\/pre-development-phase\/#primaryimage\",\"url\":\"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2021\/12\/The-Pre-Development-Phase-How-to-Avoid-Mistakes-that-May-Cost-You-a-Fortune.jpg\",\"contentUrl\":\"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2021\/12\/The-Pre-Development-Phase-How-to-Avoid-Mistakes-that-May-Cost-You-a-Fortune.jpg\",\"width\":1440,\"height\":620,\"caption\":\"The Pre-Development Phase How to Avoid Mistakes\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/djangostars.com\/blog\/pre-development-phase\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/djangostars.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"The Pre-Development Phase: How to Avoid Mistakes that May Cost You a Fortune\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/djangostars.com\/blog\/#website\",\"url\":\"https:\/\/djangostars.com\/blog\/\",\"name\":\"Software Development Blog &amp; IT Tech Insights | Django Stars\",\"description\":\"Welcome behind the scenes of software product development. We share our best practices, tech solutions, management tips, and every useful insight we\u2018ve got while working on our projects.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/djangostars.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/djangostars.com\/blog\/#\/schema\/person\/f1a566bbee334235e6f57edd6930fdc1\",\"name\":\"Alexander Ryabtsev\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/djangostars.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c456852d26226ecd8bc156a7339fc1f425a6774e8f9e07a977c060e2ecedebb9?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c456852d26226ecd8bc156a7339fc1f425a6774e8f9e07a977c060e2ecedebb9?s=96&d=mm&r=g\",\"caption\":\"Alexander Ryabtsev\"},\"sameAs\":[\"https:\/\/www.facebook.com\/a.ryabtsev\",\"https:\/\/www.linkedin.com\/in\/alexander-ryabtsev\/\"],\"url\":\"https:\/\/djangostars.com\/blog\/author\/alexander-ryabtsev\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Software Development Blog &amp; IT Tech Insights | Django Stars","description":"What\u2019s the Pre-Development stage, where does it fit in the software development process? This guide helps you understand how to choose the best product architecture.","canonical":"https:\/\/djangostars.com\/blog\/wp-json\/wp\/v2\/posts\/3158","og_locale":"en_US","og_type":"article","og_title":"The Pre-Development Phase: How to Avoid Mistakes | Django Stars","og_description":"What\u2019s the Pre-Development stage, where does it fit in the software development process? This guide helps you understand how to choose the best product architecture.","og_url":"https:\/\/djangostars.com\/blog\/pre-development-phase\/","og_site_name":"Software Development Blog &amp; IT Tech Insights | Django Stars","article_publisher":"https:\/\/www.facebook.com\/djangostars\/","article_author":"https:\/\/www.facebook.com\/a.ryabtsev","article_published_time":"2021-08-18T12:13:31+00:00","article_modified_time":"2025-10-21T12:07:01+00:00","og_image":[{"width":1440,"height":620,"url":"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2021\/12\/The-Pre-Development-Phase-How-to-Avoid-Mistakes-that-May-Cost-You-a-Fortune.jpg","type":"image\/jpeg"}],"author":"Alexander Ryabtsev","twitter_card":"summary_large_image","twitter_creator":"@djangostars","twitter_site":"@djangostars","twitter_misc":{"Written by":"Alexander Ryabtsev","Est. reading time":"13 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/djangostars.com\/blog\/pre-development-phase\/#article","isPartOf":{"@id":"https:\/\/djangostars.com\/blog\/pre-development-phase\/"},"author":{"name":"Alexander Ryabtsev","@id":"https:\/\/djangostars.com\/blog\/#\/schema\/person\/f1a566bbee334235e6f57edd6930fdc1"},"headline":"The Pre-Development Phase: How to Avoid Mistakes that May Cost You a Fortune","datePublished":"2021-08-18T12:13:31+00:00","dateModified":"2025-10-21T12:07:01+00:00","mainEntityOfPage":{"@id":"https:\/\/djangostars.com\/blog\/pre-development-phase\/"},"wordCount":2668,"commentCount":0,"image":{"@id":"https:\/\/djangostars.com\/blog\/pre-development-phase\/#primaryimage"},"thumbnailUrl":"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2021\/12\/The-Pre-Development-Phase-How-to-Avoid-Mistakes-that-May-Cost-You-a-Fortune.jpg","keywords":["IT Processes"],"articleSection":["Startup","Tech Consultation"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/djangostars.com\/blog\/pre-development-phase\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/djangostars.com\/blog\/pre-development-phase\/","url":"https:\/\/djangostars.com\/blog\/pre-development-phase\/","name":"The Pre-Development Phase: How to Avoid Mistakes | Django Stars","isPartOf":{"@id":"https:\/\/djangostars.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/djangostars.com\/blog\/pre-development-phase\/#primaryimage"},"image":{"@id":"https:\/\/djangostars.com\/blog\/pre-development-phase\/#primaryimage"},"thumbnailUrl":"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2021\/12\/The-Pre-Development-Phase-How-to-Avoid-Mistakes-that-May-Cost-You-a-Fortune.jpg","datePublished":"2021-08-18T12:13:31+00:00","dateModified":"2025-10-21T12:07:01+00:00","author":{"@id":"https:\/\/djangostars.com\/blog\/#\/schema\/person\/f1a566bbee334235e6f57edd6930fdc1"},"description":"What\u2019s the Pre-Development stage, where does it fit in the software development process? This guide helps you understand how to choose the best product architecture.","breadcrumb":{"@id":"https:\/\/djangostars.com\/blog\/pre-development-phase\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/djangostars.com\/blog\/pre-development-phase\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/djangostars.com\/blog\/pre-development-phase\/#primaryimage","url":"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2021\/12\/The-Pre-Development-Phase-How-to-Avoid-Mistakes-that-May-Cost-You-a-Fortune.jpg","contentUrl":"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2021\/12\/The-Pre-Development-Phase-How-to-Avoid-Mistakes-that-May-Cost-You-a-Fortune.jpg","width":1440,"height":620,"caption":"The Pre-Development Phase How to Avoid Mistakes"},{"@type":"BreadcrumbList","@id":"https:\/\/djangostars.com\/blog\/pre-development-phase\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/djangostars.com\/blog\/"},{"@type":"ListItem","position":2,"name":"The Pre-Development Phase: How to Avoid Mistakes that May Cost You a Fortune"}]},{"@type":"WebSite","@id":"https:\/\/djangostars.com\/blog\/#website","url":"https:\/\/djangostars.com\/blog\/","name":"Software Development Blog &amp; IT Tech Insights | Django Stars","description":"Welcome behind the scenes of software product development. We share our best practices, tech solutions, management tips, and every useful insight we\u2018ve got while working on our projects.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/djangostars.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/djangostars.com\/blog\/#\/schema\/person\/f1a566bbee334235e6f57edd6930fdc1","name":"Alexander Ryabtsev","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/djangostars.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c456852d26226ecd8bc156a7339fc1f425a6774e8f9e07a977c060e2ecedebb9?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c456852d26226ecd8bc156a7339fc1f425a6774e8f9e07a977c060e2ecedebb9?s=96&d=mm&r=g","caption":"Alexander Ryabtsev"},"sameAs":["https:\/\/www.facebook.com\/a.ryabtsev","https:\/\/www.linkedin.com\/in\/alexander-ryabtsev\/"],"url":"https:\/\/djangostars.com\/blog\/author\/alexander-ryabtsev\/"}]}},"_links":{"self":[{"href":"https:\/\/djangostars.com\/blog\/wp-json\/wp\/v2\/posts\/3158","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/djangostars.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/djangostars.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/djangostars.com\/blog\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/djangostars.com\/blog\/wp-json\/wp\/v2\/comments?post=3158"}],"version-history":[{"count":14,"href":"https:\/\/djangostars.com\/blog\/wp-json\/wp\/v2\/posts\/3158\/revisions"}],"predecessor-version":[{"id":9930,"href":"https:\/\/djangostars.com\/blog\/wp-json\/wp\/v2\/posts\/3158\/revisions\/9930"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/djangostars.com\/blog\/wp-json\/wp\/v2\/media\/3304"}],"wp:attachment":[{"href":"https:\/\/djangostars.com\/blog\/wp-json\/wp\/v2\/media?parent=3158"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/djangostars.com\/blog\/wp-json\/wp\/v2\/categories?post=3158"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/djangostars.com\/blog\/wp-json\/wp\/v2\/tags?post=3158"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}