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.

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.

Founder Fuel Jam Session in TO

FounderFuel

Nothing like the last minute planning around here. Ian Jeffrey (LinkedIn, @ianmtl) from FounderFuel is planning on being in Toronto today (June 27, 2011) and tomorrow (June 28, 2011). He is planning on meeting with startups and founders to share his experiences launching FounderFuel, the mentorship and incubation/acceleration plan for participating startups and to talk about tech startups generally. If you are interested in talking with one of the emerging technology company incubators/accelerators you should come and talk to Ian and learn about what is being offered in Montreal. There is a lot of choice in the marketplace for entrepreneurs, and the best way to see the differences are to connect with the people behind the scenes like Ian and the FounderFuel team. This is a great way to evaluate the program, get introduced to the people, and connect.

FounderFuel Jam Session

Date:
June 28, 2011
Time:
7 PM EDT – Presentation & Overview
8 PM EDT – Startup 1-on-1s and discussion
Location:
Camaraderie Coworking, 102 Adelaide Street East, Toronto, ON, Canada [map]
Register to attend:

From the looks of Alexa Clark’s (@alexaclark) photo exposition at Camaraderie, it is a great space to host a startup. I know that Matt (@mattskilly) and Aron (@defrex) at Hipsell have their startup offices there. It is a great space for startups requiring a great work space, a central location, and the benefits of an enabled coworking culture.

Beer Station at Camaraderie - Some rights reserved by LexnGer
AttributionNoncommercial Some rights reserved by LexnGer