Software Development Processes, or “How To Make Software”
TIME LIMIT: 30 minutes
“Hey, I have a great idea for an app…”
This primer details the software development process we generally follow in Zero To Code. Process is how developers go from “I have a great idea for an application” to “Check out DeployedApp.com.”
There are countless books and essays on the subject of software development processes. There is no One Right Way to make software. However, it is a good idea to have some sort of process in mind if and when you are planning to do so. Process helps you think about problems. Process helps you turn system requirements into manageable tasks and components, the sum of which are deployed software systems.
We first consider this topic from an Engineering Manager’s perspective - and see where developers like you fit into their purview. Having thus situated ourselves, we consider the process from a Developer’s perspective. We wrap up by explaining how the developer tools you acquire in Part 2 will fit into your web development process.
Piloting The Ship: An Engineering Manager’s Perspective
Starting at the top! An Engineering Manager is someone who runs a team of developers and designers and testers. They often interface with the business people at a company (who often have ideas, or “feature requests”). Their official title may be “CTO”, “Team Lead”, or “Scrum Master”, but whoever they are, the Engineering Manager is the the person responsible for making sure everyone on a technical team is moving in the same, correct direction.
Although there are many wrinkles and differing viewpoints on the process, the software development process generally looks something like this to an Engineering Manager:
Software engineering managers have a lot of their plates. They are interfacing with business, technical, and design people, all of whom have their own, sometimes competing sets of priorities. An Engineering Manager is responsible for achieving the workflow you see above, of which you are only one part. See where it says “You Are Here”? Knowing and playing your role in the process will go a long way towards helping you succeed.
Rowing Your Oar: A Developer’s Workflow
Let’s dial into what you have to do to play your role. Your software workflow generally looks like this:
Let’s go through these steps in a little more detail.
Get Coding Assignment
In some way, shape, or form, you are given a set of requirements or specifications for what software is to be built. These may come in the form of a Photoshop Document with the instructions to “build a webpage that looks like this”. It may come in the form of a “user story”, i.e. “A user should be able to click the menu button and see links for their profile or timeline”.
There are dozens of commonly used tools for communicating assignments to developers. Trello, Atlassian’s JIRA, Basecamp, and GitHub Issues are some of the most common solutions you’ll find software companies using. You will develop opinions and preferences about this as you gain experience across your first few jobs.
In this book, your coding assignments are simply made clear in each chapter.
Make a Plan
One big mistakes newbies make is that they just start mashing out code. This is no way to live. Sitting down and thinking about a problem is the right way to begin solving it. Tease software requirements out into logical pieces before you begin writing. Draw diagrams and sketch your plan. Figure out which files you think you need to create and which code should live in which files. Only then should you proceed to write code.
Almost every project chapter in this book has a Make A Plan section in it.
The very next chapter of this book helps you select a text editor, which is a program you can use to write code into files. Use the text editor to write your code.
Test & Iterate
As you are working on and finishing webpages, it is important to view them in browsers and make sure you are on the right track. Testing your work early and often makes your iterations of work more productive. An iteration is the act of repeating a process. Iterations occur with each successive refinement of your webpages.
As a general rule, it is better to iterate your way to success than to try to make everything perfect all in one fell swoop. This applies to making individual webpages and working on your skills in general. This entire book takes a very iterative approach.
You will deploy your webpages using the GitHub Pages service. The process is extremely lightweight and easy to use. Many programmers deploy static websites this way.
Track Code With Version Control
Coders save their code using version control systems. We use the git version control system - each project (or “codebase”) becomes its own git repository. We use GitHub, a software service, to save our repositories somewhere besides our own computers (if your computer gets stolen, you don’t want to lose your work!). All of this work will show up on your GitHub user profile, which will be an important resume piece for you.
Repeat steps as necessary.
As we said, iterate your way to success. Perhaps you didn’t plan enough before you started writing your code? Scrap the code you’ve written and start back at the drawing board (“Make A Plan”).
Exercises and References
Go to https://images.google.com and search for terms like “Software Development Life Cycle” and “Software Development Process”. Browse through some of the many different diagrams. This is a good way to get a feel for how managers who may interview you are likely to think.
Skim the Wikipedia article on software development processes. https://en.wikipedia.org/wiki/Software_development_process
The Mythical Man Month by Fred Brooks is a timeless classic on managing software development projects. Go skim the Wikipedia entry about it.
In your Coding Journal, draw at least one diagram of a software development process.