Skip to main content

About the Blog

Earlier this year, it appeared to me that finding an actual internship wasn't in the cards for this summer--a combination of limited opportunities matching my experience and desires, many of those not being a fit, and finally getting down to the last opportunity seeming to evaporate left me thinking about how to productively spend my summer. That's when I came up with this idea to not just work on my own project, but to also document it via this blog.

THE ORIGINAL PLAN

I started to imagine the ideal backup plan for the summer. I knew I had some specific knowledge gaps I was hoping to fill out on the job--deploying a project, seeing big projects written by multiple people being pulled together, how exactly professionals go about coding day to day in an office setting, how test driven development works, planning things out from customer requirement to writing the methods.

Some of this, I could do myself. I'm a smart guy. I can force myself to adjust to "red-green-refactor" and write unit tests, though it would definitely be easier following someone's example. I can plan my own iterations based on use cases I've pondered at length. I can toy with my own best practices and develop a good rhythm for making commits and feature branches in my repo. It might not be as smooth as a structured, already-in-place environment but there's no reason I can't deploy my own project while practicing key skills.

However, all of this proved unnecessary as I was offered a chance to intern at OrangeBoy, Inc (side note: they have nothing to do with this blog and this blog has nothing to do with them--all content, opinions, etc are mine and my responsibility). That's not really a good enough reason to abandon all this prep work, so...

THE PLAN NOW

I'm continuing the project in my spare time, in addition to finishing my final semester at CSCC and continuing my internship through the fall semester. This blog will be the place I document my progress, with an eye towards laying out the exact steps taken and challenges met (and hopefully overcome). The overall goal of this blog is to provide a bridge from the knowledge provided at CSCC in basic concepts and syntax to the basic levels of app development, unit testing, and beyond--leaving a trail of breadcrumbs for others to follow into the wild jungle of .NET development.

Popular posts from this blog

The Theory: Entity Framework Layer Domain Modeling

One of the things I learned from revisiting C#II's project, eDevices was that planning out what your database schema is going to look like is pretty key to determining how easy your life is going to be down the road. In C#II, the focus appeared to be on breaking up the bigger project into smaller iterations that were built on organically--which was GREAT until I tried to implement a feature that hadn't been planned for in an earlier iteration, one that required changing one of the fields on the Policy entity. I managed to break all functionality because the Policy entity no longer matched what was expected, and I had to completely redesign 90% of my application's business logic to account for this new feature. This led to further frustration when I realized that I didn't properly manage my code first migrations for this series of changes--again, they happened organically during the class without any thought or discussion as to how to go back and make changes. Had t...

Use Cases: Pertaining to the Project

So last time we covered the really high level theory behind use cases and why planning them is kind of important when writing a program. This is the part where I tell you I've changed my mind, I'm just going to totally wing this project since I landed an internship and I don't actually need this program to be professional looking. PSYCH--did you even read how I closed the last post? That was hilarious. But anyway. I didn't actually go through the full CSCI-1275 "discovering your use cases through '20 Questions,' rune reading, and chasing clients for interviews" approach. We spent close to a month on use cases in that class--how to identify them, how to define them, how to model them, and a little on how to prioritize them. The bulk of the class was use cases, and like I said...I get it now. But that doesn't mean I'm doing to sit and actually write out a full CRUD technique analysis of all the ways a single user will interact with a ...

Use Cases: The Theory

They told me in my CSCI-1275 Systems Analysis and Design course there's a tendency for programmers to just start coding stuff without thinking, and this was nigh on tantamount to total catastrophe. I didn't fully understand this until a little later in the semester. We had just learned about arrays and collections in my CSCI-1630 C# Programming I course, and I found this to be a perfect excuse to write a little application that would synthetically divide polynomials . (That's a really great way to master synthetic division, actually, if you're interested in brushing up on that skill. Although my wife still insists the time would have been better spent putting more time into my algebra homework. Two types of people...). At any rate, long story short: I made the program work perfectly, for 3rd degree polynomials that divided evenly. Then I realized it broke when I tried a polynomial of the 4th degree. And then again when the 3rd degree polynomial had a remainder. ...