Developer++
I've been working up in Newcastle recently on the longest stay of my Nomadic Web Development mission, wandering the globe and country getting things done.
This weekend I popped home to Bristol for Web Developers Conference 2011 and while I was mainly going to heckle Elliott Kember and see a few friends I came away inspired to make some changes. Three of the talks at first seemed to be the common "This is how I went from being an inexperienced dev to being part of an awesome company" but the combination of different approaches and characters complimented each other perfectly and left me thinking for most of the day. By the time Paul Boag finished his talk I was ready for some changes.
On the whole Neil Dennis, Ben Bodien, Elliott Kember, John O'Nolan and Paul Boag got me thinking how to improve myself as a developer, business owner and as a person in general.
What grinds your gears?
The word "emotional" has negative connotations and to most if somebody is emotional they are weak minded, prone to random fits of crying and is likely to have mood swings. This thinking is absolute crap as we are all emotional and emotion drives almost every single decision we make, how well we sleep or even what we buy, whether it's buying a flash car to look good and feel important, or anger when somebody insults us.
Learning to identify the things that invoke these emotions can be the first step in making yourself a better developer. Ben described how after every project he looks back in review and works out what elements of the project made him happy, proud, relieved, stressed, angry, frustrated and "ready to smash a baby squirrel with his fist". By going over these points in a project (A client asking for a stupid design, scope creep, the feeling when the site launches perfectly and gets in the press, etc) he can think about how each of these things came to be and strive to repeat the good and avoid the bad.
Things that recently have made me frustrated are:
- Constant streams of emails causing distractions
- Complaints
- Non-constructive feedback
- Being constantly busy
These are pretty common problems for people working in the web industry thanks to the high expectations, low understandings of what we do and ease in which we can work out of hours.
How do I plan to get past these issues?
Remove your distractions
Paul Boag pointed out that if you have your email coming in every 5 minutes then you are being distracted about 22,000 times a year. That's a fucking lot! He suggests that your check your email once or twice a day, but by turning my emails down to come through once an hour then I have massively reduced the number of distractions. It gives me nice one-hour blocks to get work done, and if I finish a task then I can pick another task. Anything else I'll just tell people that I'll look into it in the morning. Got server up-time to worry about? Set up some rules with AwayFind.com.
I'll also be setting up rules for things like pull requests. I am incredibly happy that CodeIgniter, FuelPHP and PyroCMS are all doing so well that there is almost constant discussion on GitHub but damn is it distracting. Almost every 5 minutes a pull request comes in that needs discussion or feedback, other people need to be consulted, testing needs to be done, arguments randomly spring up for and against, people start moaning about stuff and BAM I am distracted. It's non-stop. From now on all emails from GitHub go in a box, and I'll open that box for one hour every evening if I feel like putting my open-source hat on. I'll do that when I am not distracted and in a good mood, meaning I am likely to respond to everything better and give my best answers.
Learn to love complaints
John O'Nolan made a genius point and turned my thinking about complaints on its ass. He said "If somebody takes the time out of their day and explain in detail to you all the ways in which you are shit, they are amazing. If you can have a conversation about them about why and improve on this then they will be the first to turn around and be your biggest evangelist. We had this on the PancakeApp project with people calling it a terrible product because it was lacking features they wanted. We wrote those features quickly and PancakeApp as a whole became better for it, but even better we had the complaining user turn around and start tweeting our praises to his thousands of followers which lead to a mention by Smashing Magazine. That was Lee Tengum's job and he did it well, while my first reaction would have been to call the guy an unreasonable ass for being so complacent and point him to the Feature Request forums.
From this point on I'll be thanking people for their complaints and try my hardest to get a conversation from them as to what the issue is. If they are then just unreasonable and offer nothing constructive they are an idiot. John points out that in this position he will normally just say "Ok, you make a better one and then we'll talk" because if they cannot offer advice as to how something should be improved then they obviously have no base for their complaints and should be ignored. Simple!
Why are you so busy?
This is a problem every freelance developer has. Paul explained how so many of us like to wear it as a badge of honor and none of us can pretend that we don't. How many times have we seen or written the tweet "I've worked for 18 hours, drank 12 coffee's and I still have more work to do! #fml". Fuck I think that might be a direct quote from me! It's not a good thing and thinking about it it's just stupid. If anyone has that much work to do they need to have a think about why.
If it's the case of your boss having unrealistic expectations of your time then fuck them: that needs to change. Your boss either values you highly and will be forced into action when you try to quit, or is treating you like an idiot and you would be better off elsewhere.
It could be the case that you are the boss and if you still have that much work then you need an employee. I am currently being asked for enough hours to keep 3 clones busy and I am tired of saying no to people, it's obviously time to start saying yes.
Things really do seem that simple right now. I've employed before when I was 18 and inexperienced. My company did not last long after the start of the recession which made me cautious about going down that road again, but now I have five more years in the industry, way more demand and a company that is behind several interested products. I'll be starting the recruitment process formally soon, but HappyNinjas Ltd are looking for a FuelPHP developer.
Summary
These speakers pointed out some things to me that should have been obvious. Look at who you are, concentrate on what is important, ignore things that you don't need to worry about and try to solve things instead of simply accepting them as standard.
I would be interested to see other posts from you guys about how you see your career at the moment and how you can see it changing in the near future. What are you going to do to make yourself less stressed, more content and in return more productive?

