Skip to main content

Intern Project, a look back.

This summer I was able to be the Lead Developer for our intern team. The team consisted of a developer that was chosen as our Leader, he was able to show his leadership ability in a setting that he would not have otherwise had access to. Myself and another full-time developer helped to mentor the interns and build out the site. And, of course, four interns that are studying software majors at their universities. These four had very limited experience with developing a website before coming to work here and also did not really know what it means to work in an enterprise-level team environment.

Over the course of 11 weeks, with roughly 50 working days we were able to design a new website and build it from nothing into a fully functioning site that will add value to our business. Everyone had amazing opportunities to learn and grow and come together as a team. The people that we were at the start of the summer are so much better with more knowledge and experience to draw upon now at the end of the summer.

Here are some interesting stats for the summer.
  • We completed 94 stories, almost 2 per day
  • 634 commits to master, with over 30 branches to master
  • Over 35,000 lines of code
  • 6 deployments to Production

Work completed by environment

The chart above shows the lag in getting work from lower environments through to the higher environments with the green being what is in production. As you can see, we did not have too many large gaps between getting work done and getting it into production. This was a high priority for the team leadership, to get our code out often and not wait until the end of the summer to push 1 large deployment.

Even though we were not officially launched, it was important to us to get our work in front of users and gain feedback. Our first 2 deployments had some minor hiccups, but solving those issues made the later deployments a breeze.

The feedback we gained from the early releases by users also helped shape the website. What we designed early on was not what the final product looked like, and we would not have been able to make those changes had we waited until the end of the summer to get our work in front of users.

The interns grew a ton as developers over the summer. At the beginning none of them was familiar with web development at all, but by the end they all had a good foundation that will serve them in the future. They all got experience with front-end working using Angular as well as server side code written in C#.

One thing that I took away from the summer was the importance of making sure everyone is on the same page. Too often, I think that I am explaining something clearly, but others are not following along with what I am saying. To help with this, taking multiple different approaches to explaining my ideas is important. Nothing was quite as useful to understanding this summer than when I would draw out the architecture behind what the code was doing, just having a simple visual representation of what I was describing went a long way to getting that understanding we needed. Another valuable tool I used was walking through the code line by line to detail what each line did and why I had chosen to do it that way. Or, reviewing their code in a similar fashion, and asking questions of what could be done differently.

Lastly, this summer I wanted to learn for myself if I wanted to be a Lead Developer.  Was I a good Lead Developer? Could I help those I was leading become better developers while also succeed at creating a good product. I believe the answer to all of those questions is yes. I would like to be a Lead Developer, I think that I did a good job this summer guiding the interns as the project as a whole. I still have room to improve and working with other experienced developers is different than working with interns, but I think that given the chance I would be able to adapt to those challenges.


Popular posts from this blog

Converting a Large AngularJS Application to TypeScript Part 2

In part 1 I was able to take an Angular controller written in JavaScript and convert it to a TypeScript file while doing very little to change the code. In this post I am going to explore transitioning that same controller to actually use the features provided in TypeScript. This is how I left off my controller:
declare var angular: any; (function () { 'use strict'; var controller: any = function($scope){ ... } angular .module('app') .controller('controller', controller); controller.$inject = ["$scope"]; })();
While performing the translation from JavaScript to TypeScript, I would make sure at every step that the functionality I expected still worked, so if anything I did broke the system I would change it back and try again with another approach. Also if something seemed like it worked too easily, I would break it on purpose to make sure I wasn't getting a false result through browser caching a previously working fil…

Converting a Large AngularJS Application to TypeScript Part 1

I work on a project that uses AngularJS heavily. Recently we wondered if using a preprocesser like CoffeeScript or TypeScript for our JavaScript would be beneficial. If our team is going to switch languages, we would need to be able to convert existing code over without much pain and we would have to find enough value in switching that it would be worth the conversion.

I had read an article that stated that because TypeScript is a SuperSet of JavaScript, you could convert a plain JavaScript file to TypeScript by changing the extension to .ts and not much else would need to change. I wanted to test out this claim, so I took a file that I was familiar with, an Angular Controller, and tried to convert it to TypeScript to see how much effort it would take and then try to figure out where we would benefit from using TypeScript.

This is what the controller JavaScript file looked like to start out with:
(function () { 'use strict'; angular .module('app') …

Gamify TDD

I like it when things that would not normally be associated with games add concepts from games as a way to incentives you to accomplish things. Why simply go for a run if you can have an app that will track you and give you a gold star if you do better than you did the last time? Why go to the coffee shop that only gives you coffee if the other one will give you points that you can redeem for free drinks eventually?

I was recently introduced to CodeSchool, an online training system similar to PluralSight, it has video courses and challenges you can take to prove that you retained what the video taught. CodeSchool also adds badges and tracks to your learning, so as you complete a video and its challenges you get a badge. Complete a collection of courses within a specific discipline and you become a master of that discipline.

Some of these incentives are not tangible and really don't mean much in the real world, but they tend to work for me. If I start working towards a large goal a…