Dual-Wielding Development

Now, I don’t know about you, but ever since I read R.A.Salvatore’s first Drizzt books (The Crystal Shard, Streams of Silver, The Halfling’s Gem), Dual-wielding weapons is the first thing I take in rpgs … it’s what I dream about as a legendary warrior, it’s what I practice with broomsticks when nobody is watching.

But anyway. Bill’s experiences of late have unearthed two facets of Dual-Wielding in Development.

  1. Support

    There is the helpdesk-y, support calls, functionality. A system where all calls are logged, client’s ring and have someone walk them through working parts of the program, fixing problems over an instant messenger.

    This is the part of support that everyone knows about. Rightly so. It’s 50%. Maybe more.

    The other, hidden, rarely spoke of side, is that of the Account Manager. Nothing to do with Accounting, but everything to do with the Clients. The Account Manager is the Client’s direct link into the matrix. They are there to chat, to argue with, to give feedback, to be supportive. The Account Manager is the public face to the System.

    A very important role. There isn’t any way of getting around it.

    The problem is, I would think, that most of the time this role is handled by either the Head of Support, or the Developer themselves, or even the Manager of the Company.

    Once you get past 1 client, you really need to have an Account Manager. Or at least be able to compartmentalise your brain into different jobs.

  2. Updates

    This is probably more than a "Dual", but I really liked the intro.

    This is functionality that occurs once the software is out there, and you have a bunch of different types of Clients. Actually, it pretty much would be limited to Dual. But … anyway.

    You have client’s who only want the Point Releases, stable. Then there are client’s that are willing to beta releases, test them, get the new functionality sooner.

    So how to solve this? Have dual Install Streams. Or Update Streams. The nomenclature doesn’t matter here, it’s the idea. And it’s not hard to implement, just need to have the design in place. To be able to control what the client downloads, how their "client" talks to the "server", what rules are in place for these interactions.

So there is my latest little brick in the pavement that makes up my journey along Development Highway. There is a lot more than could be said about these elements. Maybe later, or maybe someone else.

Dual-wielding. It’s the bomb.

Standing At The Lights

Waiting for the little green man. Waiting for the cars to clear.

When you stand at the lights, what do you wait for? The little green man, or the cars to clear?

There’s a busy intersection near my work. It is either choc-a-block full of cars, or empty. So that you can generally walk across before the little man goes green. So that means watching the cars.

The other day I was at the lights, and this thought ocurred to me.

In Development, we are either waiting for the little green man, or we are watching the cars.

What the? Has insanity finally broken Stu’s brain apart? What is this?

It’s only the beginning of a thought at the moment, but I think it has merit.

There are set standards and rules in Development. We can follow them, and get by very well. It’s safe.

And you can think around outside and watch what is happening in the world itself, see how things are reacting within the environment that is set, and react to those events. You are not waiting to see the little green man, you are waiting until the road is clear of cars.

Now, I’m not going to take this analogy any further, because it falls apart pretty easily once you push it along. But it doesn’t have to go any further. It’s this little thought that sparks more.

So, is it the little green man? Or is it the clearing of cars?

I want to think around what is set and standard, and push within the world of development we live in. Push further. Look around at the reality (cars on the street) rather than the standards (red/green men on poles).

Is This The Next Step?

Where Computer Interfaces Are Going : 3D Beyond Games is a very cool little article about the future of Development. It’s been Slashdotted.

I’m reading this, and I’m thinking … this is pretty cool. Then the first reality check hits home. When would this be useful? Using 3d within a System. You’d have bits in 2d and 3d. Some would combine I’m sure.

But are we talking about Development or the end product? Maybe both. Imagine Developing … you write code in 2d, but then view the procedural structure in 3d. You’d move around the database in 3d, organising tables etc.

Then you have the actual System.

The problem with developing Systems in 3d is, noone really knows how it would work. Has anyone released an Accounting System that successfully amalgamates 2d and 3d interfaces? It hasn’t been done. It’s very, very early days.

But that isn’t going to stop me thinking about this. Maybe even experimenting. I’ve done some hard labour with DirectX … there’s plenty of open-source engines to use.

And then, at the end of the article, I find out that Tristan is working on something called … tactile 3D. It’s a product. From the site … "Software to browse, explore, and organise your file-system in 3D". So it has begun.

It’s going to be a big hurdle to get over. The actual mindset of work vs play. The 3D engine is so caught up in Gaming, and transferring this technology across into the Business world will take something special. But I think it’s going to happen, it should happen.

