It seems rather funny that it was exactly one year since I’ve done a post on my blog. Usual story of course, I started out with good intentions to regularly blog about all the cool stuff I discover along my journey, but time got the better of me. I guess they were the same intentions that I originally had to skin this blog :S.
One thing I have learnt over the last year is that prioritisation is one of the most important things you can do and abide by both personally and professionally. No matter what there will never be enough time to do all the things that you need and want to do so you just have to prioritise and get done all you can - what more can you ask of yourself. With that in mind I guess I haven’t prioritised my blog :P
I really respect people that manage to keep up with regular blog posts as well as full-time work and other activities. I find that writing blog posts is really time consuming because the pedantic perfectionist in me strives to get every relevant little detail in there and ensure it’s all formatted correctly. Combining that with the insane number of things I seem to find myself doing and trying to get some relax time in somewhere isn’t terribly conducive. It’s a pity really because I enjoy writing posts and hopefully I contribute some useful information here and there.
So, that aside, what have I been doing for the last year. If you are interested feel free to peruse the below list, which has some of what I’ve been doing and is written in no particular order; it’s really just a brain dump ^^. There are a few posts that I have been intending on writing along the way with particularly interesting (to me at least) topics so I’ll try and write some posts over the next few days :)
- Worked with out Project Management Office at work to come up with a way to use PRINCE 2 to provide high level project management to our Agile projects without impacting on the daily work that the teams perform under Scrum. Despite my early scepticism about PRINCE 2 it’s actually a really impressive and flexible project management framework and has worked well.
- Learnt PowerShell - it’s amazing!
- Wrote some interesting / powerful NuGet packages (not public I’m afraid) using PowerShell install scripts
- Attended a really great conference
- Discovered and started living and breathing (and evangelising) continuous delivery and dev ops
- Started thinking about the concept of continuous design as presented by Mary Poppendieck at Yow
- Created a continuous delivery pipeline for a side-project with a final prod deployment to Windows Azure controlled by the product owner at the click of a button with a 30-45s deployment time!
- Started learning about the value of Lean thinking, in particular with operational teams
- Started evangelising lean thinking to management and other teams at work (both software and non-software)
- Started using Trello to organise pretty much everything (both for my team, myself personally and at work and various projects I’m working on in and out of work) - it’s AMAZING.
- Delivered a number of interesting / technically challenging projects
- Became a manager
- Assisted my team to embark on the biggest project we’ve done to date
- Joined a start-up company based in Melbourne in my spare time
- Joined Linked in (lol; I guess it had to finally happen)
- Gave a number of presentations
- Became somewhat proficient in MSBuild (*shudders*) and XDT
- Facilitated countless retrospectives including a few virtual retrospectives (ahh Trello, what would I do without you)
- Consolidated my love for pretty much everything Jetbrains produce for .NET (in particular TeamCity 7 and ReSharper 6 are insanelygood, I’ll forgive them for dotCover)
- Met Martin Fowler and Mary and Tom Poppendieck
- Participated in the global day of code retreat and then ran one for my team (along with a couple of Fedex days)
- Got really frustrated with 2GB of RAM on my 3 year old computer at home after I started doing serious development on it (with the start-up) and upgraded to 6GB (soooo much better, thanks Evan!)
- Participated on a couple of panels for my local Agile meetup group
- Got an iPhone 4S :) (my 3GS was heavily on the blink :S)
- Took over as chairman of the young professionals committee for the local branch of the Institution of Engineering and Technology
- Deepened my experience with Microsoft Azure and thoroughly enjoyed all the enhancements they have made - they have gone a long way since I first started in 2010!
Of course there is heaps more, but this will do for now.
When I first started learning about how to do database code in .NET and in particular how to test your database code I came across a really useful post on the Code Project.
It basically goes through a tutorial on how to get a base class set up that sets up a brand new SQL Server CE database every test run and populates it from an NHibernate configuration.
This was great, but there were a number of issues that caused it to not work for me (including the fact I decided to use Fluent NHibernate rather than writing a heap of obscure XML). As well as this, there were a couple of fundamental flaws in the way the test worked and it didn’t work with the latest versions of SQL Server CE and NHibernate at the time.
Consequently, I fixed up the code so it worked and I wanted to outline those changes and the final result here in case anyone finds it useful.
As I alluded to in a previous post, I think that achieving high code coverage in controller tests is often a waste of time in terms of return on investment - most of the stuff in there will be trivial things that either work or don’t and will be hard to regressively break (e.g. returning the view with the model if model validation failed). In saying that, if there is a way to get really terse tests then they become easier to write and maintain and then it’s worth aiming for high code coverage (since the reward outweighs the cost).