Matthew Lang avatar

Matthew Lang

Fixie Friday - Gianni Motta Pista

Love the paint job on this Pista.

via FGGT

Always switched on

A few weeks back I tried to improve some code I was working on, but after a couple of hours I resided myself to the fact that it just couldn't be done in that small space of time.

Yesterday I looked at the same code and within half an hour managed to make a big improvement to it. So what was the difference between yesterday and a few weeks ago?

It could have been a number of different things. What was my workload like that morning? Did I have other things on my mind? Did I start the day with tea or coffee? Who knows. Hundreds of different factors could have affected my thinking that day.

When you're working you focus as much attention and energy as you can on delivering what is expected of you. Some days though you just need that bit longer to get your head round something.

We can't always be thinking and working 100% effectively all of the time. What I do know is I can't be switched on all the time.

Wishlist Wednesday - Orange Five29

Keep on reviewing

Ever that get that feeling where you're continually picking up pace with work and you get faster and faster at getting through your list of tasks? The last few days have been like that with my work for a client. Fast paced work, getting things done. Great for the client when you can carry out the changes they need quickly.

However there comes a time where this pace of work becomes counter-productive. While I can recall the details of each code change I made for the client, I wonder if I'll still remember those changes next week? Have I spent enough time reviewing each of the changes I made? Are there enough tests to cover the code changes I made? Could the code have been refactored in a beneficial way?

Getting things done is great, but getting things done correctly is even better. Checking things off from your list is great, but a review of the work for a few minutes is even better as it could lead to you finding something that you might have missed. Don't forget to review the work you do to ensure that it's your best work that you can deliver.

Contemplating a blog move

Yes it's that time again where I consider moving to another blog platform. Over the last few years I've tried Blogger, Wordpress, Tumblr, Posterous, Octopress and now I am currently on Squarespace.

The key benefit for me at the moment is that I can have two active blogs sitting on one site without having to separate them into different sub-domains. However I am wondering about merging my two blogs back into one so this isn't a big influence on the decision. What I do want is ease of deployment and a bit more control over my blog.

In the last few weeks I have just about nailed the setup on my favourite text editor and it now doubles up as my main tool for writing in Markdown. Squarespace does support Markdown, but I wish I had an easier way of posting to my blog.

Octopress is calling again, it did have a nice easy way of publishing, but I like the ability to post from the web which Squarespace does allow.

Hmm, a tough decision.

The long path

Test-driven development (TDD) is often seen as the long way to developing software. The misconception perceived by many is that writing tests and code is going take longer than simply writing code. While this statement is in fact true, many don't take into account the what's happens further down the development process.

Developers that practice TDD are continually writing tests to ensure that all parts of the software work. This practice reduces the chances of bugs appearing in the code in a later date. Developers that don't practice TDD are writing code that is usually handed to another team for testing. Chances of the code containing bugs at this point are quite high, and so a game of ping pong ensues with the code moving between the developers and the testers until it is working. This can ultimately take longer than the time it took a developer to produce the same code using TDD.

Selling TDD to clients is difficult because they don't see the benefit of this practice. Clients want their product and the want it now. Writing tests takes too long. It puts the developer in a difficult position. Do you take the gig and hope to squeeze in the tests as your developing and hope the client doesn't notice? Or do you take the gig and forgot about the tests knowing that future work will come back to you in the form of bugs that the client has discovered? Of course the last alternative is to not take the gig at all.

The long path that clients see when they are told about TDD isn't as long they think it is. In fact it is actually worth their while to spend the time investing in tests that ensures their code for their product or service continues to work in the future. Following the path of not writing tests might look like the short path to start with but there's no guarantee that it will stay that way.

Want more business?

Then tune in every day to Nicholas Bate. I especially like the last one on the routes to more business list:

Never, ever, ever allow yourself to doubt that you can get a bigger slice of the pie.

Three Questions

What do I need to anticipate?

What do I need to do better?

What do I need to do differently?

Read the rest of NB's great series, jagged thoughts for jagged times.

Fixie Friday - PELIZZOLI For3

via FGGT

Do you have a passion for work?

Not everyone is cut out for it. It takes not only a passion for the work but plenty of sacrifice. It means there will be no paid vacations or retirement fund matching or group healthcare plan. It means years of saving and planning and struggling and scrapping. But you will know, in those tough years, if it is for you. Because those struggles will not deter you — they will fuel you. Because, that is all part of the work too.

A Passion for Work by Patrick Rhone

Be a game changer

It’s a sad fact of life, but there’s many workers out there simply dotting the i’s and the crossing the t’s when it comes to their jobs. They start at nine, do what’s required of them, and then make a bee-line for the door at the end of the day. I'll be the first to say that even I have been guilty if this behaviour. Yes, you are doing your job, but surely there’s more to your job than doing the minimum necessary?

It’s not always the worker’s fault though, many jobs out there just don’t ask or want people to be creative. They look for the basic skills needed for the job and nothing else. Many employers just want the job done and nothing more. Is that enough?

NHS meals idea

