When our summer interns started, I sat down with them to cover the nitty gritty details of what, why and how we do things at Don’t Panic Labs. I broke it down into three categories: our goals, what we value and what we expect. In what I envision as a series of posts, I’ll lay out what I covered with them because I don’t think these, at a high level, are unique to just our intern experience.
I set out by detailing our intended goals for the summer. I explained that this internship is going to be different because they would have a stake in the success of a real business. We have never intended our internships to just be some playground where bad code or missed deadlines wouldn’t have consequences. We want to give the interns a feel for what it’s really like in the real world. By embedding the interns into our existing companies, we hoped to create an experience where they would learn what goes into building a real software product, gain first-hand experience in software engineering, and get a feel for what it’s like to work in startup environment and deliver software to a customer.
As with most things in life, priorities dictate our day. When it comes to software, business priorities dictate what problems and products we tackle. Unfortunately (or fortunately, depending on how you look at it), we always have more ideas than manpower. So, as business dictates, we have to cut some ideas loose from the near-future list. But by augmenting our existing teams with interns who can take on some of these projects, we can effectively increase our bandwidth.
For us, it doesn’t make a lot of sense to throw interns into the critical path of product development where months of product knowledge is required to get someone to the point where they are actually contributing in a useful manner. Instead, if we can utilize the talent of our interns to tackle a tangential product need, we can free up our veterans to focus on what they know without disrupting our prioritized products and deadlines. Because of this, the interns know full well that what they are doing is actually contributing to a real business and that their hard work is going into something that people will actually use.
Too many times we’ve seen businesses (including our own) put interns to work on a project that eventually ends up on the shelf, never to see the light of day. We think that is not only a waste of everyone’s time, but it shows the interns what the business really thinks of them. That approach doesn’t line up with our philosophy. The way we do things is more like handing the keys to the family car over to a teenage son or daughter. We want them to learn from real experience by showing them we trust them enough to do something real. But mind you we’re still in the passenger seat to provide guidance along the way. Letting them loose onto the freeway without any oversight is just a setup for failure.
We have another, even more important purpose for hosting interns every summer: we want to help influence their approach to software engineering. As we’ve looked at different post-secondary software engineering programs, we don’t feel that the right approach is always being taught. It appears as sometimes software engineering and computer science are confused with one another and not enough distinction is provided to differentiate the two. Not only do we want to more clearly define software engineering, we want to help formalize in the minds of the interns how software engineering fits into the bigger picture of software development.
This may sound self serving or maybe even arrogant, but we truly feel that our approach serves the engineer – and eventually the software itself – better. By bringing students into the professional realm before they graduate, we are augmenting what schools are doing and drawing finer attention to aspects of their curriculum that are more applicable to a software engineering career and filling gaps in the academic experience through mentoring and experience.
Lastly, we want to provide an experience that is not a safe and sterile corporate bubble, but instead put the interns on the front lines alongside professional software engineers in a small startup environment. We want to give them a taste of what working in a startup is like so they are better informed about where to direct their career pursuits after graduation. The startup environment isn’t for everyone, but no one really knows what fits them best until they’ve experienced it. Some will have their expectations confirmed, while others will have their eyes opened. No matter what path they pursue, they can at least say they have startup/small business experience. And experience is the best teacher of them all.
In upcoming posts I’ll cover what we value in the process of software development and what we expect from our engineers.