bizniz
Jul 16, 2006
Fulltime developer
On Living 'The Life[tm]'
Today I have a somewhat personal announcement to make ;-) Effectively July first 2006 I’m a full-time independent web developer! What does that mean and why do I find that so exciting? Well, “thereby hangs a tale…[tm]” — so if you will indulge me, here it goes…
I’ve been “working with computers” (a.k.a “what your Mom tells other people what you do”) as single source of income ever since I left school. Except for two one-year-long dot-com-stints that work has always been freelance.
What that meant effectively, was that I was trying to spend as much time as possible playing^Wworking with stuff that interested me (mainly MacOS, BSD and anything that used a socket) and try to make a living from applying those skills. That usually amounted to me fixing stuff for people. The work was ad hoc, billed hourly and over time I acquired a large enough client base by means of word-of-mouth (and reputation, I suppose) to make a decent living while still finding enough time to play and try out new stuff. (One of those new things being Plone, of course, ca. 2003.)
That life style worked just fine and for about two years I basically had my living room at Marienstrasse 11 — the Berlin quarters of the CCC. Good times, good times, indeed…
But that all changed, of course, once I had my own family that I needed to support. Workwise this simply meant, that I had to start to earn more money in less time, given the obvious fact that expenses had risen and that work and play no longer were the only demands put on my time. Besides all the positive changes that life as a family father brings with it (yes, there are!), this also had the unfortunate effect, that I had less time to tinker and hack and needed to spend more time working ‘billable hours’. That sucked. A geek without enough ‘tinkertime’ effectively stops being a geek…
Plus, by increasing my workload I also increased the number of clients and soon I found myself in a place where you don’t really want to be: I had become indispensable and irreplaceable for far too many people. Some days I would have up to twenty(!) support calls from various clients and needed to be at two places at the same time. In short: There were just too many yellow post-it notes on computer screens around town with my phone number on it…
At this point I started outsourcing some of the admin work to befriended colleagues. After a few hiccups this went rather well and freed up time for the family and… yup, developing websites with plone ;-)
Because what I really enjoyed about that work, was that it was not so fast paced, ad hoc and chaotic as the admin work, where most of the work was just fixing what had broken or setting up the umpteenth new workstation. I was mainly just reacting. In contrast to that, I found developing almost soothing. Also, with Python I had finally found a programming language that really suited me and that was fun to code in. And building up expertise is, of course, something any geek thrives upon. After years of “Jack of all trades — Master of None” I finally had found something to focus on for a change.
So, as time went by I became involved in more demanding projects and also with the plone community itself. And I must say, that plone’s community of developers and users was what ‘sealed the deal’ for me. Attending the 2005 Plone Conference in Vienna just proved to me, what I already knew: “Yeah, I can fit in here!”. And two sprints later that hasn’t changed, either…
However, eventhough, most of the work for my admin clients was effectively done by other people by now, I still found that I couldn’t do proper development work. While I now frequently had days where I had no phone calls from client at all — I never knew that in advance, of course and most days I still had to react to unforeseeable ‘emergencies’. I realized, that it meant one thing to outsource work — and quite another to outsource responsibility.
I tried bridging that gap as best as I could for over a year, but it just didn’t feel right — as most compromises do… This forced me to re-think the whole issue and that made me realize, that the only reason I still held on to the admin work and -clients was… fear. Fear of losing a safe source of income. Fear of letting people down with who I had been working with for years. Fear of not being a good enough developer to earn a living and support a family. Fear that I wasn’t replaceable. And, of course, the classic: fear of change itself ;-)
Spelt out like this, I finally realized, how stupid it all was — well, to make this really long story (somewhat) short(er): it took me just about a week to settle the deal and make the necessary arrangements to transfer my client base to the two guys who had been helping me out all along. I wrote a few emails to the major clients, handed over my mobile and presto! And while some clients actually did voice some regret about me not servicing them anymore the majority of reactions were actually very supportive — one of them even congratulated me ;-)
I’m now into my third week of being a full time developer and I can’t tell you, how much I’m enjoying it (although, of course, I’ll try to…). Last week a new project came in (so currently, I’m working on two in parallel) — and the synergy between the two projects is amazing and encouraging. I’ve started hanging out more on #plone, too ;-) I can spend the entire day tackling a specific problem in full confidence that I won’t be called off to some ‘emergency’ at any moment. My weekly bookkeeping session used to take up to three hours — now I’m done in thirty minutes ;-) I sometimes don’t leave my neighbourhood for several days in a row and do everything on foot.
Anyway, I realize this has been a rather lengthy and personal entry but trust me when I say, that I really needed to get this out… and who knows — I even might find myself with more time for blogging now ;-)
Mar 10, 2006
"Never release a 1.0!"
On making kick-ass Plone sites - and everybody happy...
Having completed two Plone-based projects yesterday I now want to take some time and reflect how these two projects went down and what I’ve learned during their course – not so much on a technical level but more from a management perspective.
Both projects differ quite from each other technically. One is basically just a “skin job” for a site using standard ATCT objects and a non-customized version of the Plone Tableless skin for editors, while the other is based on a multipage UML-diagram and requires customized editing interfaces and workflows).
Both fulfill their specification – but neither are finished. In my – for the time being ;-) – humble opinion I now think that it’s basically futile to try to release a 1.0 version of a site because you can’t create a polished interface without customer feedback. And – at least in my experience – most clients find it hard to provide specific and valuable feedback on beta stages of a site. I found that I’m doing nobody a favor when submitting half-finished inbetween-versions of a product for customer review. In the end I just confuse him (or her) and waste everybody’s time.
In these two specific cases we’ve now all happily arrived at 1.0 and are now (just as happily) taking ‘em for a ride and are collecting a wish-list of improvements that will turn them (hopefully!) into really cool sites. The key point here – and my lesson to take home – is to communicate this approach to the client from the start. As a developer you not only have to manage ressources and time but – perhaps first and foremost – expectations – i.e. tell the client clearly that the “1.0” will be a “rough diamond” – valuable but not necessarily pretty, yet.
In conclusion, here’s my proposed “life cycle” of a plone project:
- initial consulting (What is Plone? Is it the right tool for the job? free)
- specification (based on hourly rate and thus variable – but small in scope. Under no circumstances complete this step without having read Joel Spolsky’s Article Painless Software Scheduling first!)
- implementation of 1.0 (the largest part of the work but based on the specification and thus fixed price and fixed date)
- specifying, what’s still missing based on the real experience with the 1.0 – version (most work in this part done by client – no charge here, either, but no fixed time frame)
- cleaning up to 1.1 (based on the findings in step 4 – fixed price and, again, fixed date)
I think this represents a fair trade-off between offering realistic compensation for the developer on the one side and budget security for the client on the other side. Because there are always technical uncertainties involved in any project that could endanger its success and in my view it falls into the developer’s responsibility to protect the client from these (i.e. if I have to spend some extra time during phase 3 wrestling ArchGenXML or learning how to write test cases that shouldn’t raise the cost of the project – especially since the client has absolutely no influence over this part anyway – the client needs to be protected from the developer, so to speak.
Not so with steps 2 and 4, though: here it is almost entirely up to the client to dictate the terms and thus the price. Here it’s the other way around: the developer needs to be protected from the client ;-) (by using an hourly fee in step 2 and by creating a second specification for step 5.)
Now I know for a fact, that meanwhile some of the more seasoned Plone and Zope developers happen to read this blog, too and I’d specifically like to ask you to share your opinion and/or experiences on this subject.
I’m sure we all can profit from being able to deliver slick Plone sites on time and within budget ;-)
Feb 28, 2006
Withdrawal
The person you have called is temporarily not available.
Part of being a freelance Plone developer means to always(!) have a certain number of potential projects in your pipeline because most of them will not come into existence.
Of course, this can also mean that you end up with more projects than you can handle yourself at one time. Which is what happened to me a couple of weeks ago… I’ve been able to alleviate part of the work load by sharing it with some good friends and co-developers but the net result is, that if I don’t dedicate every entire day to serious Plone development until mid next week I’ll blow not one but two deadlines.
After realizing that (hey, project plans are good for something!) my first thought was “No way! Can’t be done.” But taking a closer look I realized that my main distraction from being able to get a full day’s worth of serious development done was simply my other clients calling me on the phone.
So I gave it away.
If you dial my number a friendly guy named Niels will answer it and either take care of all Macintosh related issues himself (he’s rather good at that, too!), delegate to Cryx (hosting matters) or David (Windows/Linux) or simply sends me an email so I can get back to the person.
As to not be entirely unreachable (i.e. for family and colleagues) I’ve ordered a new mobile number but until that arrives in the mail I’m completely untethered, yay!
Interestingly, the symptoms I’m experiencing are certainly similar to withdrawal. I.e. thinking “Was that my phone?” when I hear a ringing noise somewhere (and boy, does that ever spike the adrenaline…) or checking my pocket and noticing, that it’s empty (more adrenalin!). That’s like when I got rid of my TV a couple of years ago and would catch myself glancing into the corner where it used to stand and realizing, that it’s gone. Or when I gave up smoking and would still automatically reach into my pocket when, for instance, waiting for the train.
Except, that this time I’m rather enjoying the symptoms and savour the brief luxury of not having a mobile phone ;-)
Nov 20, 2005
Sunday, bloody Sunday
"The only trouble with doing nothing is that you can never be quite sure of when you're done..."
Ah, the sweet taste of achievement... Today, I’m having a real, proper Sunday. That means, no work, whatsover! I’ve been meaning to do this for ages and it has taken me surprisingly long to achieve it… Actually, today was already the second “proper Sunday” in a row and I’m determined to keep it that way from now on! The “trick” is to get all work-related stuff done on Friday and Saturday. While I used to postpone necessary but-not-immediately-urgent work to the weekend (and thus often loading up the two scrawny days that a weekend consists of with easily three days worth of work…) I now – as one measure – don’t do that anymore, at all. I mean, hey! That’s what Mondays are for, right?
The second measure is that I’ve created a special todo-list in my home-grown GTD system called crontab.txt that contains all the tasks I need to execute regularily, broken down into weekly, bi-weekly, monthly and quarterly. The effect of that has been immense. I now make a big effort to get all things of the appropriate lists done on Friday and Saturday. Knowing that once I’ve done all of them I can relax without guilt is a) extremely motivating to, well, get things done and b) creates a whole new experience of free time.
While I’ve been following through the crontab approach now for well over four months(!) and enjoying its benefits (clean office, nearly immaculate bookkeeping, ease of mind etc.) I have now finally managed to reap the full benefit – a Sunday full of leisure time. Needless to say, the wife and kids love it and since I still do allow myself time at the computer for fun stuff (blogging being one of them) the geek in me is not intimdated ;-)
So if you’re self-employed and overworked – give it a try: treat yourself to (at least…) one full day off per week...
Update: Okay, so I'm feeling a little bit guilty now, after all... I just persuaded Erdgeist to not work on the Datenschleuder tonight but rather hang out with me (and a couple of beers) ;-) Sorry folks, you'll just have to wait... (To be fair: tomorrow evening we'll meet to do the final layout on the upcoming issue, so not to worry!)
Sep 07, 2005
Agentur Manzelmann
From the Show-and-Tell-Department
Proudly (and tired - last-minute-changes, anyone?) I present my esteemed readership with my latest public Plone instance - Agentur Manzelmann.
It's my most ambitous site to date - both in terms of development as
well as hosting. Currently the site contains ca. 3Gb H.264 encoded
Quicktime movies, go ahead, take a look (Quicktime 7 required)- I find the quality really
quite amazing (in many cases the limiting factor wasn't the encoding, but rather the quality of the raw material...)
Over the next days (weeks?) I'll be posting about some of
the aspects of developing the site (now that I'm no longer bound to the
NDA ;-) but right now I think I'll go and call it quits for today...
May 30, 2005
Restecp!
Props where props are due, man...
As of this year, here in Germany you are required to transfer your VAT declaration electronically to the IRS - they even offer free Software for doing that. However - how did
you guess?! - that Software (currently) only runs under Windows. As of
yet there is no cross-plattform, free API that one could use.
However, some companies are now offering a free, web-based interface
for transfering your (usually monthly) numbers to the IRS. The
particular service I chose was the one with the cleanest website and the
friendliest appearance and after using their service for the second
time now today I really want to extend them a big fat Thank You! Why? Because the service they offer is a) simple and clean, b) it works and c) no strings attached, i.e. its not cripple- or nagware.
And while you do need to register an account with them, that's more to fulfill their
obligation towards the IRS and it is not identical with creating a
customer account on their site and they haven't sent me any email
beyond what was necessary for registering.
I call that
generous. If I should ever need to purchase Windows based accounting/tax
software (God forbid! Doubly so!!) my first stop would be collmex ;-)