James Martin, a British chef and TV personality had a show that recently ran on TV, where he was trying to improve the kitchen and meals service of a number of NHS hospitals in England and Wales. In one show, he improved the costs of one kitchen by reducing the amount of waste food generated. Rather than just making enough meals so that everyone had a choice, James suggested that the kitchen staff take orders for each ward and make enough food to fulfil the orders.

From one day’s service, the kitchen had reduced it’s waste and also it’s costs. That cost projected over a year ran into a saving of tens of thousands of pounds. As anyone who knows about the current state of the NHS and it’s financial problems, ideas like this are exactly what’s needed to improve the NHS to allow to run effectively and also pay for itself.

When the kitchen and meals manager was shown the savings, she did nothing more than just smile. Why does it take a celebrity chef to come in and implement such a simple idea that saves thousands of pounds for the hospital? Where’s the innovation from inside the NHS? Do employee’s even have the time to be creative during their jobs?

Be innovative on company time

In a previous job, I wanted to compile a newsletter for customers notifying them of news and events in the world of ERP software. I pitched the idea to my boss at the time, who wanted the same thing done. I suggested putting together a first draft of the newsletter together and sending it to him before sending it to customers. I was asked by my boss if I could do the newsletter in my own time. So I have an idea, but I must do in my time?

I don’t know if my employer at the time was aware of this fact but I have my own things to do in my time. Working on ideas that benefit my employer in my time is not own. And here in lies another problem. Employers need to allow their employees to be innovative and creative on company time.

I’m not suggesting that every company should follow Google’s example of allowing their employees to be creative. What I am suggesting is that employers allow their stuff to set aside some time to develop ideas and be more creative.

Being a game changer at work means doing more than simply doing the absolute minimum necessary to get through the day. Being a game changer means thinking about the work you and continually reviewing your work to look for more effective of ways of doing things. Not only does that require that as a worker you be more productive, but as an employer you need to allow your employees to be creative and develop idea during company time.

So what are you waiting for, how can you change your game today?

Wishlist Wednesday - DMR Bolt (Long)

The ultimate play bike.

via BikeRadar

Goodbye Google Reader

So Google Reader is finally being killed off. The RSS reader that spurred many clones and provided a way for you to follow any number of your favourite blogs easily is to close down this summer.

With very few updates to the service in the last couple of years it is hardly surprising. It might be a bad day for Google Reader fans but there's an opportunity here for someone to earn themselves a nice fortune.

The space left my Google Reader now means that there's a place for a well designed cross platform RSS Reader.
And I'm willing to pay for it.

Over the next few days I'm going to be looking for an alternative to Google Reader. It's sad to see the service go but nothing is forever. The one good thing from this is that Google Reader already provides a way for you to export your feeds. Shouldn't be too difficult to get up and running on something else soon.

Reviewing the master list

It’s become clear to me that there’s far too much stuff on my master list. It’s things that I want to do, but I’ve started reaching too far forward into the future and starting noting stuff down that I want to do but I won’t be able to do for at least six months.

Speculating on what I should be doing in months is no good. I need to see a short term list of things that I can be working on now rather than later. My master list is also slightly unbalanced.

One thing I can do about the issue of the number of items in my master list is to adopt an idea from
Kanban boards. In a previous role in an agile team, we kept a backlog of development cards that represented application changes that were next in line to be worked on.

In order to keep my master list lean but still keep a note of stuff for the future, I'm going to keep a separate backlog file that contains actions for projects that I want to do in the future but perhaps don't have the time in the near future. Doing this and reviewing it once a month will also mean that I can just forget about my backlog until I have cleared everything from my master list.

The monthly services bill

This morning I was curious about the amout of money I was spending every month on subscriptions for products and services on the internet. It turns out that I don’t spend huge amounts of money on products and services. Here’s where my money is going on a monthly basis:

All in they come to just under £30 per month. The amount I am paying out each month is less than I thought, which means I have a few slots left for additional products and services. I’m already looking at taking out subscriptions to Treehouse to improve my iOS development skils, Instacast to sync my podcasts between devices and a Railscasts pro subscription.

What apps, services and products are you subscribed to on a monthly basis, and is there anything you are considering taking a subscription out on in the future?

Teaching kids to think

I would love to sit down and teach my sons how to code, but I think it's more important to teach them about applying thinking to problem solving.

Scott Hanselman rounds it up nicely:

We need to teach kids to think and to be excited about thinking.

Programming's Not For You by Scott Hanselman

Life tips ...

... with Nicholas Bate.

Go to them

Cultural Offering takes it a step further with his advice about connecting:

Go to them. When you are not happy with a business experience, don't tweet your disdain, go to them and explain the problem. Then ask for a resolution. Not happy with your grade on that paper? Skip the snarky Facebook status and go to them.

Go to them by Cultural Offering

There's more to programming than writing code

Another thought from episode 95 of the Ruby Rogues podcast had me thinking about just exactly what I do as a programmer. Yes, most of my time is probably spent writing code, but there’s one big aspect of being a programmer that is often over looked. Problem solving.

