A few weeks ago, I took what I called a code retreat. Basically, with my awesome wife’s blessing, I decided that I will spend the weekend locked up in the basement and code all weekend. It was fantastic. It was glorious. It was so much fun. I literally went down Friday evening with my computer, food, water, headphones and a bunch of other things I might need and didn’t come out until Sunday night.
Rules of Code Retreat
- No Phone – I actually put it on airplane mode
- No Email – I checked my email once all weekend, not bad for someone who is used to checking it every 20 seconds
- No Social Networking – I am not a big fan, so that was not that hard
- No Hacker News – that one was tough, by the end I was starved for my HN fix
- No Wife – we agreed that she will only contact me if there was an emergency
- No Family and/or Friends – I told most people that I regularly contact that I will be out of touch all weekend
- No Beer – I don’t care how much you love it. It will impair your coding skills.
- No YouTube, no TV, nothing….
- ONLY PANDORA with a nice pair of headphones
Why Code Retreat?
Do I need a reason to code? No. That in and of itself is enough to get me excited. I love coding, I love creating new projects and I love learning new things. Those are enough reasons. But what I really wanted is to be completely focused for a significant amount of time without any distractions. By scheduling a code retreat for a weekend, I am committing myself to doing that and it worked. I have coded like I have never coded before – well at least since I was fresh out of school. It was a great experience and I have decided to do it once every 2 or 3 months – it might be easier/harder depending on your situation but you should try it out. You will like it.
Efficient Code Retreats
Well, it’s not like I am experience code retreater – I have only done it once. But here are some things that I did that I thought were helpful.
Plan It In Advance
I had a running list and mind map weeks in advance of things that I should do or consider doing in the code retreat. I kept adding to it whenever an idea came to my mind.
Decide A Project
I reviewed my plans a week or two before and made final decisions on what to do and what to skip. I had several ideas, some of them included learning new languages or new tools others involved using the tools and knowledge that I already have. I was dying to do a metro app for Windows 8 but since I only had a weekend and there were so many unknowns and the need to use new beta tools – I decided against it because I had a limited amount of time – less than 48 hours.
I decided to do a web-based project. I am well versed in ASP.NET MVC and my knowledge is current, so there will be no learning curve and will be mostly execution. Again, I had to filter through a list of ideas from the unrealistic and crazy to the more realistic and pragmatic ones. It would be cool to claim “I built a social network in a weekend” but we all know that is very hard to do. More about what I actually ended doing later…
Set A Goal
Once I reviewed my running lists and decided on what project/task to handle, it was time to set a goal. My goal was to build the application and deploy it by Sunday i.e. in less than 48 hours. Once I started, I quickly realized that I am not as good as I think I am and coding does take time after all. You would think after 12+ years of doing this, I would know but I still under estimated the effort. No wonder many projects get delayed due to bad estimation. In hindsight that was very optimistic and an unrealistic goal but it gave me something to work towards. I had to prioritize my list and get the big-impact items done first so I can meet my deadline. Spoiler alert – I didn’t meet the deadline.
Mistakes To Avoid
I think my biggest mistake was a technical one. I mistakenly decided to use Azure for hosting. It has come a long way form the last time I tried a couple of years ago. But once I started deploying I realized how F%#@! painful it is. It takes like 20 minutes to deploy an app, so it was extremely difficult to rapidly fix bugs. On the other hand, I can deploy to AppHarbor in literally 20 seconds.
Unrealistic goals, is another mistake I made. I aimed too high and failed to accurately estimate the effort it would take to get this done and didn’t account for unforeseen technical difficulties.
We all know that we suck at marketing but we still try… and fail. Personally, I have a lot of respect for marketters and marketing but my idea of marketing goes like this:
- Build product/widget/app/website
- Get it on hacker news and reddit
- Become rich and famous
It can’t be that hard. Right? Wrong. I have tried it before with very limited success. Unfortunately, I don’t know how much better I can do it this time. So, I am going to focus on making a good product, blogging about it, tweeting it and emailing some friends about it. Other than that, I am not going to do much. If I see some traction, I will consider other options, perhaps reaching out to some bloggers, actively promoting through my blog and maybe even pay for some ads (highly unlikely) …
Show Me… Show Me
Well, I am not ready to show you yet but I am very close… If you want to be notified, you can click here or follow me on twitter @eibrahim. You might even get some free subscription or swag for being an early adopter.
Leave comments over here http://news.ycombinator.com/item?id=3849080