Comments
Dennis Rasmussen
2011-10-24
I enjoyed reading this post.
From time to time I happen to have these bad "breaks" because of the distractions you mentioned.
Unfortunately these "breaks" tend to last an entire day or worse, an entire week(end).
To counter this I try to plan 5-7 days ahead.
Allocate each day for each project or so and split the day up into 3 parts:
- 1 hour of emails
- 5-6 hours being productive
- 1 final hour for emails and preparation for the next day.
This usually works out well for me.
Oh and then I reserve the evening for fun times in real life or on the web (open-source projects, blogging etc.)
Note that all emails not related to work I put on hold for the evening as well.
Jonathan Clift
2011-10-24
Good stuff Phil, interesting post and a lot of stuff here that's got me thinking too.
I've been freelancing for about 5 months now and during that time, distractions have been my biggest enemy. I just can't help bouncing around from one thing to another, losing focus and then jumping onto something else. It's no surprise that it's in the evening that I actually get all my work done because there are far fewer distractions.
The thing is though, if I planned my day better I wouldn't need to work so late in the evening. I'm not trying to be some hero working late at night it's just I'm not as productive in the day as I should be. This has got to change for me and one thing I want to do is planning out specific blocks of time to get stuff done. So one day might look like this:
9am-10am - Email session, get priority emails sorted
10am -12pm - Specific client project work, solid 2 hours - instant messaging etc off
12-1pm - Blogging, reading articles etc etc, maybe quick email check too.
1-2pm lunch
2-4pm - Another 2 hour session on client project work
4-5pm more email and tidy up, accounting and boring invoicing stuff
5-6pm Another hour tidying up earlier client work.
Of course most days are never really as rigid as this but the important part is solid chunks of time focussed on specific tasks. 2 hours focussed on one very specific task is far better than 8 hours working on that task on and off throughout the whole day.
Another thing I like to do (but hardly stick to it) is to set out 3 priority items that WILL get done "today." This is 3 things you KNOW you will complete today and get ticked off. Doesn't sound like a lot but the important part of this is ticking off your items before the end of the day. People love to complete to-dos and so do I, it gives you satisfaction and confirms a productive day.
Finally just a quick note on your paragraph on learning to love complaints. This is a tough one to swallow but something I learn't to get better at in my previous job (working with so many opinionated people). I always think the important thing to do when dealing with complaints/feedback is not to immediately get defensive. Probe the feedback, get more information from said person and then act on it and improve, you will benefit from it in the long run. (Assuming it's constructive)
Phil Sturgeon
2011-10-24
Jonathan: All good points! If you are not so good in the mornings, go for a walk in the countryside, hit the gym, watch a film, find a mountain. Then come back after lunch and write the hell out of some code. You need to get your 6-7 hours in, but not at any specific time. I think finding the best time for you is what is important and if you're a night owl or not a morning person then do it :)
Ned Fenstermacher
2011-10-25
Nice post Phil, thanks for sharing.
I've been at my current career for over three years now working as an application developer, which tends to be more focused towards support and customization rather than new development. Working in this fashion tends to skip the time for designing and goes straight into the implementation phase, which causes chaos.
There are many times where I look at past code and want to kick my former self in the face for doing something, not necessarily wrong, but not as efficient or as I would do now. I realize that's the nature of the beast and all, but having time design and plan would help limit those situations, I think.
I've come to a realization working like this, that I am only one person and I do have limits. So instead of stressing about what's on my plate, I'll do my best to get done the tasks at hand and if the priority changes, so be it.
Another thing I've been trying to do is get involved in other projects within my workplace to bounce ideas around and pick up some new tricks. I'm not having too much luck there, so I'm going to try and accomplish this by participating with a open source community.
Rodrigo Ferreira
2011-10-25
GTD + Pomodoro is a great combo. GTD helps you focus on concrete "next actions", and Pomodoro helps you slice your day into small highly productive pieces (the default block is 25 full concentration minutes + 5 minutes rest). Pomodoro itself may change your life. Take a look at these methods. They are REALLY great for software developers (and for everyone that needs a rational way to control their time and productivity into measurable units).
Phil Sturgeon
2011-10-25
Rodrigo: I have to say I have never in my life felt less productive than when I started faffing around with various GTD tools. For me my TeuxDeux todo list is enough, and my projects have CodeBaseHQ or GitHUb issues to track todo lists. If I want to go mad sometimes I use Trello but stuff getting any more complex than that.
For me it's more about turning off the tools and getting things done than messing about with shiny apps that make you feel like more is getting done. If they work for you then God-speed, but they just leave me with more things to worry about!
Spir
2011-10-25
Nice article, it makes me think about the 37Signals book I have read last year : Re-work. Someone who work a lot may not work really good. I try to work a very few (only 4 hours a day dedicated to my "core work") and be very effective by being almost disconnected from everything but what I have to do.
Rodrigo Ferreira
2011-10-25
Phil: I see your point. But GTD is like TDD, BDD, Scrum, Git-Flow or whatever. Get the idea, keep what works for you and discard the rest. I don't buy the full GTD idea (and yeah, I've read David Allen's book twice, not talking about "Learn GTD in 5 Minutes" ;)), but clarity about "next actions" in each project, contexts for actions (so I can make all phone calls while in transit or quickly check everything I need in the market) and a sense of "next few years targets for life" are great for me. And you don't need any special software to do that: any todo list just works. In fact, any text file just works. I use my Blackberry Tasks/Notes apps synced with my MacBook iCal tasks and notes: can't get much easier than that...
Pomodoro is a completely different game (http://www.pomodorotechnique.com). It's all about focus and time management for the things you've already decided to do. I really, really highly recommend it to ANY software developer. Give it a try!
Jon Stuebe
2011-10-25
Phil: I completely agree with you about being super busy. Things get pretty crazy for me between school, work, and freelance. However, at work we've decided to take the waiting list approach to be able to support the influx of clients. In my opinion I think it's a great solution to the problem, because you shed the horrible clients that you never wanted to work with in the first place and keep the others because they feel like they are working someone important, which even though most won't admit it, want at some level or another.
Mfawa Alfred Onen
2011-10-28
Phil, I enjoyed this post. Now I have to sit down and reorganize my choices.