Choosing and Beginning a Project

Choosing a project

  • Interest: Will you still care about this in 7 weeks?

  • Scope: Can you do it in 6 weeks?

  • Incremental: Can you do something cool in 2 weeks?

  • Uniqueness: What's the relation to existing stuff?

  • Multiple-Use: Can you use this project for more than this class?

  • Modular: Is it all "of a piece" with strong coherence and weak coupling?

  • Choose quickly!

Some classic project domains

  • Something you want to have: Often related to work or business. Make sure it is in-scope

  • Something you've always wanted to build. If you have a project passion, this is a good class for it

  • Something overlapping another class. Fine with me, but please clear it with the other instructor as well

  • A game. This makes a really good project

  • A webapp. But for what? Webapps are a great project for this course. Understand that you will be evaluated on the code, not on assets or data. Probably use a framework

  • A mobile app. This is hard. I wouldn't suggest it unless you have a ton of time and coding skill and/or have already worked in the mobile space. You should have access to the hardware you're targeting — the simulator is usually not good enough to get work done

  • A library. Some of the best projects are this. A good library with a solid API is worth every bit as much as an app

  • A module for an existing Open Source project. This has to be something new, and coherent. But if some project has a need for a modular piece, this can be a great way to contribute

  • A hardware/software project. These are great fun. But do not attempt without some existing clue about this stuff: it's really hard to get started with otherwise

Some classic project red flags

If any of these apply, you should think carefully

  • Project seems potentially very large. I am much happier with a small project that is finished and clean than with a half-finished garbage dump of code

  • Project is far outside your area of expertise. If you are hoping to use your project to learn a new programming language or something, think very carefully: we only have about six weeks for the project, and so the difficulty is quite high

  • Project is something super-generic. To be honest, I've grown quite allergic to things like "shopping list" or "exercise recorder"; they are all too often extensively plagiarized. I'm sure this doesn't apply to you, but please pick something you're passionate about

  • Project has legal or ethical concerns. Just don't. Marijuana-related stuff is expressly forbidden at PSU. Medical stuff is pretty much out of bounds. I'd prefer not hacker tools (but talk to me)

  • Project is incoherent. The project must be a sensible, modular piece of work. Just "doing stuff" is not an open source project

Last modified: Saturday, 27 June 2020, 11:03 PM