{"id":338,"date":"2021-07-14T08:11:28","date_gmt":"2021-07-14T08:11:28","guid":{"rendered":"http:\/\/suimy.me\/?p=338"},"modified":"2024-05-01T17:04:38","modified_gmt":"2024-05-01T17:04:38","slug":"software-development-plan-made-easy","status":"publish","type":"post","link":"http:\/\/suimy.me\/index.php\/2021\/07\/14\/software-development-plan-made-easy\/","title":{"rendered":"Software Development Plan Made Easy"},"content":{"rendered":"\n
The first issue concerning software development projects is the fact that\u00a0many of them are unique<\/strong><\/a>.\u00a0<\/strong>So unless you\u2019re developing the exact same software over and over again, the parameters differ too much to use them as a one stable point of reference.<\/p>\n The second issue concerns\u00a0the rapid evolution of technology.\u00a0<\/strong>We don\u2019t even have to go back 50 years for comparison \u2014 it\u2019s enough to see\u00a0how much has changed just in the last decade<\/a>. Software development has no choice but to reflect that in the form of\u00a0constant<\/strong>\u00a0new programming languages<\/strong><\/a>, frameworks, libraries, and tools.<\/strong><\/p>\n On top of that,\u00a0clients\u2019 needs along with market demands change as well.<\/strong>\u00a0Suddenly, the websites have to be SEO friendly, their mobile versions need to be top\u2013notch to satisfy the constantly raising market share of mobile devices, and web apps need to be restricted to one single page, following the example of Facebook and many other successful projects.<\/p>\n Also, it will be beneficial to follow mobile SEO strategies<\/a> to enhance user experience and improve mobile conversion.<\/p>\n It\u2019s a lot. Each project has the potential to bring something new, and the proposed solutions can\u2019t always be based on experience gained by the\u00a0years of delivering different software. That\u2019s what makes software development\u2019s estimations so difficult \u2014 there\u2019s simply\u00a0too much uncertainty and novelty to be able to properly assess each project.<\/strong><\/p>\n That\u2019s also the reason why being an optimist doesn\u2019t pay off. Assuming that everything will go well with no delays, that there won\u2019t be any bugs to fix or last\u2013minute changes, is naive.\u00a0By thinking of the worst\u2013case scenarios, you can predict many issues and prepare for them in advance<\/strong>\u00a0\u2014 for example, by adding time buffers in recognition of sick leaves developers might have to take.<\/p>\n To properly and masterfully manage all those unknown variables,\u00a0Steve McConnel<\/a>, an expert in software engineering and project management, introduced a concept known as the\u00a0Cone of Uncertainty<\/strong>. It\u2019s a model describing the level of uncertainty throughout the whole project \u2014 at the start, the level of uncertainty is huge. The more time passes though, the more data you gather and therefore, the more you know. And so the challenge lies in achieving that level of knowledge as fast as possible.<\/p>\n Software development plan describes\u00a0what needs to be done and how in a clear, concise manner<\/strong>, so that the whole team knows their roles and responsibilities, but with enough flexibility to reflect the tumultuous nature of software development.<\/p>\n Instead of having one strict deadline for the whole project, it\u2019s\u00a0divided into smaller parts<\/strong>\u00a0instead,<\/strong>\u00a0and the success rate is measured by\u00a0milestones<\/strong>. Depending on the type of\u00a0Software Development<\/strong>\u00a0Life Cycle<\/strong><\/a>, the whole process will include iterations, revisions, and feedback. So even though it may seem chaotic at first, the whole team, as well as stakeholders, will know the state of the project at all times.<\/p>\n How does the software development lifecycle differ from the software development plan?<\/strong>\u00a0The former is a specific roadmap, describing all the steps and their order necessary to complete the project, while the latter focuses on explaining the scope of the project and all its circumstances. In short, a software development plan explains\u00a0what will be done and why,<\/strong>\u00a0while a software development lifecycle explains\u00a0how it will be done.<\/strong><\/p>\n Now that we got all that out of the way, let\u2019s move on to the phases that will ensure a proper software development plan everyone can rely on.<\/p>\n<\/section><\/div>\n The first phase starts the moment the client contacts a software house. During the first talks, besides deciding on terms of cooperation, the client should say:<\/p>\n The software house\u2019s responsibility is to discern whether\u00a0the project matches the business decisions.<\/strong><\/p>\n Think of it that way \u2014 the client doesn\u2019t come with a project idea, they come with a\u00a0problem<\/strong>. The vendor doesn\u2019t deliver a project: it delivers a\u00a0solution<\/strong>. If the solution doesn\u2019t solve the client\u2019s problem, it\u2019s a waste of money. Period.<\/p>\n This phase focuses on discovering\u00a0what can be done to fix the problem\u00a0<\/strong>and\u00a0how.<\/strong>\u00a0And also,\u00a0whether it\u2019s possible to do so in the first place\u00a0<\/strong>with the client\u2019s budget, time limit, and other restrictions. That\u2019s within the vendor\u2019s responsibility to figure out, with the client\u2019s help.<\/p>\n Here\u2019s a time for settling on the project\u2019s\u00a0scope<\/strong>. Besides focusing on the\u00a0how<\/strong>, it also has to be decided\u00a0with what<\/strong>\u00a0\u2014 when it comes to tools, languages, resources \u2014 and\u00a0who\u00a0<\/strong>\u2014 when it comes to the members of the software development team, any external groups whose help is needed, and who will be the project manager.<\/p>\n When all of the above has been decided, it\u2019s easier to give a rough estimate of the budget and first deadlines.<\/p>\n Before digging into details, it\u2019s important to decide on the\u00a0essential features of the software project<\/strong>\u00a0(usually via workshops). All the nonessential features should be categorized as \u201cnice\u2013to\u2013haves\u201d to ensure the right order of priorities. If your software project looks modern and sleek, but doesn\u2019t serve its intended purpose, it\u2019s a failure.<\/p>\n Only then you can start creating all the\u00a0wireframes, user stories, and prototypes.<\/strong>\u00a0Due to that, you can check if everyone\u2019s on the same page, deal with any misunderstandings or dispel any doubts, as well as assess the risk. This part is also crucial to collect all the feedback you possibly can \u2014 mainly from the stakeholders and project team members.<\/p>\n At this point, a\u00a0final estimation<\/strong>\u00a0is possible: the scope of the project, the timeline, budget, and so on. There are still uncertain variables in play though: while the scope of the\u00a0cone of uncertainty<\/strong>\u00a0is smaller at this stage, it\u2019s still significant enough.<\/p>\n Once the whole scope of the project is known and understood by all, it has to be broken down into smaller phases that end with\u00a0milestones<\/strong>. A good example of this is\u00a0sprint<\/strong>, frequently used in agile development, which is a small time\u2013boxed period with set tasks to complete. Sprint is repeated as many times as it\u2019s necessary, till the project\u2019s completion.<\/p>\n This approach ensures constant revision of what\u2019s been done and what\u2019s still left to do, making it easier to control and manage. Those frequent progress checks are also more convenient for stakeholders, who are kept in the loop throughout the whole project.<\/p>\n The biggest upside of creating such a project schedule is its\u00a0flexibility.<\/strong>\u00a0It\u2019s easier to implement any change requests, catch glaring mistakes quickly, and to improve the software development process itself at any moment. Most importantly, it makes it simpler to check whether the product delivers significant value to the end\u2013users.<\/p>\n Once everything on the project organization side is complete, it\u2019s\u00a0time for the developers to bring the idea to life<\/strong>. It\u2019s also a good moment to set\u00a0quality assurance<\/strong><\/a>\u00a0in place, if it hasn\u2019t been yet, to simultaneously fix bugs and any other reported issues. Additionally, you can also include\u00a0User Acceptance Testing\u00a0<\/strong>(if that\u2019s applicable to your circumstances)\u00a0<\/strong>or even involve your client in the final testing stages.<\/p>\n<\/span>Software Development Project Plan<\/strong><\/h1>\n
Defining The Problem<\/strong><\/h2>\n
\n
<\/span>Finding The Solution<\/strong><\/h2>\n
<\/span>Perfecting The Idea<\/strong><\/h2>\n
<\/span>Preparing The Environment<\/strong><\/h2>\n
<\/span>Execution<\/strong><\/h2>\n