As my second (and penultimate) year of university concludes, I am again indulging myself to a post on thinking about what I've done this semester, what I've learnt and what I can improve on for next semester.

This semester, I studied comparatively less subjects, three to last semester's five, but one of them was the dreaded behemoth that is the Software Development Project (henceforth referred to as SDP). Worth double the standard subject, the subject weighs out at 12cp and most students should be devoting thirty hours a week to the subject. That's okay I guess, I thought quietly, people can do different things and it'll all end up okay because everyone is unique and has their own requirements.

Except that it's not okay, as it was a major group project. Group projects are challenging at the best of times - this subject constitutes 100% groupwork with auto allocated groups so you can't run away from the less studious members of the uni.

The subject quickly developed into a whole bunch of stress, and alongside another major project, I spent a lot of time learning how to collaborate and instructing some of my colleagues in a team coding environment. Sometimes it was incredibly frustrating - I've lost count the amount of hours I devoted to teaching people how to use Git, and that no, you cannot resolve a merge conflict by deleting all the greater than and less than symbols in a file. But also it was rewarding, in a way. I gained two major applications to add to my portfolio and learned some serious hard lessons about the value of communication.

It was, additionally, the first time I'd worked in a Git-flow environment, which was actually a necessity given that there were a total of five people working in the code base at any one time. Probably the best thing that came out of SDP was the beautiful and semi-productive Git tree that showed all our branches and pull requests. You can see the repository in all its gore and glory here.


[caption id="attachment_438" align="aligncenter" width="414"]Git tree for our SDP repository is displayed with many branches. Network tree for our repo's branches[/caption]


The other two subjects, Software Engineering Practices and Project Management & the Professional, were fairly engaging, although - and this goes for the overall standard - I can't help but feel how most of the technical and business acumen expected from us in coursework is merely guided with a soft nudge, and the rest of the information and experience we have to get by our own purposes. Whether that's by design or the purposeful lowering of expectations to get more folks across the finish line is purely academic, but I'm not sure I prefer the purely self-guided approach seemingly trumped by universities nowadays.

Things I have learnt

As aforementioned, I've learnt a lot more about team dynamics (even if it's not realistic) and Git flow. Other things I've learnt:

  • AngularJS in an application that goes far further than the basic "todomvc" example
  • The value of DevOps skill in the industry today - still mystifies many who plan to go into IT despite it's ubiquity in most medium-to-large enterprises
  • Constructing a RESTful-ish API in C# and extending an existing one that uses the .NET entity framework to map data relations into code
  • Eventing and Domain Driven Design
  • Testing constantly at every level is key to gaining respect in IT, confidence in your code and visualising the health of your codebase for future extensibility
  • The continued difficulty I have with UI design and creativity; these are not my forte and I still struggle to design expressive interfaces oftentimes

What I need to work on

I still have a perpetual procrastination problem. I conflate the important stuff in my life with being everything that doesn't relate to university and, although I did invest significant amounts of time toward the SDP, I lacked overall engagement with uni this semester.

I am, I feel, far too eager to start getting involved with the real stuff, rather than dealing with university assignments that still barely parallel the realities of everyday working life. Although each subject has its place and I see its value, only seeds of truth can be found at a time in them.

Additionally, I need to keep working on and enhancing my writing skills, as they prove invaluable when it comes to communicating and writing documentation - two topics in software development circles that were, until recently, hardly emphasised.