This week I realised a dream of mine: working for myself full-time. I’ve started consulting on an App that I am an equity own of, so in a way I’m doubly working for myself. I’m getting paid as a consultant and I’m increasing the equity in my company at the same time. My role is as a (the) technical consultant, covering all technology aspects of the company, from advice on things technological, to software development. 99% of the time I’m writing code.
When I came on board as consultant the software was already significantly built by another company. Fortunately, it was a company that I worked for at the time and I was the lead developer of this software, writing 90% of the code and making all the technology decisions on. I also was the business analyst and the guy having the conversations with the client about what he wanted to do and how the software would work, look, and feel. When it came time for me to leave that company the client contacted me about this current arrangement; I waited out the non-compete, and here we are today.
The first thing I did (last year!) was get JIRA and Confluence setup and start taking notes and creating issues for the various things we wanted and needed to do. We had a JIRA backlog when I was at my previous company, but it didn’t come with us as when the start-up left my former employer. I don’t think that matters a whole lot because we’ve been through a pivot or two since then anyway and while we may want to implement those features at some point, they’re not as important as they were a few year ago. If we want to do something like that again, we’ll go through the process again. Essentially, if we were grooming that backlog now, we’d have thrown the issues away anyway.
I’ve run Agile on a number of projects at various companies of the years, on projects of vastly different scale. So far, this has been the project most suited to Agile. Here’s why
- We don’t really know our final destination. We’ve pivoted a few times and while we think we’ve got a solid direction now (and it does really seem that way), we don’t have a “done” state for the app.
- Along with the above point, we don’t have a long list of requirements, but we do have a few key Features.
- We don’t have deadlines for all the Features, but we do have deadlines for a few of them.
- I’m a health nut (Weightlifting and Taekwondo) and the rest of my business partners are health professionals; we like to bounce ideas of each other.
That may not seem like many reasons, but here’s some things we’re not doing, where I’ve seen agile try to work:
- Fixed requirements and scope
- Fixed Price
- Defined team roles
Wow, that’s a shorter list than I expected. But they’re the key points. If you’ve got a fixed scope and you’ve got fixed price, Agile isn’t going to help you much. You may as well just get stuck in and deliver. Most often I’ve seen this happen when building websites for clients. There’s a list of features the clients want to have, with designs already signed off. They sign a fixed price contract to be delivered on a particular date with a company and the company gets to work building the app, still trying to work an Agile process – I guess so they can sound modern. Sure, it’s possible to still be agile. When clients want other features, you can always explain to them “We can do that, but in order to meet the cost and time constraints we’ll have to remove another feature.”. Nine times out of ten the client doesn’t find this acceptable and tensions arise. Anyway, wasn’t meant to be about Agile and when to use it, but rather How I’m using it J
At the start of day one I sat down with my Jira issues and my notes in confluence and I started breaking down the features (which were recorded as Epics) into User Stories and linking them to the appropriate spots in Confluence. I then continued the decomposition of User Stories into Tasks and I set started dragging issues into two sprints. One for this sprint and one for next sprint.
I wasn’t sure how long a sprint should last for so I’ve left that open ended for now. My typical desire is two weeks, because either two or three weeks seems to be the most accepted length. I have worked on four week sprints though. I want to try and produce something every two weeks but that needs to be balanced with the business side not wanting to see something until it’s developed - that is until a feature is feature complete. The way I’ve broken my stories up is so that each story is a standalone business feature but may not be completely cover all the requirements of the feature desired by the business. I think I’ll work harder at convincing the business that smaller fortnightly pushes are a better way to go – as they say, “Fail fast”. I want to know ASAP if what direction we’re heading isn’t the desired direction, particularly important in a team of one.
Looking back on the week, this first week was definitely atypical. I think the “newness” of working from home and of deciding my own hours has disoriented me a little. I’m using Harvest App to track my hours, not because I’m charging hourly – but because I want to know how efficient I’m being with my time. Harvest tells me I’m getting enough work done when it averaged out over the week, but I was up and down from my chair every 45 minutes and I’d take small 10 minute breaks to walk around the house. Possibly it was because I was slowly immersing myself into a codebase used to be intimate with but haven’t really seen for two years. I was still remembering with the code patterns I used and where things were located and how they were related. That’s a lot to try and take in sitting down in front of a PC for 8+ hours straight. If anything, the frequent breaks helped. I read a bit and look through code, and read through confluence – uploading the business rules into my brain. Then I would take a break and go and put the washing on or sweep the floor or some other housework task (which my wife loved when she got home from work and saw that there was nothing for her to help with). I think those breaks helped the info stick in my brain, as I had those 10 minutes or so to consider what I’d just be reading and re-learning and try and commit to memory.
Another thing I started to doing was going to the gym early in the day. So far my day consists of something like:
0630 – Wake up and shower and grab some breakfast. Spend 30 minutes on my favourite morning websites and wait for the caffeine to take hold.
0700 – Start work, picking up wherever I left of yesterday. Generally, it’s pretty fresh still
0800 – Walk my two girls to school and continue on to the local gym, drinking pre-workout as I walk
0830 – Lift some heavy ass weights
0930 – Walk home and shower, drinking a protein shake and a post workout as a I walk.
1000 – Get back to work
1200 – Cook lunch (usually multiple chicken breasts) and keep working while it’s cooking.
1215 – Eat lunch and read a book/magazine
1245 – Back to work
1730 – Stop work, kiss my wife and kids as they come home and I leave for Taekwondo
1930 – Get home from Taekwondo, shower, and eat dinner.
I don’t always go to the gym (rest days), so sometimes I’ll drive the kids and be back at home working by 0815. I also only go to Taekwondo three days a week. Sometimes, like last night, I’ll find myself working away until midnight – enjoying the feature I’m implementing. It really depends on the mood I’m in.
It’s amazingly good being able to work from home and not have that extra 90 – 120 minutes of travel to and from work each day. It allows more of life to be lived and more time to be spent with my kids – even if it’s not directly playing with them (it’s not), just being around them for an extra 2 hours in the mornings makes a big difference (we used to drop them at outside school hours’ care at 0615 on our way to work in the mornings). The plan is to transition them out of after school care too, so next year they’ll walk home from school (I live about 10 minutes’ walk and two streets from their school) by themselves. This will save our family literally tens of thousands of dollars a year! We can instead spend that on a brilliant annual family holiday.
Working for myself has always been a dream of mine: Initially it was to create something awesome in the cyber world. As I grew, I created three awesome things in the real world (2 female and 1 male) and they’re by far better than anything I could create in the cyber and my priorities shifted. Now it’s about doing what’s best for my family as a whole: for me, my wife, and my three children. Hopefully along the way I can create technology I’m proud, and I am so far but this journey has only begun.