Two Different Visions

Oh, East is East, and West is West, and never the twain shall meet, Till Earth and Sky stand presently at God’s great Judgment Seat; But there is neither East nor West, Border, nor Breed, nor Birth, When two strong men stand face to face, tho’ they come from the ends of the earth!

Thus begins Rudyard Kipling’s "The Ballad of East and West".

Recently, I have seen first hand what happens when you have two purposes trying to co-exist under the one banner.

If you’re a single developer, moving your own projects from Go to Woe … then perhaps Purpose Clarity is more appropriate. I know this for fact, from my own experience. It’s about a congealed mass of muddy half-thoughts that might have some direction. It’s about clearing those away, forging them into steel.

However, when you work as a team … then Rudyard comes into play.

I was at a presentation the other day, where two visions were shared. How did I know? I’m not sure … but I knew it as soon as the second was spoken. I’m not sure the person speaking understood that they were presenting a different vision from the first. A lot of people in the room might not have understood either. But it was there, hanging in the air.

And this then turns my mind to how people approach the nebulous concept that is "work". In fact, more than that. How people approach problem-solving in general. In life itself. And it’s more than problem-solving. It involves the Ego/Self-Awareness talked about previously. It involves the above ability to approach problems. It involves management. Leadership. Submission. Purpose.

Purpose.

The Candidate

Most probably will come across as a pleasant individual, capable, in command. Doesn’t think a great deal about what is being said by others, because what’s important is their own purpose. When they do listen, it’s because there’s a definite move in a direction opposed to their vision.

The problem is that often The Candidate’s vision/purpose is muddy and confused. They have ideas, but they are misshapen and unformed.

The bigger problem is when The Candidate is at the top of the Management heap. This tends to obscure things further, given that they would take a fair amount of offence to being told that they were wrong.

By the way, just as an aside, we are assuming in this discussion that Purpose No. 1 is the correct one, as in highschool physics where you assume that friction doesn’t exist when working out momentum and other lovely measurements. So for this experiment, it’s absolute.

So you have the Candidate. I’m not sure how you would approach this. There would be a number of ways.

  1. You could pull them into line straight away.
  2. You could tolerate them (dependant on their Management Level).
  3. You could get rid of them.
  4. You could promote them.

I’ve got three young kids, and I can tell you now that Number 1 is usually the best course of action, especially because as the Purpose/Vision of how we are going to raise our kids is a lot clearer in my mind than in my kids. They might want to boss their sibling around, and they do, but they know that it’s not in line with Dad and Mum’s purpose for them. How? Mainly through discipline. I’m not sure how much this analogy can be brought across … it’s almost not an analogy but a case-study. Same objects (People), same situation (Power Struggles/ Diverse Purposes).

Let me just say. I’ve been the Candidate. And it’s far better to stop and take a look. Break open the vial of Honesty Potion and swig it down. Start listening to what other people say, especially when you don’t understand. Make yourself understand, and think about where they are coming from. Think through their arguments. You still might not agree, but that’s okay. Becuase now, as they say, you understand your enemy. Although enemy might be a bit strong. Same idea. Understand what you don’t agree with, because then your own arguments come from a far stronger grounding. You will be validated, because you’re not stuttering over why you don’t agree.

I’ve rambled on enough for the moment. Sleep is calling.

Suffice to say, this is another step towards better development. Make sure you have a single purpose. Because if it gets before the Judgement Seat of the Almighty, then it’s far too late. Read up (plenty of articles, google around) on failed Development. There’s plenty of cases. Most of it happened, or began with, opposing purposes. Team ‘A’ and Team ‘1’ … that kind of thing.

‘Nuff Said.

Wishing For More Wishes

There’s that line from Aladdin, where Genie Williams says, "Three wishes… and X, nay on wishing for more wishes! That’s it! Three! Uno, dos, tres. No substitutions, exchanges or refunds!". Thanks Wiki.

I was reminded of the construct used in stories across all the medias we have available, when watching Fantastic Four, which I thought was a pretty cool movie, where there is some kind of object that breaks the rules of the universe.

In Fantastic Four, it was really obvious when Ben decided to become the Thing again. So he jumped back into the device Reed had made to simulate the bombarding radiation from space.

I enjoyed the movie, espeically because I can probably watch it soon with my kids, sooner than spidey or x-men. It was simple fun.

