close dialogue

Hello smile

I'm Siobhan Curran/Kisa Naumova, and this is my weblog. I tend to write about stuff like crossdressing, Macs, code, cats, wine and Second Life, but in general it's just an ongoing conversation about all sorts of stuff. If you'd like to know a little bit more about what this all is, I recommend starting on this page which has a little bit of info on who I am, and what I'm trying to do — or you could dive into my five years worth of archives if you like.

Otherwise, feel free to close this box and explore...

Monday, 10th September, 2007

How I Like To Work

tagdevelopment work

This is most likely of no interest to anyone at all. It's just something that struck me the other day, and I thought I'd write it down. You'll have to excuse the self-indulgent navel-gazing (again), but I've spent most of the morning re-writing my CV and I'm in that kinda mood.

A while back, I was going through a bit of a 'self-purpose' dilemma. Despite having what most people would regard as a potentially wonderful job, I was finding it really hard to pin down just exactly what it was that I did — and how I did it.

Over the past two years though, things have really turned themselves around, and I now find myself in a much more self-confident position. I still can't say what I do in a quick job-description-type sentence, but give me half an hour and I can get across the general jist of it :smile:

The thing is though, what I'm learning about myself is that a freedom to be creative is very important to me. I'm not a particularly safe bet (for example) if you have a looming deadline and a very specific brief. What I am good at, is problem-solving when it wasn't apparent that there was a problem in the first place.

This whole 'prim-tweening' from the other day is a perfect example of what I'm trying to get at. It was a curious little problem, born out of a whimsical notion that I had to build a massive twisty figure-of-eight to illustrate a particular project development model.

How to fill the gap smoothly between two far-apart prims?

Obviously, before anyone points it out, the solution I came up with doesn't exactly solve that problem. Simply interpolating blocks between the two of them results in a join — but not a smooth one.

Since then though, I've been immersed in quadratic equations, with scraps of paper strewn all over my desk, my head doing three-dimensional gymnastics trying to work out if applying Bezier equations to all three vector points is enough to create the perfect curve.

But before this turns into a discussion on calculus, it struck me yesterday that this is exactly what it is I like to do — have some little creative spark that conjures up a particular problem, follow it up with some indepth research, resulting in a little tool or piece of code that manages to solve the problem for me.

It's that "for me" bit that frustrates me though. I do, honestly, try to turn these things around into something that other people can pick up and use without ploughing through lines and lines of sloppily-written code just to find out how it works. But I'm coming to realise that I'm just not very good at it.

That SVG thing of mine — for example — it was (I immodestly believe) a seriously good bit of coding, something that could massively simplify the process of putting together a huge build. But the actual operation of it is very much tailored around how I use it — the scraps of paper, the manually editing the code to make it do different things — rather than something you can simply chuck a design at and leave it get on with things.

It frustrates me, this inability to 'finish' a project. I know I've said it before, but I really wish there was someone around who had the time, energy, and enthusiasm to take some of the stuff I've made and transform it into a polished tool. I wish I had a little team of people who I could work with on stuff like this — churning out user-friendly scripts, tools and web apps, all with a coherent aesthetic UI.

...

Sorry :unsure: That didn't really go anywhere, did it?

's funny. When I was sat talking to Luis favicon the other day, I suddenly became aware of a great surge of creativity within the social circles I potter around in. People all over the place spontaneously making Stuff™ and flinging it out there for the world to get its mits on it.

And I thought to myself "Shit. Imagine what we could do if we all cracked our heads together".

I think many of us have one particular interest or skill or ability and it is often the job of the early part of our life (at least) to discover it.

For me it is a kind of research that I am good at. I can make a connection between ideas A and B via C and judge its significance. That is my one talent, I believe. Unfortunately, no-one is willing to pay me to do that kind of research — and I am far less interested in making use of the results myself (ie I can't be bothered to write articles and books). It's the failure of my life that I've never found a place to do what I am good at.

It's odd, having said that, that the emphasis in employment these days seems to be on multi-tasking. Perhaps free-lancers, with one task, operating in a kind of skills-exchange could produce better work?

I wish I had a little team of people...

I would offer my services (I am a 'pro' after all), but I don't know the languages you're using and can't be arsed learning them at the moment (no disrespect intended, I've just got other 'fish to fry').

If it's any use at all, secret to writing 'good' code can be summed up quite simply (imho):

  1. Break the solution down into a group of simple primitives / sub-routines (call them what you want) that just do one thing, and get executed by more complex / generic routines that do things like the data transformations required to 'feed' the primitives.

  2. Error trap, error trap, error trap! Anticipate where things can get screwed up, build an appropriate 'trap' and report back with something meaningful. Don't forget an 'all purpose' trap to catch things you didn't anticipate!

