Oh-My-Bill: Project Introduction

I'm JS developer with 13 years of professional experience. I'm always happy to teach my craft.
Search for a command to run...

I'm JS developer with 13 years of professional experience. I'm always happy to teach my craft.
No comments yet. Be the first to comment.
I’ve been working in programming for the last 16 years. Let’s see what changes I see in our industry that are enabled by generative AI. Rapid prototyping The last few months, I’ve been working on a set of WordPress plugins, related to event organizat...
Writing unit tests takes time and effort. Nonetheless, many teams insist on writing them anyway—that’s because of the benefits they bring to a project. Those benefits are mainly the following: fast feedback—unit tests speed up each iteration of twea...

Pure functions are the perfect case for unit testing. For a given input, we always expect the same output—there is no internal state involved. Let’s take a look at a few examples and some simple tests that check if the methods work as expected. Jasmi...

Let’s say you have a job interview in a few days. How should you prepare for it so that you can make an informed decision about joining the company, as well as make sure that your interests are taken care of? Prepare your questions An interview is a ...

Creating example projects is a common way of showing your skills to potential employers. Let’s take a look at what’s important to keep in mind when building personal projects with an eye toward impressing prospective employers. Simplicity Building ap...

As I mentor people who are getting into IT, I’ve noticed a gap in the learning resources they tend to use. There are plenty of courses that allow you to follow someone making an application. Unfortunately, following along with someone is not how one usually works. Normally, you get a set of requirements, and from there, you start figuring out a solution that allows the user to achieve their goals.
To give my mentees the possibility to experience a real-world workflow, I give them a description of a simple but useful application. Here, I’ll present an improved project introduction, so you will be able to repeat a similar exercise as well.
As a person living through weather catastrophes and energy crises, I want to monitor precisely my electricity usage. I want to create an application with which:
The user of the application should be able to monitor their energy consumption in “real time”. Instead of waiting a month or two for the bill to arrive, they should have a solid estimation of how much energy they’ve used so far. So, when they find themselves in a new situation, such as:
they will be able to see and control their spending.
A secondary use case would be to evaluate the cost of using different appliances. So, for example, by controlling what’s running and when, the user could estimate:
User stories describe what the user can do in the application, from their perspective. They remind the programmers about how people will use the application, and they test scenarios that can be used to make sure the application works as expected. The format of user stories is usually somewhat repetitive, as you will see in the examples.
As a user, I want to configure my energy tariff, by setting:
Those values should be saved in the application and be changed only once every few months: when there is change to the tariff.
As a user, I want to record my current readings of the energy meter. I want this data to be stored for later use—so I can create a log of readings that can be used for estimating consumption in a given time. For example:
As a user, I want to be able to read cost estimation based on the data I collected. For a start, it could be a simple table of starting time, end time, energy consumption, and cost. In further interactions, it would be great to have some charts with daily or hourly energy consumption.
The first exercise for my mentees was to draw on a piece of paper the interface that they see for this application. It turned out to be a very good idea—apparently, the ‘obvious’ interface I had in mind is everything but obvious, and everybody had slightly different ideas for how to implement it. When you work with a client, it’s important to get their feedback as soon as possible, without wasting time on building stuff they don’t need.
This is an approach I presented earlier in How to Collect Inputs for Your Project. When I have enough examples of different people’s approaches to this project, I’ll share them on the blog as well—but the goal of this exercise is to start with a white piece of paper and requirements. This forces one to imagine an interface that implements the requirement.
Are you interested in learning how to build projects from requirements to deployed applications? Sign up here to get updates about new articles in this series:
Please share your sketch in the comments if you try it yourself! You will be surprised at the ways the same requirements are interpreted by different people.
P.S. Are you interested in energy efficiency? This application is a poor-man's version of the approach shown in a blog post I read a long time ago—something that would be overkill for most people.