Wishing for more wishes breaks things. It was rife when playing Diablo 1 on battle.net … with the massive amount of hacking that went on. You introduce a weapon that is so ridiculously powerful that everything else becomes mundane.

I remember doing it with Baldur’s Gate. Getting a character hacker, and buffing up my chars.

Books, movies, games, comics, cartoons, other tv shows … it’s something that every story maker, particularly the fantastical mind, would have to deal with.

The classic example is Supes. Where would the world of Superman be without Kryptonite? It’s the one foil to his becoming a "Wishing for more Wishes" element.

So then this turned my mind to development. Are there any parallels?

I think so.

Imagine a technology is given a new face, a phrase is created, and suddenly, it’s the buzzword of the year. Hmmmm, perhaps … wait on …

Ajax has been foretold by some to be a Wishing for more Wishes construct. So has Ruby on Rails. Microsoft would like us to believe that .Net is going to take care of everything for us.

I don’t like the idea of having a product that does everything, AND gives me +50 to my damage magical creatures roll.

What I do like, is the idea that there will always be a number of different paths to a solution, and that getting the best solution will sometimes require utilising more than one tool. I don’t want a sword that doesn’t even have to be swung to waste the enemy. I want a story that is complete and uses it’s magic with subtlety.

Where am I heading? Perhaps we overpromise on our products … a side-effect of this thought process is that I can see a little more clearly that we have to be careful to maintain the focus on the core functionality.

But more than this … I never really want something that will do away with what I bring to the table. If it’s my sword skill and battle wits that bring me glory, then I never want a sword that will kill on sight.

I know, bizaro thoughts. But I’m clearing out what I started with, and stumbling towards some conscious single thought.

Don’t give away what makes development so much fun … your own creative ability. Your own sense of purpose and direction. Your coding skills. These things should be part of development for as long as we continue. There will be tools that ease the bad stuff, that’s what Clarion does so well … but they should never take over the core of development. The mind, the excitement, the fervour. Determination. Etc.

Not sure if I started or ended with a clear point … but there it is.

Burnout, Without The Cars

It’s been long nights, sometimes with nary an hour of sleep, and you are bone weary.

You go through periods where some pizza and caffiene trick your brain into thinking you can just motor along like a zombie, because at least you are getting something done.

Others see the degradation in your eyes, the code bits falling around you like that green-text stuff on the Matrix.

Through your sleep haze you can make out logical decisions, but if anyone asks you for an explanation, or indeed to show them the simplest of routines, your weakness is exposed for all to see.

There’s nothing like a bit of burnout to show us our humanity.

So how do we combat this vicious beast? You know it’s the enemy to true and pure development :). Sometimes you have to work with your enemy, there are times for long hours and longer coding sessions. But we are frail, creatures of dust. So we need to make sure that our burnout sessions are limited.

I have recently been enlightened as to the nature of burnout, and shown what is, for me, the solution. I would think this holds true for most people, in whatever field.

Rest. Simple. No brain-strain. Take the mind, put it in a box, and spend time doing things you don’t normally do. Maybe go out for a day playing sport. Perhaps take the family to the beach. Maybe, if the flu is involved spend the day in bed with a book and some moofies.

Whatever it is, find that place. That Happy Place.

This has been Stu, with his three cents on burnout.

p.s.

As I was digging, this article on Burnout popped up. It’s got more detail and focus than mine. A good read.

I Wish For Time

The problem with being able to dream up lots of different ideas is that you have to manage them. Especially once you get them out, and other people depend on them. Because then it’s a lot harder to "shelve" a project, once it’s reached an audience. A client audience.

One of the visions of Dev Dawn was to enable new projects to be developed. A platform. This is still in the early stages, but as I continue to experience the realities of software development, both at my Job, and with my own Software, it becomes clearer to me that I need to note down the learning/experiences that occurs, so that we might be able to collate these into some kind of knowledge-base. Of course, I would think this is standard practice within a programming team, but it’s all new for me.

Being a new-Be to this world, I’m discovering elements to blogging that at first weren’t apparent. This is all going into a series of articles on my experiences with blogging. But anyway, to be successful (not necessarily numbers-wise, but truly vision successful) you need to have clarity of your purpose. Exactly what do you want to do with the blog. It doesn’t matter that you don’t put up content like all the other blogs you read … what matters is that you stay true to your vision (which can change) and be consistent in that vein.

There’s a lot more. It’s a complex field … one that I’m learning new things about all the time. And it’s changing too, which is awesome.

Thanks