

Colleague at work found this great list of must-have web controls.
http://www.uxbooth.com/blog/essential-controls-for-web-applications

HOW TO RECRUIT THE RIGHT PERSON FOR THE JOB?
Put about 100 bricks in some Particular order in a closed Room with an Open window.
Then send 2 or 3 candidates in
The room and close the door.
Leave them alone and come back
After 6 hours and then analyze
The situation.
If they are counting the
Bricks.
Put them in the accounts
Department.
If they are recounting them..
Put them in auditing ..
If they have messed up the
Whole place with the bricks.
Put them in engineering.
If they are arranging the
Bricks in some strange order.
Put them in planning.
If they are throwing the
Bricks at each other.
Put them in operations .
If they are sleeping..
Put them in security.
If they have broken the bricks
Into pieces.
Put them in information
Technology.
If they are sitting idle.
Put them in human resources.
If they say they have tried
Different combinations, yet
Not a brick has
Been moved. Put them in sales..
If they have already left for
The day.
Put them in marketing…
If they are staring out of the
Window.
Put them on strategic
Planning..
And then last but not least.
If they are talking to each
Other and not a single brick
Has been
Moved.
Congratulate them and put them
In Top management

I saw a tweet recently that read ‘Use of “general” and “flexible” are design meeting smells’.
The truth is, words like “generic”, “general”, and “flexible” are pretty loaded words. Like the words “architect”, and “agile”, these words have different meaning to different people and unfortunately are very often misused.
The word generic is also a very absolute term. So absolute, that it actually never makes sense to use in terms of software, without a relative operator like ‘more’ or ‘less’ to describe the scale of flexibility. To say that a solution is generic is a fallacy because there is no way to assert whether a solution is generic or not. Generic implies a maximum level of abstraction. In absolute terms, this is not achievable. Does the solution cut my grass? Surely it’s not generic then.
I think in many cases the words are used flippantly in work cultures that don’t encourage innovation and evolutionary design. In cultures where software is largely defined up front and defined to satisfy requirements that are not well known or in some cases not known at all, design meetings will be driven by excessive, risk-adverse, use of this language. In work-cultures where software is not largely defined up front, or in worse cases not defined up front at all, the same thing can happen for different reasons. In this case, developers feel like they never have an opportunity to develop great solutions because they are forever putting out fires due to lack of planning. For them, use of these words is almost like a defense mechanism, and they come out of their mouth before they’ve even thought about it. They tend to overcompensate in an effort to manage delivery expectations.
I believe both cases are driven by good intentions. As developers, we like to abstract. Doing so, can remove complexity, and in many cases add heaps of value. In some cases though, it can work against us. If the solution does cut my grass then it’s possible that it isn’t doing what is supposed to do very well. The problem is when we start to look at abstraction as a silver bullet. We must remember that like “architecture” and “agile”, abstraction is a tool. Not unlike the tools we build, it isn’t the only one in the toolbox.

Martin Fowler and Rebecca Parsons speak about the challenges of Enterprise Architecture in agile environments:
http://www.infoq.com/presentations/agilists-and-architects

http://www.codesqueeze.com/the-ultimate-top-25-chuck-norris-the-programmer-jokes/
“6. Chuck Norris doesn’t need garbage collection because he doesn’t call .Dispose(), he calls .DropKick().” … ROFL

Shaun MacRae