Most programmers write code that will end up solving a problem. Whether it’s a small web product or a large ERP platform, the code that we write as programmers usually has a single aim. To solve a problem. Solving problems doesn’t start with code though.

First you must understand the problem you are facing. You must be familiar with the domain language of the problem and understand why the problem is occuring. I like to visualise the problem I am facing. Sketching out the problem in a mind map or even as a flow chart for is always a first step to understanding the problem. With a visual aid of the problem you might recognise solutions that you have previously implemented or even gaps in the problem that require further knowledge.

With the problem now understood, you then set about providing possible solutions to the problem. One solution isn’t enough though. It’s highly unlikely that the first solution you think of will always be the best fit for the problem. I always like to try and come up with at least three solutions to a problem if I can. If I am stuck for solutions then it I like to implement the easiest solution to the problem that will work. Okay it might not be the best solution, but it is a solution. In time, a better solution will present itself, but I think it’s best to at least start with some kind of solution.

Problem solving is just one part of a programmer’s day, but it is an important one.

Fixie Friday - Concept Bikes Assassin

Being a team player

Episode 95 of the Ruby Rogues podcast got me thinking about my previous roles as a developer and how I interacted with my team.

It’s interesting that of all the roles I have had in the last 10 years, I can only count one of them as being a true eye opener in terms of team interaction. My role in an recent team, although short, was the most positive experience I have had.

At the start of each day the team would gather for a daily stand-up where we would go over yesterday’s progress and do a quick overview of what’s in store for today. There was some chat at the start about the latest designs on Qwertree and football results from the previous night. Just enough of an ice breaker for everyone to get comfortable and then commence the stand-up meeting.

At the end of it, everyone knew what they were doing for the day and what everyone else in the team was doing. There was no negative comments on anyone’s part, and if anyone one member of the team had a problem, the rest of the team tried to provide quick suggestions as solutions.

Positive team interaction didn’t stop there.

During the day, we would frequently pair up with another developer to work on a task until it was complete. During this time a high amount of interaction took place between the different pairs on the team for that day. Sharing ideas for problems, learning from one another's coding styles and of course the odd jibe at your preferred text editor.

Team interaction was always high during this time. It was great to see developers sit down together, regardless of level of experience, and move the development team’s project forward by quickly completely the task they were assigned at the start of the day.

I only worked with this team for a short period of time, but it was the most positive example I have seen of a team enforcing positive team interaction. Those readers who are aware of agile practices will immediately see that the team I am praising is in fact a team that uses agile practices.

The amazing thing is that they aren’t doing anything that isn’t achievable by many other teams who have poor interaction and communication amongst their members. All it takes is a change of attitude.

Wishlist Wednesday - Less choice

I'm in the market for a new iPhone case. There are hundreds to choose from. I mean hundreds. There's too many to decide from. Competition is nice in business but as a consumer, sometimes I want less of a choice. Less choice means I can make a decision faster.

Comfortable tools

Software developers love their text editors. Those developers that invest a significant amount of time in one particular text editor are able to wield it with the proficiency a level 20 warrior. They’ll slice and dice the code with the mininal number of gestures needed. They have all the commands they need memorised right down to the last keystroke combination. Text editors are the primary weapon of software developers and so they need to know how to this tool with great effect if they want to make their day a productive one.

I chose Sublime Text 2 as my main text editor a couple of years ago. I just find it easy to work with. I know the commands that I need, I spent a fair amount of time getting the right plugins and setting them up so that they work well for me and of course I’ve tried hundreds of themes before getting the one that just feels right. So if I’m so happy with my chosen text editor, why the hell do I keep wanting to try another tool?The other tool I am referring to is Vim. It’s a text editor that is used by thousands of people and is over 20 years old. Every year, I ask myself, “Did I give Vim enough of a chance?”

I’ve tried Vim a few times as a replacement for Sublime but every time I try it, I find something that I don’t like and go back to Sublime. Fast forward a few months and I do the same thing again. For the last three years, I think I’ve tried Vim about five times. I’m not talking about a couple of days, I’m talking about a full on month of use. However, at the end of each month I simply switch back to Sublime. Is it a comfort thing? It might be.

Vim is a great text editor but I just don’t feel that comfortable using it.​

To categorise or not?

I’ve been blogging on and off for the last few years, but more recently I’ve been publishing something just about every day. Whether it’s a little bit of writing or a nicely built fixie, I’m publishing something every day. When I started blogging, I was fanatical about categories. I categorised everything. Everything had it’ place. Now though, not so much.

My tumblelog has a number of categories in it, but these are because the posts I make here are themed. On certain days of the week, I’ll post something in a particular context, Fixie Fridays for example. Categories work for this example because it’s part of an ongoing series of posts.

Since the start of the year I have published a little bit of writing every week day. All of these posts have been filed under the same category, Personal. As the writing varies from day to day I find it hard to file it under a specific category. From tomorrow I am just going to stop categorising my writing. Why pigeon hole something when it won’t fit? It’s one of those small decisions that I can do without.

In Great Company ...

... once again. Proud and honoured to be featured in Kurt Harden's annual 25 blogs guaranteed to make you smarter again.