Colossal Ego vs Self-Awareness

If there is one sure thing in the world of development, it is that Ego’s exist. They are there because what we do is so often in the "magic" realm. This is a perception from society, that whether right or wrong, exists. It doesn’t matter that a Farmer battling 12 years of drought who manages to get through to the next harvest is just as miraculous as coding the engine for Unreal Tournament.

We are seen as nerds. "Supa" nerds if you will.

And for me, that’s okay. I’m kind of a pseudo-nerd anyway.

Who are we? What do we wish to accomplish? How much bragging can we do? How much competiton should there be between programmers?

It all begins and ends with our own self.

Instead of babbling some more, I’ll get straight to the point.

We all know someone who thinks they are pretty awesome at what they do. We all know someone who thinks they will always be more right than us in any particular situation. We know that we ourselves can be this person.

And truthfully, we know that most of that crap is just being insecure. Security of Self leads to a far better understanding of our work. We can get on with learning without being hampered by petty fights and jealousy.

Sure, it’s gonna happen. And sure, competition is an awesome tool. But most of the time I never see healthy competition, I see insecurity rearing it’s head, creating wierd social situations and complex mind-warfare. Why is this? Because of half a hundred reasons I expect, some of them from my own personal insecurity experiences.

But it’s not the why here that matters. It’s how we react.

Back to the main point. Having an ego is fine and dandy. Never being able to be told you’re wrong, or admitting you’re wrong, or turning around and changing what you’re done … that’s where the stick gets stuck. You become a far better programmer, designer, developer if you are willing to learn, to admit you need to learn, to seek out better ways of doing things.

For me, after the shock of seeing that i was, in fact, wrong :), i never really think of it so much as being told i was wrong, as that there is a better way to do it. And that’s what I want. I don’t care that what I did before was crap, i know it was. I look back on old code all the time and curl up in the foetal position.

To realise the vision of Dev Dawn, some of these concepts need to be laid out in plain sight. A place of Ideas is only going to break down if we can never learn new things, or know we can improve.

So there’s another of my rambling 2.3 cent articles. It’s left-field, coming at some things that we talk about over coffee.

Single-Minded System

There’s some cool news on Slashdot this morning (my morning). I’m not sure why exactly it’s cool, but it’s new, and a different direction.

Microsoft is creating Singularity, and new OS. Dark Side Programming has an article on it, and comes up with this:

Strong concept, I would like to see it in action to form a better opinion. It appears to me that performance could suffer, but perhaps the goal of a dependable operating system is more important to Microsoft.

I’m not sure of exactly everything this will entail … but it’s a good move from Microsoft. They are starting to generate movement. Momentum, which they have been lacking for a while. So for them, it’s good. For us? Not sure. I’d say in five years I’ll still be coding away on some kind of windows platform. Probably the new XPP (it’s got one more P … like an extra plus … it must be better).

The Battle Lines Are Being Drawn

So. Saw this article today, and was excited about the future. Looks like MS is taking up the baton of New&Cool and is trying not to miss the boat. Specifically the AllThingsGoogle boat I think.

It should be fun to see what happens in the next year. Whether MS will come good. I guess there’s a bit of potential. Imagine if they ran Office Online or something. Then truly, we would find out about trust. Would I trust MS to put all my documents online, stored on their servers. Probably not in a million years … but then, maybe with a slick advertising campaign and some nice … not a chance.

However, it is conceivable that they won’t go for the little guy, but instead, market towards businesses. If they were to provide a stand-alone solution, now there’s something that might actually go forward. Imagine being able to set up Office on your network, if it were a web-based app, and have it run as a webservice from inside your network. That is better. Much more trust, because much less trust is needed in the outside. The info is stored on your own servers, but you are using their product.

And this is a different direction to Google. They are getting information. But MS don’t have to get information. The better way would be to undermine Google by offering services that seem like they aren’t taking your information. Instead, they’re giving you web services/desktop-like services at a reasonable price (maybe free), and using the advertising thing. Also, they’re not storing your info, and that could be used very wisely in a marketing campaign. It’s like the desktop, only web.

So that’s my 2.1 cents on the situation. I’d like to see them provide their products as web services, with local data storage, and use other methods of money raising. Of which they could create a new one or two.

I guess though, I’m just thinking, that they could also take the route of offering much cheaper rates if using their services and storing on their servers, as opposed to storing on your own servers. This is a typical strategy, and I’d like to see them take a different approach. Flip it round. Make it more viable to setup your own servers, rather than using theirs. This would go a long way in changing the general perception of MS. In fact, to quote a famous add with some shampoo, it won’t happen overnight, but it will happen.

It’s like the Desktop, only Web.

I like that. It’s got a ring to it, in my sleep-deprived brain at least.

‘Nuff said for now.

The Art of (War) .. Planning

I continue to be reminded of the importance of the Plan.

When working in a Project, developing a System, or part thereof, the first and best way to begin is planning. Or if you have jumped in half-way … same thing. The Plan man.

