se2014.com

A learning framework for hackers.

What I Wish I Knew for the Design Project

Having completed their design projects, the 2012 class of Software Engineering gave an informal presentation on Thursday to share their experiences.

Choosing Groups

The difference between marriage and your group is that you can divorce a marriage.” -P. Ward

  • Choosing your group is the key step, will be with them for 1.5 years
  • Similar (interests, work ethic, coding styles, language/framework)
    • “… or you’ll be working by yourself, and there will be unhappiness.”
  • Technical Electives
    • If enrolled together, your project will stagnate or suffer
  • Multiple Approaches
    • Find people you’ve worked with before, people who you know you can work with
    • Defer group formation, have people coalesce around project ideas
      • “Don’t be afraid to work with someone you’ve never worked with before.’
    • “You don’t get to choose who you work with in industry.”
  • YMMV: Significant Others
    • “I’m not sure I’d want to work with my wife. You know, seeing the same person 168 hours a week. Maybe your relationship is more likely to succeed if you’re in different project groups.”
  • Analogies
    • Like roommates - not everyone you’re good friends with is someone you want to be roommates with
    • “In 2011, a divorce did happen, but that meant someone transferred out of the program.”

Choosing a Project

It’s fun to brainstorm and come up with ideas.” -A. Voigt

  • Evaluate ideas wrt. personal goals for the design project
    • Research?
  • It’s fun to brainstorm and come up with ideas
    • Take notes; record all ideas when brainstorming
    • Don’t get stuck in this stage forever
  • Scope: build MVP (Minimal Viable Product) first, then iterate
    • est. 40 hrs/person for MVP – any more and it’s not minimal enough

Having A Customer

I think Paul Thagard is a good customer.” -D. Rayside

  • Start looking for an external customer early
    • “Good” client defines requirements, will use product (daily?)
    • Regular (daily/weekly) meetings can be motivating
  • Be clear about expectations, esp. intellectual property, money, legal
    • Policy 73
    • “Things get more complicated when you go outside the university.”
    • Template IP agreements coming: P. Ward, VeloCity/SSO

Project Management

There will be arguments over decisions.

  • Divide project into small and tangible chunks
  • “Feature freezes” for bug fixing
  • Have meaningful commit messages
  • Commit after each bug/feature, NOT after three and a half weeks
  • Prioritize: requirements tend to slip each week
  • Work over co-op is challenging after 9-hr work day
    • Groups that -do- work on FYDP during work term reported feeling ahead of the game
  • Consider selecting a team leader (BDFL)
  • Get mobile apps into market ~1 month early to get feedback

Technical Infrastructure

I will punish you for not having an automated build system.” -D. Rayside

  • Bug Tracking: GitHub
  • Automated Build Systems
  • Test Harnesses / Unit Tests
    • good for refactoring
  • bring in Joel test
  • Domains
    • Do NOT use GoDaddy
    • Alternatives: NameCheap, Netfirms, Dyn
  • Email
    • Google Apps: Free Tier
    • Use project-specific email when signing up for stuff
      • Avoids single point of failure (if you get hit by a bus and everything is attached to your email address…)
  • Web Hosting
    • Cloud/VPS: AWS, Prgmr, Linode
      • Skills and Flexibility
      • OpenBSD?
    • Elastic Beanstalk, App Engine, Heroku
      • Vendor lock-in
  • SSL
    • Free certs from cert.startcom.org, www.startssl.com
  • Be wary with ORM limitations: raw SQL is occasionally better
    • Does your ORM do LEFT SEMI JOIN?

Miscellaneous

Here’s a story - an unprofessional story in a sense - of a wiki that lived on a machine in someone’s office. And that hard drive died.” -D. Rayside

  • D. Rayside intends to add “a bit of structure” to provide “social motivation” to get students to work on the design project
    • Each team submits lines and hours, and we take the top and bottom and annoit them as “professionals” and “mediocrity”
    • “I want to keep the data in a programatically convenient form.”
  • Historical artifacts available from 2012 class
    • None from prior years
  • We will likely have D. Rayside for SE 490
  • The ultimate deadline is on symposium day at the end of 4B
  • Be enterprising, practical, creative, risk-taking, innovative, relevant

Assignment Due Dates

CS 349 Exam Question Submission: Ongoing ( See Schedule )

SE 350: Lab deliverables and due dates are also posted on Learn.

SE 380: Schedule of labs and deliverables posted on the SE 380 site (See calendar)

January

  • 1
  • 8
  • 15
    • Wed 18: CS 341 Assignment 1 (5 pm)
    • Thu 19: SE 350 Course Book Group Deadline
  • 22
    • SE 380 Lab 1
    • Sun 22: CS 349 Assignment 1 (10 pm)
    • Wed 25: SE 350 Quiz 1
  • 29
    • Web Feb 1: SE 380 Lab 1 Report (9 am)
    • Wed Feb 1: CS 341 Assignment 2 (5 pm)
    • Fri Feb 3: SE 380 Prelab 2 (9 am)

February

  • 5
    • SE 380 Lab 2
    • Sun 5: CS 349 Assignment 2 (10 pm)
    • Mon 6: SE 350 P1 (8:30 am)
  • 12
    • Wed 15: SE 380 Lab 2 Report (9 am)
    • Wed 15: SE 350 Quiz 2
    • Fri 17: SE 380 Prelab 3 (9 am)
  • 19
  • 26
    • SE 380 Lab 3
    • Sun 26: CS 349 Assignment 3 (10 pm)
    • Tue 28: CS 341 Midterm (8-9:50 pm, M3 1006, alternate session 6-8pm)
    • Wed 29: CS 341 Assignment 3 (5 pm)
    • Wed 29: SE 380 Midterm (5:30-6:50 pm, Room TBD)
    • Fri 2: CS 349 Midterm (4:30-6:00 pm, Room TBD)

March

  • 4
    • Wed 7: SE 380 Lab 3 Report (9 am)
    • Fri 9: SE 380 Prelab 4 (9 am)
  • 11
    • SE 380 Lab 4
    • Mon 12: SE 350 P2 (8:30 am)
    • Wed 14: SE 350 Quiz 3
    • Wed 14: CS 341 Assignment 4 (5 pm)
  • 18
    • Sun 18: CS 349 Assignment 4 (10 pm)
    • Wed 21: SE 380 Lab 4 Report (9 am)
  • 25
    • Sun 25: SE 380 Prelab 5 (11:59 pm)
    • SE 380 Lab 5
    • Mon 26: SE 350 P3 (8:30 am)
    • Wed 28: SE 350 Quiz 4
    • Wed 28: CS 341 Assignment 5 (5 pm)

April

  • 1
    • Sun 1: CS 349 Assignment 5 (10 pm)
    • Mon 2: SE 380 Lab 5 Report (9 am)
    • Mon 2: SE 350 Project Final Report (11:59 pm)