And that's it really.

In my next lesson, grandma', I'll teach you how to suck an egg. :biggrin:

Imagine what we could do...

You mean build things like Linux, Video Lan, etc?

It must be nice to know what you are good at in life. Here am I, mutter mumble years old, and I still don't really have the faintest idea what I am really good at or what I want to be when I grow up.

You said: "I wish I had a little team of people who I could work with on stuff like this"

Are your projects open source ?

-ZaidaZadkiel

gravatar

An anonymous coward

It can be fun working in a team, and it can also be a major source of frustration.

If you're heading up the team, and it's your "vision" they're implementing: it's a really great feeling when it all comes together.

If you're on a team where everyone is pulling in a slightly different direction, it can be quite frustrating. Nothing (much) gets accomplished, and the team members all quit, accusing each other not playing the same game. (To be simplistic about it.)

The difficulty with something like open source is that the volunteers have to agree on the vision thing. And the role of the project manager is so different to the similar corporate role as to be unrecognizable! "Project Champion" is a more accurate description. The PC manages the to-do list, and acts as facilitator for the many conversations that happen around major ideas.

Torvald's greatest accomplishment wasn't his writing of Linux: it was how he managed to get so many people pulling in the same direction. The man is an amazing, and very accomplished, manager. (It helps that his technical and interpersonal skills are of a quality that he garners much respect from those who wouldn't give the time of day to mere mortals.) Quite a few other people have written operating systems that could be serious competition for Linux. They won't be, because Torvald's efforts and skills ensured the success of his project.

(Linux is an excellent OS, but I still use Mac OS X!)

I've always found that getting paid for doing something I'm good at is more a matter of research and persuasion. Someone, somewhere, has a requirement for many of the skills "we" possess. It's never a perfect match, and it's always got a frustration or two. But when we get that ideal job, it's quite neat. Whenever I bid on a job, I have to persuade the (potential) client that I can do what they want, even exceed their expectation. (eg I'll put the plants they've purchased into the planters, not just make and install the planters.) But first I have to find the potential client: they don't always come looking for me. (It's nice when they do, though!) And then I have to persuade them to "talk" to me. It's an uphill battle, but I enjoy it. :smile:

Carolyn Ann

Alli' Cat' is essentially right in her analysis of good programming techniques. But I think part of the problem isthe one I used to face in that there is no defined requirement.

Get the requirement right and the solution is a lot easier to arrive at. Sorry, got my systems analysis hat on now, but it used to amaze me how often we would meet with end-clients who would open the gambit with "we need a database to do xyz" instead of actually looking at what the problem was first, (and thereby finding out that a database may no be the best (or cheapest) solution).

I suspect you have your own requirements for the Stuff you do. To make it more general (and flexible) you need to start "what-iffing"?

To be perfectly honest, I don't really think there's anything wrong with my approach to coding. I find little problems while I'm trying to do something, and I make a small program that fits the bill. What I find frustrating is that those things never progress from the 'rapid prototype' stage of development.

Partly Mostly because I run out of steam, get a little bored, and move on to something else.

Kittens Better Than Second Life

taglink secondlife kittens

"Would a Man of Business be more ashamed to associate his product with ranting criminal pornographers, or a fluffy bundle of inherent goodness?" — as a lover of both, I'm torn

...get a little bored...

Well that's understandable — who wants to do a job twice? One of the reasons I try to make things 'bulletproof' is that once I've finished, I never want to see them again. Luckily, I've seldom been afforded the luxury of a prototyping phase :smile: .

Sticktoitness... Difficult to achieve when the motivation isn't there.

May I be so bold as to make a suggestion? (Well, it's more of a plan, and yours for the taking, changing or dicarding as you see fit!)

  • Develop an area of this blog, or some other venue where you can list your various bits of code

    (Exact format, etc is whatever makes sense to you)

  • Pop all those extraneous bits in there, or if they're housed on some open-source repository, provide the links

  • Explanations of what each bit does, and the various features and problems (again, in a format that makes sense to you. I will suggest that something more than the typical "this does this" sentence that is all too common with open-source)

  • A form where suggestions can be made about changes, which you can incorporate (or not). Set out the terms of the change conditions: you're credited with the change, etc. Maybe a small blog-ish like thing (or a mix of twitter and blogger?)

And that's it! A change log for each bit of code might be nice, but starting to get into the "featuritis" zone.

I've not seen anything like this, although I'm sure some enterprising soul has come up with the same idea. But it might help you out of your quandary, Siobhan.

As I say, just an idea for you to think about. :smile:

Carolyn Ann