Teaching Software Engineering and Startups at UofT


AttributionNoncommercialNo Derivative Works Some rights reserved by SteveGarfield

About 5 years ago I was asked to teach a 4th year undergrad software engineering course at the University of Toronto. The course had been previously cancelled due to low enrollment; in an era dubbed the “Software Gold Rush” a cancelled course indicated something was wrong…

Software engineering is difficult to teach
Students are expected to learn how to avoid mistakes they never made. A great divide results from the instructor talking about concepts suitable for a mature organization when students are all about working their ass off and getting things done the night before. We borrowed several lessons from startups, having been personally involved with two startups over a dozen years. The way startups work are much closer to students ways of doing things. Since launch, course enrolment has tripled and two Y Combinator applications have been submitted based on class projects. Here is what we have learned so far:

1. Use a startup software process
Students are all about getting things done the night before; similar to how startups work. Teaching a heavyweight process feels foreign because students haven’t made the mistakes to understand reasons for the overhead!

2. Change the project every year
There is nothing more of a turnoff than a make-work project with antiquated technology. Instructors that use the same project over and over are sleepwalking. A new project each year puts the instructor and students on equal footing, solving problems together. Make the class goal to have someone apply to Y Combinator. Discuss the non-technical issues of software such has how people are going to use the product, how are you going to sell it, what is the competition like, what is the business plan. One big class project brings issues into the classroom better resembling the real world. This also allows non-trivial projects to be developed and students to test-out roles (e.g. project management) that would not otherwise exist.

3. Allow controlled crashes
Let the students make mistakes. For example, let them avoid source control. A student who looses code because of clobbered checkins will be a lesson learned for the entire class. However, when crashes occur, it is the instructor’s responsibility to manage and fix it. After the mistakes have been made, teach them about process. Keep things light and give them references for their future travels. During lectures on process, tie them into the mistakes that were made. Make process real.

4. Demo early and often
Create a culture where the principal deliverable is working software rather than documentation. Use early demos to correct mistakes and give guidance rather than having them worry about their grades.

5. Instructors should code
The instructor-student relationship changes dramatically if the instructor contributes code. Everyone becomes a peer instantly. This improve communication and follows the startup philosophy that even managers should write code.

Next steps
The course has been well received by the students at UofT. I have much more regular contract with students from this class than the other courses I have taught at UofT and UofW. I am interested in hearing from anyone who is interested in providing continuity to the students; a partner that would provide input on the project at the beginning, stay involved with it during the course, and offer a path forward for interested students ready to commit to a startup.

National Survey of Canadian Angel Group Activity

Snow Angel by Syymza

Today, the National Angel Capital Organization (NACO) released statistics regarding Canadian Angel group investment activity in the Investment Activity by Canadian Angel Groups: 2010 Report.

This study looked at the ‘visible’ portion of the Angel investor community – those that are members of Angel groups – as it is almost impossible to survey the entire Angel community. Different countries estimate the visible Angel community represents between 3% (US) and 12% (United Kingdom). Understanding this,  the findings presented below represent only a fraction of the actual Angel investment across Canada. They do, however, provide us with the most accurate snapshot of the activity in the community that we have today.

Significant findings of this report include:

  • 90% of companies funded by Angel groups in 2010 were new, not follow-on.
  • Angel groups collectively received around 1,850 business plans. 14% were considered in detail, 32% received investment.
  • Angels groups invested CAN$35.3 million in 88 deals; an underestimate as some groups did not report the amount invested.
  • Co-investors were involved in 58% of investments and invested at least a further CAN$29.4 million.
  • Angels invested in a wide range of industries but with a strong technology focus: ICT sector (43%), Life Sciences (18%), and Clean Tech (16%).
  • 74% of funded businesses had revenue in 2010.

Download a copy of the full report here: http://www.angelinvestor.ca/2010_Investment_Activity_Report.asp

Pre-Launch Marketing for Stealthy Startups

Editor’s note: This is a guest post by serial entrepreneur and marketing executive April Dunford who is currently the head of Enterprise Market Strategy for Huawei. April specializes in brining new products to market including messaging, positioning, market strategy, go-to-market planning and lead generation. She is one of the leading B2B/enterprise marketers in the world and we’re really lucky to be able to share here content with you. Follow her on Twitter @aprildunford or RocketWatcher.com. This post was originally published in January 3, 2010 on RocketWatcher.com.

CC BY-NC-SA Some rights reserved by Stuck in Customs
AttributionNoncommercialShare Alike Some rights reserved by Stuck in Customs

Some products and services don’t have a pre-launch phase.  For companies where building a minimum viable product isn’t a months-long effort, it makes sense to just launch a beta and then start talking about it.  For other companies however, the product might take a bit longer to develop and talking about it before it’s been released in some form could be pointless (because you don’t have a call to action yet), risky (competitors position against you or customers get confused because there aren’t enough details) or both.

One of the techniques that I’ve used in the past is to engage with the market by talking about the business problem that your product or service is going to solve, without getting into exactly how you plan on solving it.  At IBM we sometimes referred to this as “market preparation”.

For larger companies this often entails spending a lot of time (and money) with industry analysts and industry leaders sharing your company’s unique point of view on the market and why it is currently being under-served.  If you do this properly you’ll come to a point where your point of view starts to align well with that of the influential folks you’ve been working with.  By the time you launch, these folks will be standing behind you saying that your view of the market is one customers should consider.

Pre-launch startups generally don’t have the time, clout or cash to change the way Gartner Group thinks about a market but that shouldn’t stop you from taking your message out directly to the market you care about.  There’s never been a better time for startups to get the message out.  Here are some considerations:

  1. Create a clear message about your market point of view – you will need to create a set of messages that clearly illustrate what the unmet need is the in market and why that need has not been met by existing players.  You can go so far as to talk about the characteristics of the needed solution (without getting into the gorey details of exactly how you plan to solve it).
  2. Develop case studies that illustrate the pain you will be solving – Gather a set of real examples of customers you have worked with that have the problem and clearly illustrate the need for a new type of solution on the market.
  3. Spread the word – Launch a blog, write guest posts for other blogs, comment on relevant blog posts,  write articles, write an e-book, speak at conferences and events, open a Twitter account and start sharing information that illustrates your point of view.  There’s no end of ways to get your message out there.  Do your homework and find out where your market hangs out.  What forums do they participate in?  What blogs and newsletters do they read?  Get your message in front of them in the places where they already are.
  4. Engage and gather feedback – Starting a dialog with your potential customers about how you see the market gives you a chance to test your messages and see what resonates and what doesn’t.  You’ve made a set of assumptions (backed up by customer research hopefully), the more folks in the market you can talk to the more you can fine-tune your market story.
  5. Capture where you can – If it makes sense you can start capturing a list of potential beta customers or a mailing list that you can use when you launch.

Editor’s note: This is a guest post by serial entrepreneur and marketing executive April Dunford who is currently the head of Enterprise Market Strategy for Huawei. April specializes in brining new products to market including messaging, positioning, market strategy, go-to-market planning and lead generation. She is one of the leading B2B/enterprise marketers in the world and we’re really lucky to be able to share here content with you. Follow her on Twitter @aprildunford or RocketWatcher.com. This post was originally published in January 3, 2010 on RocketWatcher.com.