B-Side: Lo-Fi Software Development

Help Make These Materials Better!

I am actively working to complete and revise this eBook and the accompanying videos. Please consider using the following link to provide feedback and notify me of typos, mistakes, and suggestions for either the eBook or videos:

This is the working draft of a very incomplete eBook. Content will change as chapters are developed and refined. Check back later for a more complete version.

What’s the Point?

* *

Source code examples from this chapter and associated videos are available on GitHub.


.1. Programming Paradigms

Imperative vs. Declarative

Object-Oriented, Functional, etc.

.2. Version Control

What is Git, what’s a repository, why we use it

Local vs. remote, commits, pushes

.3. Software Development Process (SDLC content from OOP book)

Learning to write code means creating a lot of programs—​mostly small, straightforward programs at first. Remember those awful word problems where a train leaves Chicago traveling 40 mph, and another train leaves Denver at 35 mph? That kind of stuff; but in my course, we don’t get too caught up in the math part of it. But we care a lot about understanding the requirements of a program and implementing it successfully.

As our programs become bigger and more complex, we’ll need to work within a deliberate design and implementation process in order to keep ourselves organized and focused. Even the smaller programs we’ll develop while learning the basics will benefit from a thoughtful approach beyond just opening a new file and starting to type. It ensures that we use our time efficiently. And when we are faced with solving a programming problem that really intimidates us, the process will help make the task more approachable.

For big or small projects, a good general approach to software development is:

Analysis

Identify the goals and scope of the program. As a rule, keep it small and focused—​we can always add features later. Ask yourself, What does this program need to do?

Testing Plan

Determine how the final program will be tested. The testing plan will be useful, but most importantly, taking the time to establish a specific testing plan ensures that we thoroughly understand the program before we begin writing code. If we don’t know how the program will work, we’re not yet ready to begin coding. Ask yourself, How will I make sure the program works correctly?

Implementation

Write and test the code. We say that this is an iterative (or "repeating") process, meaning we’ll write and test one small piece, staying with it until we know it’s good. Then we’ll move on to the next piece and repeat. Ask yourself, What code do I need in order to get the next part of the program working?

Revise or maintain

If our needs or program requirements change, we’ll need to go back to the first step and begin planning the next version. If not, we’ll need to monitor that the program continues to perform as expected over time. Ask yourself, What’s next for this program?

We’ll flesh out this process as we go—​and as our programs become more advanced.

.4. Programming on a Team

Agile, Scrum, and Sprints


Check Yourself Before You Wreck Yourself (on the assignments)

Chapter Review Questions

1.

2.

3.

Sample answers provided in the Liner Notes.