Ralph Cooper
Climber, photographer and software developer.
Profile
Summary
I firmly believe that applications should be:
- Responsive, making use of all that browsers have to offer
- Standards compliant with clean markup and work across all modern browsers
- Maintainable with clear separation of concerns
Experience
- Nov 2009 - PresentSenior Software Developer / PXtechOne of 3 senior developers in a team of 7, I have fulfilled various roles within numerous development projects. Project Manager/ScrumMaster on a major project for a customer in North America: Leading the original deployment, development and later transition to SCRUM of one of the largest development projects taken on to date. Modifying and redeploying our key BI platform specifically for the Subway global franchise market, then enhancing the product to be specific to the needs of users throughout the organisation, from Franchisees to the CEO. Lead developer for generic BI platform for quick service market: Tasked with taking an existing customer specific platform and redeploying for more generic plug-and-play use. The system needed to cope with data from numerous sources running different POS software, displaying useful "out of the box" reports based on common data, but also supporting extensions for specific POS types where appropriate. Transformed developer time tracking and project budget reporting: Developed an MVC web application based upon an existing spread sheet approach to time and budget tracking. Working mostly in my spare time, I created the application because the existing system was becoming more complex due to the number of concurrently running projects and the expanding reporting requirements of the management team. The system has now been accepted by the business as the primary way to track time and projects and has been enhanced numerous times to provide more detailed reporting.
- Sept 2005 - PresentConsultant / PA Consulting GroupOne of the top performing graduates at PA. Sought after internally for high profile and technically complex projects delivered using the .NET framework. Started out as a developer and business analyst, but moved quickly into development lead and management roles.
Education
-
2002 - 2005University of Nottingham2:1 in BSc (Hons) Computer ScienceActivities: Climbing, Badminton
Additional Information
Updates
-
@emilyccoop work stuff ;)
-
Considering a very custom solution to database versioning and change control. Any good solutions out there before I go too far? #dbchaos
-
My attempt to do 1 hour of uninterrupted work lasted less than 5 minutes :(
-
That big mug of coffee this afternoon doesn't seem so smart now #cantsleep
-
FA Cup final then. Probably the only game of football I'll have watched this year...
-
@cheezepie Amazing! A belated happy birthday to you by the way. I assume this is a gift to self?
-
Happy Star Wars day all!
-
I feel like today has shaved several years from my life.
-
Oh how I love trying to do 4 things at once
-
.. concerned that we're almost out of gin
-
And now the mist is rolling in…. makes a change I suppose.
-
Smell of lamb roasting in the oven. Perfect to forget the grim weather and work in the morning!
-
@MelissaOGorman Well battled day 1! Hope the weather improves for you from here on!3 weeks ago from web | Reply, Retweet, Favorite
-
Really wanting a dry spell soon so I can cut the grass! It's like a jungle out there! #mustbegettingold #fb
-
BBC News - High winds shake planes landing in Bilbao, Spain http://t.co/pYub7V2a *OMG :-s #fb
-
Dear @epson, why oh why, for the love of all things good, do I need cyan ink to print a black and white text document?! #areyoukiddingme3 weeks ago from web | Reply, Retweet, Favorite
-
A session in the gym today was ambitious at best. Falling asleep on the sofa was always a more likely result! #signofagoodweekend #fb
-
Has anyone seen a fox? @steveworkman http://t.co/vbib41k1
Posts
Promoting the practices and explaining them is often the easy part, but explaining why is nearly always a challenge. Here are just a few reasons, and common responses that I've come across:
Testability
Put simply, if you've written your code well, your methods perform distinct testable functions, and your concerns are well separated from your UI, to business logic and data access, then your code libraries are well on their way to lending themselves to unit tests. Applications where business logic or even data access is hidden in UI code, or functions stretch to several hundred lines performing many different actions as they go, are virtually impossible to write unit tests for.
The most common response I have seen to this, is that we don't write unit tests. The simple answer to this that we should! And even if we're not now, we may in the future want to build a suite of unit tests to help us maintain the quality and functionality of our deliverables as we introduce change. If we don't code as if we're going to be unit testing, we'll never be able to.
Readability
Code that is laid out well, with short distinct functions, and that follows a consistent set of guidelines (e.g. naming conventions) is more readable. Fact. Applications with good separation of concerns and naming of libraries, are easier to navigate for the developer and make finding the relevant code easier. Single lines of code that perform several functions in one are often a nightmare to understand for other developers looking at your code.
It seems whenever I suggest that someone's code isn't very readable (or, more delicately, that it could be more readable), the response is always "I can read it fine". Well great! But what about the next person that picks up this code and has to figure it out? Readability is to some extent a subjective measure of code quality. Some people will find certain styles easier than others. However certain styles and standards have come to be because the majority find them easier, and find that it saves time when going back over code. Therefore it's a reasonably safe bet that following these standards will mean that the next person to see your code will find it to be readable.
Maintainability
This one's a real stinker. Because no developer ever believes their code will need to change. That belief is almost always wrong though, because requirement change, bugs will need fixing, and things will get refactored. Code libraries with concerns intermingled and with long multi-functional methods are a pig to cut through and change in any way. They just take a lot longer than well separated and laid out code. If I'm fixing a bug in the data layer, I don't want to go anywhere near the UI. Doing so introduces change to an area of the system that doesn't need changing. I want to go to the data layer, find the offending method, fix the bug, then run a unit test that proves the fix worked. The Coding Horror blog once posted that you should:
"Always code as if the person who ends up maintaining your code is a violent psychopath who knows where you live"
This, whilst written in jest, is something anyone who's had to maintain poorly written code can relate to. It's a frustrating process and one that will quickly drive you mad!
Pride
The last reason to write good code, is something very simple but sadly overlooked by many. I take pride in the work that I do, both the end results and the quality of the build that went into it. It's been suggested that the end result is all the matters, that the quality of the finished application is enough to be proud of. But a carpenter who builds a table, will take pride in every aspect. Not just the finish, but the joints, fixings, quality of wood, cuts, everything. Not just the parts we can see, but the entire article. They've built the table to the best of their ability, and it's built to last.
The same is true of building applications. The finished product, whilst a very important part of the puzzle, is still just that, a part. The building blocks, the pieces that make up the finished whole, are just as important. A great application that's poorly written, will be overly costly to maintain. What's the point in building the latest and greatest word processor, if the next version will require a huge and costly development effort to add just a few new features?
For me, I take pride in building quality, functional and maintainable applications that not only fulfil the needs of end users, but also developers working on new features and maintaining the product. Through testable, readable and maintainable code, I know I've done my very best to ensure a quality result all round.
So the end of 2010 is upon us. People the world over are preparing to welcome 2011 with cheer and gusto, or if you live in the UK, with a cough and a splutter it seems.
There are many things 2010 could be remembered for - the general election, spending cuts, the commonwealth games, the world cup... ok maybe not the world cup - but for me, what's fresh in my mind at the moment is simply that everyone seems to be celebrating Christmas and the end of the year with cold, flu or sickness of some kind!
Family, friends, colleagues, I can't think of a single household not affected by it in some way. The news may be telling us that the flu cases aren't at the highs we've seen in the past, but I can't say I believe it. Maybe reported cases are - and maybe that's because we've been better at vaccinating 'at risk' groups this year - but most people will just stay at home and stick it out if they're ill. There's nothing your GP can do unless you're dying, so why put yourself through the pain of getting out of bed to go and see them? If we could count up all the unreported cases too, I think we'd see a different picture.
So what does this leave us for 2011 then? Well hopefully not too much more of the same. More cold weather is on the way, which won't help, but eventually the viruses will back off and leave us to make up for lost time. On the plus side I guess we won't all be carrying an extra half a stone from Christmas over-indulgence!
Resolutions for the next year? I'm sure we'll all have a few, some we might even keep. I think my main one is probably to just "go after it". More a change in attitude than anything else, but the last few weeks have felt a bit flat with not a lot going on. That's partly due to the weather (stopping us getting out), but partly down to laziness and not really pushing myself to get on and do the things I want to. Time to put that right and go after the things I want - I'll be 27 soon afterall! :-S
So whatever 2011 has in store for you, I hope it brings all that you hope for and you welcome it in style tonight. Happy New Year!
How do you define yourself? What do you do? What are you?
This evening I sat down and asked myself these very questions. I probably think of myself as a web developer, software consultant, climber and amateur sportsman. But can I be all of these things? What about my other interests? I like to cook, does that make me a chef too?
Many people might say that your job is what defines you and lets face it, what you do for a living becomes a large part of who you are. My job title is "Senior Developer", but what does that mean? In reality, I probably spend about half my time at work "developing" i.e. writing code, while the rest of my time is spent problem solving, communicating within the team, mentoring, managing expectations, investigating things that go wrong, planning ahead and learning. Does that make me a developer? Well probably, but that only tells half the story doesn't it?
Maybe time for a different approach. Starting with a blank sheet of paper, I wrote down as many skills, qualities and personal attributes for myself as I could think of, doing my best to group things together where possible. I ended up with 4 distinct sections on the page: development, collaboration, consulting and personal. Working with this I could say yes, I am a developer, but I could also be a technical consultant, facilitator, team player or any number of different things! The page defines my skill set, but does it define me? Not really.
So how do you define yourself? Maybe I'm simply a nice guy, who's passionate about what I do and likes to be challenged to better myself. Maybe it's as simple as that. That'll do for now I suppose, until tomorrow... then maybe I'll be a developer for a bit.
Is it just me, or is anyone else really not bothered this season? Too much money, cheating, arrogance and playing the media going on, and you can't watch a game without forking out for sky anyway.
To be honest, there are far more important things I'd rather be doing with my time and hard earned cash.
Table Tennis, Badminton, Squash and Tennis all in one tournament: http://www.englishracketlon.org/
After a day in Swindon on Saturday visiting my Mum and trying to help out with what I can, Sunday was time for a return to climbing.
A day at Curbar:
Cioch Wall (S 4a) - Lead
Wall End (VS 4c) - Second
Heather Wall (VS 4c) - Second
Mastiff Wall (VS 4c) - Lead
Gladiator Buttress (VS 4c) - Lead
Sorrell's Sorrow (HVS 5a) - 10 minutes of faffing around on the initial "fist jams" (arm bars) before backing off in pain to let Ali second the route instead
Today I'm in pain pretty much everywhere. Got a squash match tomorrow night, hope I've recovered a bit before then!
It's an oddly satisfying feeling to know that the food you're eating came from your own garden. I imagine if the ingredient in question was even slightly more substantial than a few herb leaves then the feeling of satisfaction would be even greater.
Right now we've got Basil and Mint in the kitchen window, then Sage, Parsley and Thyme outside. Hoping to expand these with some Rosemary and Oregano soon too.
When we come to buy a house, there'll have to be space to grow some actual vegetables in the garden. Aside from the obvious satisfaction and sense of achievement in growing our own potatoes, we'll keep ourselves busy planting and harvesting, and save literally pence per week in the process.
Rock on, can't wait! ;-)
This morning, I finally ditched my hosting agreement with HostRocket. Whilst the deal they were giving me was fairly decent at about £40/year for nigh unlimited space, I just wasn't using it, so I wasn't up for fronting £80 for the next 2 years right now.
I've still got my domain though, just need to decide where to point it.
In the last few days or so the Opera iPhone application was approved into the app store and almost instantly shot to the #1 free app spot. Not wanting to miss a trick, I thought I'd give it a try.
Prof. Lovelock, I couldn't have said it better myself.
Lovelock: 'We can't save the planet' (BBC News)
Hi there, thanks for stopping by.
This is my new blog, where I'll post thoughts, opinions, reviews and probably a bunch of other stuff too, of equally little meaning or interest to anyone :)
The title of this blog, "Lost Thoughts" illustrates what I think happens to the majority of blogs or postings on the internet. They are ultimately lost in the ether, forgotten by their owners and left with little or no activity for years on end. How do I know this? Well, while trying to find an available blogspot url for this site, I decided to visit a few of the ones that were already taken (and there were plenty of them before I finally arrived at this one). I'd say the vast majority, not all, but many, had between 1 and 3 posts and were last updated before 2007. The first one I wanted, my name, had one post dated 2006... that's it.
I wouldn't be surprised if this blog ended up taking a similar path, hopefully lasting a little longer than 1 entry, but in the end forgotten and infrequently revisited. I'd be kidding myself if I thought anyone besides myself was likely to be interested in what I write, but then that's not why I do it anyway.
Writing for me is simply a way of collecting my thoughts, or venting my opinions. My little voice (or whisper) on the internet if you like.
So here it is. If you've read this far, I want to know why? Seriously.
Ralph