Skip to content

Instantly share code, notes, and snippets.

@DavidGinzberg
Created November 28, 2016 14:51
Show Gist options
  • Save DavidGinzberg/b507ddd7c2303daa1c91b878a5ade505 to your computer and use it in GitHub Desktop.
Save DavidGinzberg/b507ddd7c2303daa1c91b878a5ade505 to your computer and use it in GitHub Desktop.

Planning real-world projects

OR

What does "Actually Try" mean?

In the classroom, things like "actually try", "think about this seriously" "treat it like a real world project", "think like an engineer" are all shortcuts for "This is not just a thought exercise. The end product should be something that could actually be sold to client companies for them to use without having to write any of their own code" (except perhaps some CSS to apply their own branding).

Considerations:

Who are the stakeholders?

Software is built to solve a problem, not just to be cool ("cool" software often solves the problem of "I'm bored" or "I don't know how to do this task in code"). The problem (or problems) is one that is faced by one or more stakeholders. Build bad software and the stakeholders may treat you like a vampire (heh).

In what environment should this run?

Real world projects that are started up and run exclusively in IntelliJ or another IDE are extremely rare (and should be nonexistent). Think about whether the solution you are building runs on a server or a browser (or parts in both), on mobile devices, in low-level hardware (IoT devices, onboard computers for vehicles, cable boxes, or other specialized equipment). Your solution should be able to run for a prolonged period of time without the need to be restarted, but likely also needs to be fault tolerant (if something requires your solution to be restarted it should be able to resume normal operation).

How are users expected to interface with this?

Are you building an API for other developers to query? A dashboard for non–technical stakeholders? A mobile app? Do you need to produce reports? If so, do they need to be scheduled, run ad-hoc, or some combination of the two?

How is data entered? Are stakeholders expected to sit in front of a database console and manually type in all of the information needed? does it come in from some other application? Is some or all of the data you need going to be coming from another source such as exported excel spreadsheets (eg: CSV files).

How will this be deployed?

This is not quite the same as the environment in which your solution runs; At this point you should be asking whether clients need their own hardware, have to hire you or a third party to set up your software, or if you are providing a self-contained solution on your own (or 3rd party eg AWS/GCP/Heroku or others) hardware or delivered as an installable application (desktop and/or mobile). Do clients just log in to your site and servers in order to use your application? At what point does the client pay, and how often do they have to pay? This last part may be more thought experiment until you have actually built something you want to sell, but having that answer earlier can help with planning a path to a finished product.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment