Matthew Lang avatar

Matthew Lang

Family guy and web developer

The First Draft Isn't Final

I watched DHH's keynote from RailsConf 2014 and it re-iterated a few things for me but what stood out was the similarities between writers and programmers.

There's been a lot of talk in the Rails community about architectures, design patterns and testing recently. DHH touched on this in his keynote but one thing I wanted to mention here was the idea of drafts.

When it comes to writing code, your first attempt is never your last. Unless you have all the knowledge and time under the sun to get it right first time, there's always going to be scope to improve that code you just wrote.

I tell my clients when I think that a section of code could be improved by re-writing it. I'll pick the smaller sections of code to re-write as they offer the greater awards for the smallest investment in time. This suits my clients as they usually want features over improved code, but if I can improve the code base in anyway, then I'll aim for those bits of code that can be improved with just a small amount of time.

The same goes for writing. Your first draft is never your final piece. It might just flow from your pen but reading it back it might not sound as good as you first thought. Unfortunately re-writing my blog posts is something that I don't usually do. I'm just so busy at the moment that the most I can do is a first draft, a read through to correct mistakes, a quick couple of improvements and then publish it. It's hardly the process that I should be working towards.

Rather than worrying about the re-writing of these blog posts though, I'm looking at larger bits of writing that I have done. I have a first draft of my grass roots productivity series that I have compiled together for an e-book. I should make some time to go through this and re-write it. It's been a while since I looked at it and perhaps the unfamiliarity of it might reveal the places where I could improve it.

I know now though that regardless of whether it's source code for an application or words for a book, the first draft should never be your final attempt. Maybe there is more in common between writers and programmers than I first thought.

The Daily Reading Ritual

It's taken me a long time to find a habitual way of reading books that works for me. I call it the daily reading ritual.

When I first started my career in programming there was one titbit of advice that I had seen repeated over and over again.

Read a programming book every month.

I don't know how many of you have read a programming book, but for those that don't know they can be difficult to read. The trouble with programming books is that they are better used as reference books. Lookup material for when you're stuck.

I tried the one book a month goal and I failed miserably. For the next few years I kept on trying but no matter what book it was I would either give up on it or still be reading it at the end of the month.

So how do you digest a programming book without it becoming a monotonous chore?

What I've found that works really well for me is that I take five non-fiction books (programming or otherwise) that I want to read and I read a chapter of each book on a specific weekday. At the moment Monday is a freelance and marketing book, Tuesday is a sketch noting book an so on. What this gives you is variety. Every day is different. It's breaks the monotony barrier.

What about fiction books though?

Fiction books are easy to read because you usually have no idea what's going to happen and it's the authors job to send you to a place that's not your usual environment. It's a form of escapism.

I don't set a time limit for these as it takes the enjoyment away from the book. Instead I try and read these books as often as I can. It's usually at night when the kids are sleeping.

Since starting this ritual I've found it much easier to make progress on the books I've wanted to read. Not only that but I've also managed to set aside a few minutes in the morning for the non-fiction books and then at night I can plough through whatever fiction book I'm reading.

10 Tips for Todoist

Todoist has been my choice of task management app for almost a year now. In that time I've learned a thing or two about it. Here are ten tips to help you get the most from it.

It worth noting that most of these tips can only be used with a premium subscription to Todoist. At just $29 (US) per year for a subscription to Todoist Premium, that's less than the cost of a cup of coffee a month. Bargain if you ask me.

1. Archive Projects For Better Focus

While you might like to be organized by amassing a collection of tasks in a number of different projects, you probably won't be able to work on all these projects at the same time. Not a problem. Simply create your project with its tasks and then archive it to work on it later. Archiving the project keeps it out of active tasks but also keeps it out of your focus.

The archive command can be found in the menu that appears when you hover over a project with your mouse and click the ellipsis on the right hand side of the highlighted section. At the bottom of the menu that appears you'll find the archive command.

2. Create Linkable Tasks

Sometimes we would like to reference something online in a task. It might be support material for the task or a product relating to the task. How nice would it be to include that URL in your task? Well you can! Todoist uses the following syntax to include URLs in a task:

[matthewlang.co.uk](http://matthewlang.co.uk) (Must hire this guy!)

This will create a nice clickable link in your task and will also hide that nasty long URL.

Bonus tip: As well has hyperlinks you can also include bold or italic text in your task!

3. Capture Tasks With Email

Todoist is available on lots of different devices and platforms. If you have a desktop, laptop, tablet or smartphone then there's a Todoist client made for it. What if you're using a public computer to check your email and you'd rather not sign in to Todoist on it?

Tasks can easily be added to your projects and inbox by emailing the task to Todoist. For each inbox and project, there is a seperate email address that allows you to email tasks in. Simply send an email to the correct address that can be found in the tools section of the inbox or project, and use the subject as the name of your task. Hit send an it will be added to your list of tasks on Todoist.

To find out the email address for your inbox and projects, click on the tasks actions icon at the top right hand side of the list. On this menu you'll find the Email tasks to this project command where it will show you the email address you should send your tasks too.

4. Location Based Reminders

Reminders are great for when we do things at a set time or date, but what if you're running late? Instead of setting a reminder for a time or date, why not set a reminder for the general area that a task or project relates to?

Got a meeting with a client downtown at your favourite coffee place?. Set a reminder when you arrive at this location to get the coffees in before your client arrives. A nice way to start the meeting on a positive note!

Location based reminders can be found when you edit a task and hit the reminders icon. Simply flip the reminder from a date and time to a location and you'll be able to the reminder for a location.

5. Backups for Accidents

Deleted a project by accident that contained a list of tasks you entered the day before? Don't worry. Todoist's premium plan backups up your entire to do list every day. Just download the latest backup of your list from Todoist and re-import that project to save yourself the time of creating it all over again.

Backups can be found in the settings section of Todoist under the Backups tab. A list of recent backups is always kept here.

6. Group similar labels by colour

Labels in Todoist are a great way to group tasks, but Todoist only offer so many colours to choose from. What if you run out of colours? Easy, group similar labels by a single colour so that not only do they give you more choice of colours, each label has a contextual colour that is easy to recognise.

7. Recurring Tasks Save Time

At the end of every month I invoice a single client for the work I did for the month. I've been doing this for over a year. Recently though I got fed up re-creating the same task in Todoist. Using Todoist's ability to create recurring tasks, you can have the same task repeat at times that you need. No more re-creating the same task over and over again!

8. Start Projects Quickly with Templates

Starting a new project can involve setting the same tasks up as previous projects. Why bother creating the same tasks though? Templates are plain text files that contain tasks that you can import into a project as a template.

Templates can be created from existing projects or by creating them yourself in a plain text file.

9. Learn the Keyboard Shortcuts

Using the keyboard is a great time saver when you know the right keys to press. It's the reason why us developers are the most productive people on the planet. Right, that's not 100% true, but pressing keys can still be quicker than figeting with a mouse.

10. Reviews Projects and Labels with the Visualiser

When you view your Karma score there's a link to viewing all the completed tasks you have done. When you click this you can analyse how many tasks you have completed over a period of time for a project or label. This is great to use for reviewing your progress on a project.

There we have it. Ten tips for Todoist. Now go forth and be productive!

Compromise doesn't always need to mean settling for second best. When working with clients, compromise can mean everyone taking away something of value.

Compromise is often a word used in a negative way to indicate when you settle for second best. In my time as a freelancer though I've come to find it to mean a positive result.

I speak to my clients alot when it comes to starting new projects. Last week I had a meeting regarding some technical decisions that the client and myself wanted to make before starting a new project. We couldn't decide on which course of action to take. The client wanted to go one way, I wanted to go the other way. It should never be this way though. Allowing one side to completely dictate the decisions is bad for the relationship with your client.

When either side tries to remain in control, the other side invariably suffers. Not giving the client any control of their project can mean that they don't get what they had in mind and will reflect on working with you as a bad experience. On the flip side, if the client is always in control, you end up doing work that isn't enjoyable, challenging or in your best interests.

It's About Balance

Your client has an objective, you have the knowledge to get your client to the objective, there must be a happy medium where the two of you can meet. This happy medium is called compromise. In the example of my client meeting, I discussed the options available to the client and we came to a decision that was a compromise on both sides but one the will benefit any long term work we do together. By compromising we came to a result that benefited both of us.

Not all meetings will go this way though and you might wonder if this is only achieveable through some utopian freelancing world where all clients pay on time, attend all meetings and respect you for the work you deliver. It's not, the decision to work with clients is a decision you have to make as a freelancer. I don't need to tell you that clients that compromise are better than clients that don't yield control at all.

With compromise, both you and your client walk away with a positive result. It might not be what your client wants or what you want, but is it not better to walk away with a healthy working relationship with your client than to walk away with no client at all?

What is my Target Market?

Continuing with the book, Book Yourself Solid, I've identified what my ideal client is, but what's my target market?

18 months ago if you asked me who my target market is then I would have to answer, "I haven't a clue". Fast forward to today and the answer is still pretty much the same. The reason for this is that I have two types of clients. My major clients are clients I work with in what I see as my target market, the healthcare sector, they're organisations and businesses that require deliver software for the NHS, GP's and other healthcare organisations in the UK. The minor clients are clients I do work for on a rare occasion. I might have provided a website or application for them and they never require much work to either fix or upgrade what they have. They usually require a single week's work every six months or so.

I'll be honest, I still don't know for definite what my target market should be. I'm still getting a feel for the kind of work I want to do and whether there's a long term future for me in that market. Ideally I would like to do consulting work for healthcare software providers or even straight to the healthcare businesses themselves, providing myself as a development consultant and resource, but I don't want to do this forever. There's two options I see ahead.

The first is looking into another target market. I have a few in mind but nothing concrete. The reason I am exploring other options is that while I have firm background in healthcare I also have some experience in other sectors. One area of work I did that was interesting was risk management solutions. I certainly wouldn't be adverse to working in this market again.

The second is building a revenue stream from a number of products that will provide a steady income over the next few years. It has to be years as anything short lived like a book or a screencast is only going to generate so much revenue over a short time frame. If I went down this road I would need to continue releasing books or screencasts every six months and I'm not sure that this plan is for me. Something more long term like a software product or service would definitely be something worth looking at however, getting the right product is a challenge to begin with.

I know what my target market should be and maybe that's enough for me to be going on with for the next few years. There's no rules to say I have to stay with that market. If it doesn't work out then I can always change.