What does this mean? It boils down to, I think, a few important details.

  1. Clarity of Thought

    Whatever means you take (notepad, whiteboard, project management software, massive cranial capacity), it’s vital to gain some measure of clarity when working on a Project. No matter how small or large.

    This means knowing where you are going. Not just the big picture, but smaller pictures, goals, deadlines etc. It also means you know where you have been. Review the past week. Know what you have gotten done, and what you have not. It’s important not to cheat yourself. It’s not going to help your own development as a developer (ha) if you aren’t honest. Know that you have missed a deadline, and rectify it.

    So I guess that’s a second point.

  2. Be Honest and Fix The Wrongs

    If you believe you’re the best programmer in the world, then i guess there’s nothing left to learn. But I know guys who believe they are great programmers (and they are in truth) but who also know that they will continue to learn until they pass out of this mortal coil. This is good. Better than good. It’s neccessary. We have to be willing to accept that sometimes we will miss our goal because we have stuffed up, or because of events out of our control.

    The next step is to fix it. Plan baby plan.

  3. Review and … Plan

    You can definately go overboard (never) with this. Balancing the planning and reviewing with the work itself is a skill. But if you’re still in the project, and you have a couple of hours without any pressure, or it’s the start/end of the week … review. Plan. See where you have gone, and where you want to be this time next week/month/year.

  4. Old & New Functionality

    This is where I was getting to with the other blather. I constantly find myself discovering old functionality that, basically, sucks. I created it with very little foresight. Almost no planning, just reacting to the client’s needs. There’s a billion words just in that topic … but anyway. What do you do? It’s the hard way. Either rip it out and create anew, or clean it up. Both a viable depending on the situation. One good aspect of cleaning it up, is that you get to make old code new … better and more sparkly :). But however it’s done … Plan. Sometimes you can just do it, code it straight up, because you have clarity of thought. "The problem is that the totalling is wrong" … "I went in and found a minus instead of a plus" …

    So what about brand new functionality. Again, the Plan man. Throwing in functionality is the bane of my life, because i’ve done it so much. And I continue to … but am hopefully getting better at planning a little beforehand. What will this affect (if you have an entity/module/thread diagram, you can hopefully find these things out a lot quicker), and what effects will be had? What’s the best way to get this functionality done … sometimes the fastest is best, sometimes the other.

I’ve babbled on … being the second article, I probably haven’t progressed with much of the above mentioned clarity … but it’s another step towards TOTAL WORLD DOMINATION … i mean … towards a great little library.

Purpose Baby, Purpose

You should be able to see the beginnings of a document library here on Dev Dawn. I’ve put up the first Article, Clarion’s Purpose Today. It’s not much, but it’s a start. And we gotta start somewhere.

In other ramblings, I got excited about October’s hits on the site. Now, bear in mind that I’m a newbie into this world, so these numbers will probably cause you to giggle and point and laugh … but anyway. They jumped from 300 in September (which would probably cover just the devs here) to more than 3000 for October. That’s pretty cool.

I’m excited. Not sure whether they are spybots, or trawlers, or some new-fangled breed of cyber-hound dogs tracking down unsuspecting bloggers … but it’s nice. Nice.

If you are a reader/visitor/regular, a hearty shout-out thanks to ya! Much appreciated. I promise to never put Google Adwords on here, well … at least until the daily hits break a thousand. That would be pretty awesome in my newb-log experience.

‘Nuff said.

Clarion’s Purpose Today

As the first article for this site, I thought what better subject than the beginning. In the world of today, with all it’s newfound enthusiasm for desktop-like applications on the web, what purpose does Clarion have? The gap between desktop and web interfaces is closing, and although i’m sure there are inherant differences that mean they will never completely overlap, I’m sure for the imaginative developer those differences wouldn’t mean squat.

Clarion. It’s an awesome tool. It takes away the fuss of creating base tools in C++ (and other languages) to do the groundwork. Clarion allows you to concentrate on implementing functionality, business rules, data modelling, etc.

This is what Clarion does best. You can create an app in a few minutes. A program that at it’s core collates data.

So how is this different from knocking something up in ajax/php/…? on the web, or even using the big-gun of 4GL programming, Delphi?

The web app will always have an inherent issue with the user. Your data is being stored somewhere else other than the computer you are using.

This is a very important understanding to grasp as the developer. This doesn’t stop web development. I mean, look at salesforce.com. It’s that I think we need to be able to develop in both places, taking advantage of the strengths of both approaches.

Security. That large somewhat nebulous concept is the big difference I can see between desktop and web. Where is your data stored? On your computer, or on someone elses? How many people can get access to your data?

I guess in the age of broadband, that difference might not be big. In fact, the more I think about it, the differences are mostly perceived. The user thinks, "Because the data is on my computer, it’s safer." With the amount of press worms and hackers get these days, the general public’s perception is most definately changing.

So if you could take that perception, and give them trust in your product, no matter what it was, you would have something. I think that’s what Google is doing. They have established trust with their clientelle. Which is everyone.

Where is this going? I’m not sure. I started out with the aim to talk about why you would use Clarion in today’s world.

I guess my mind is leading towards this :: that you might not. Depending on the situation, and what were the best tools to use. What the product was. What kind of team you have. The needs of the user, and their understanding. Lots of stuff that goes into the planning of a project.

Clarion does some things very very well. It is second to none, my opinion there, with respect to building a database application. With third-party templates and some of the icon libraries floating around, you can create an awesome, awesome looking app. And with some smart database design, intuitive interface, and exciting functionality, developing in Clarion is a blast.

So I guess, this is more of a global article. My ramblings on choosing Clarion as a development tool. And there aren’t many particularly helpful insights. But it’s an article.