My First Week of Software Development Training

This last week I started at a software development boot camp at Improving Enterprises. I was supposed to start a blog Monday and update daily but I didn’t really know how to do that so I put it off until now. Because of that, in this one post I will try to cover (what I remember of) the whole week. Next week I will make an effort to build a habit of documenting my day as it goes on and make a blog post each night.

Monday, May 5

Monday was mostly orientation, meeting a few people (including my fellow boot campers), and getting set up. We were given a general introduction to Improving Enterprises and told what was expected of us. Each of us in the boot camp received a MacBook Air with Windows 8 installed to work with during the boot camp (that’s what I’m writing on right now) I spent some time during the day installing the software I needed/wanted including Google Chrome, Start8 (which is a program that gives Windows 8 a start menu similar to the one in Windows 7), Git, NUnit, and the Microsoft Office Suite. Along with the laptop we received a t-shirt and hat, a flash drive, a pen, and a notebook, all with the Improving Enterprises colors and logo. The notebook and pen will certainly come in handy for taking notes each day, and I plan to use them for just that. The day ended with the 7 of us (Me, my fellow boot campers, and Jef Newsom, out instructor) going to dinner with our CEO, Curtis Hite. All in all I’d say that Monday was good. I was excited to get started and it was nice meeting the people that will hopefully be my new coworkers in 8 weeks.

Tuesday, May 6 and Wednesday, May 7

I don’t remember much about the specifics of Tuesday and Wednesday, so I’m combining those two into one section. On Tuesday we dove into our C# training. At the beginning of each day we work on what are called kihon katas, which are fundamental C# exercises meant to build muscle memory for writing commonly used code like a % b;, searching through a string, or using basic control structures. We get through as many of the exercises as we can, gradually decreasing the amount of time it takes to write the code for each exercise. These katas come from a project called Squire, which we acquired through Git. I had not used Git before so I’m still getting used to it, but I’ve at least gotten the hang of opening up Git Shell each morning and resetting the katas so I can go through them again.

I learned a lot about C# these two days, but I think the most important part was beginning to learn about Test Driven Development (TDD) and how incredibly easy, useful, and just… great it is when using it in Visual Studio. As I understand it you start by creating the test for what you want to build before you do anything else. From there you can stub out any classes, properties, or methods that you need to create the test, which is super handy and awesome. I’ve learned that Test Classes are often either built for each event that occurs in the program or each class (or you could just do I mix of the two). I was taught to name each unit test according to the event or class being tested, and each test class should be named according to different specific things that should occur for either the event or class (and there should only be one assert for each test). I haven’t yet mastered this process, but by the end of the boot camp I should at least be competent at building a project entirely through TDD.

For this first week of the boot camp, we’ve been working on creating a piece of software from scratch using TDD. I’m not sure I remember its exact origin (I believe a guy a Improving created it), but it’s called The Consulting Game. It’s intended to simulate running a consulting business (similar to how Monopoly simulates property trading). We played a paper/spreadsheet version of it early in the week, and after playing it and becoming familiar with it we decided to try to create a software version of it. We had the choice of either trying to build that or start working on the program we’ll be creating for most of the boot camp (I’ll describe that in a later blog post).

Thursday, May 8

I actually have some notes for this day so I’ll be able to write more specifically about what I did. I started the work day as usual with my katas and got up to the third one, which was the Control Structure Kihon. In the lecture portion of the day we learned about coupling and the Law of Demeter. The Law of Demeter (or LoD) can be summarized as saying “You can talk to yourself, you can talk to your neighbor, but you can’t talk to your neighbor’s neighbor.” The “talking” in this summary is referring to coupling, which is basically when one object depends on another in order to function.

When we started coding we started to work more on tests for the Company class, but when we got too deep into that we started the tests for the Consultant class. Once we worked out some Consultant tests we went back to company and added Payroll and Net Profit tests in order to create methods and get those working. After Jef left that day the group was left to work on figuring out what happens with the Company class at the end of the month. A few of the other members of the group were not ready to move on, so I made the mistake of working on the EndOfMonth method on my own. This meant that the group as a whole was no longer on the same page, and after realizing my mistake I made a note to try to stick with everyone else in the future.

Friday, May 9

Friday we learned about Inheritance, superclasses, and the Is-a, 100%, and Liskov Substitutability Rule regarding those two concepts. These three rules basically this about superclasses: it needs to make conceptual sense that a subclass is a member of a superclass, everything about a superclass needs to apply to a subclass, and you should be able to have every subclass swap out with any other subclass of the same superclass and have your code still function. I was excited to hear about this because it seemed very useful. In the Consulting Game project we made the Consultant class into a superclass and created the Employee and Contractor subclasses. We added tests for the Consultant RollOff method with the idea that it would be different for Contractors, allowing us to practice creating and using a virtual method. I ended up making RollOff the same for both subclasses, but I’m not sure that everyone else did the same. We also added Gig tests including one for closing the month, so I was able to share a little of what I had learned making my CloseMonth method previously.

.

One thought on “My First Week of Software Development Training”

  1. My favorite part of this post was when you said, “A few of the other members of the group were not ready to move on, so I made the mistake of working on the EndOfMonth method on my own. This meant that the group as a whole was no longer on the same page, and after realizing my mistake I made a note to try to stick with everyone else in the future.”

    This made me say, “YES!” It made me very proud of you when I “heard” you express the understanding that you made a mistake, realized that your error hurt the team, and that you adapted to do something that would make the team more successful in the future.

    Step one in being a great scrum team member.

Leave a comment