Skip to content

Build software that is needed!

Quote

Engineers like to solve problems. If there are no problems handily available, they will create their own problems. - Scott Adams

Before inventing a problem, look for a real one! When considering an idea for your project, ask yourself a question regarding the utility of your product. If you’re willing to solve a real problem, you enjoy the advantage of having a real "customer" with real "expectations" and a software project with real "requirements" and "constraints".

Where are the "real" problems?

You are wearing different hats! You are a member of several communities and organizations. Talk to people in your circles and uptake a real problem people actually have. Indeed, there are many software applications out there. Yet, people constantly look for better, faster and smarter ways to accomplish everyday tasks. And fortunately for us software engineers, there are still lots of rooms for improvements in existing software products (as well as many novel ones to be built).

An example: Gateway Signup App!

As an instructor, I reached out to my circle for their software needs. The following is an email from my colleague Dr. Sara More, Associate Teaching Professor and the Director of Gateway Computing here at JHU.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
Hi Ali,

Here’s a description of the signup system we’d like to have for Gateway 
Computing.

Over a semester-long Gateway Computing course, students typically take frequent 
in-class quizzes we call assessments. If a student doesn't perform above a 
particular threshold score on a required in-class assessment, they may elect 
to sign up to take a single retake for that assessment. 
The retake takes place outside of class during the following week. 
We have a room reserved for a number of specific 50-minute sessions during the 
week, and 2 course assistants jointly proctor during each session. 
At any given time, we can only accommodate a fixed number of student retakes, 
to ensure effective proctoring. When we have 2 proctors for a session, 
the maximum number of student retakes allowed during that session is 10. 
Depending on course enrollments, we could have anywhere from 2 to 10 different 
sessions planned for a given week.

We’d like an application which allows students to sign themselves up for retake 
sessions during a given week. The application should disallow a single student 
from signing up for more than one session during that week, and should not 
permit more than 10 students to sign up in any particular session. 
For privacy reasons, students shouldn’t be able to access the list of students 
who have signed up for retake sessions, but they should be able to monitor 
the number of slots available in a given session. 
Once a student selects a time for their retake, they should receive an immediate
email confirmation of their selected session. 

Course staff (instructors and course assistants) handle the setup within the 
system for an “event” (the list of all signup sessions planned for a given week). 
Any authorized member of the course staff should be able to log in to create 
an “event" (the list of all signup sessions planned for a given week), and later
publish the event (create a signup link that can be shared with students) so 
that students can begin signing up. Prior to publication of the event, 
course staff should be able to set up a custom window of time during which 
signups for that list will be permitted. 
At any time during or after creating a week’s signup event, course staff should
have the option to view a summary report which includes a list of the students
signed up for each session. If possible, we’d also like to add a related 
component which allows course assistants to sign themselves up as proctors 
for the listed sessions, but students in the course shouldn’t be aware of this.

Until now, we have been using [signupgenius.com](https://www.signupgenius.com/) 
for student retake signups, but to get some of the features we wanted, we need 
to pay for a premium account. 
We’d prefer to create an in-house signup system instead, and customize it to 
meet our needs exactly.

Please contact me if you have any questions.

Best,
Sara

The "problem" above requires a software solution which fits well with our expectations in OOSE (in terms of architecture, scope, difficulty, ...).