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, ...).