Saturday, 28 April 2007

Dont make me think

Interaction design is such an important craft when designing a professional looking website. The interaction designer not only has to get his/her head around the concepts around the product but also designing a look and feel that would help potential customers to use it efficiently and also would want to come back and use it again.

This is much harder that some people tend to think. It usually takes only a few seconds to decide whether you like a site/UI or not. What are the factors?


Look (colors, fonts, size,
and layout) and Feel (does it do what I expect it to do)

The Look and Feel should be covered by the interaction/graphical designer.

Speed (it should load fast, its that simple)

Ajax has helped tremendously to speed up various aspects of a web site. There is usually no need to refresh the whole page as we only work with smaller areas of a page such as:
  • updating a table and showing a summary
  • loading and hiding/showing an article
  • store a poll result and then displaying a result in a tooltip window
There is surprisingly little that is needed to add Ajax to a site:
  • Knowledge of some kind of Ajax framework (there are quite a few out there)
or
  • Javascript and the IFrame tag (if you want to do it yourself)
I would recommend to use an already existing Ajax framework as it usually handles browser incompatibility issues pretty nicely.

A comparison of some of the good ones out there can be found here - http://www.devx.com/AJAXRoundup/Article/33209

Sunday, 4 March 2007

Profound

That which we persist in doing becomes easier - not that the nature of the task has changed, but our ability to do has increased!

Saturday, 3 March 2007

Thoughtful Statements

I love this one from my very good friend Frederico:

Sniff, sniff...
what is that smell?


The smell of success :)

New Milestone Release

Aaaahhh, its a nice feeling directly after a milestone release. A milestone is like a heartbeat. You plan, live and evolve around it. We work so hard preparing for the release, the stress, the little features we agilitly include or exclude... very exciting to slowly see the whole application taking shape :)

This project has been a great success I think where I have been able to fully experiment with my ideas and principles around agile software development. I will write some more about my discoveries in some later posts but to summarize:
  • Deciding what to do and how to capture requirements
    • It all starts with an idea, you need to break it down, nothing is cast in stone
    • Prototype early and think RAD
  • Putting together a team
    • You must pick skilled people that can work well together
    • Pick people that you like and can trust!
    • Communication is key (natural, problem domain and pattern languages)
    • No synergy is like swimming in Tar!
    • There can be no substitute for skill and experience!
  • Drawing up the initial architecture
    • There cannot be a democracy here, to many architects is very destructive
    • The principle architecture can be found in numerous existing frameworks
    • Put metadata in the code and abstraction in the configuration
    • Be pragmatic
  • The software development process
    • Iterative and incremental
    • Usecases, stories or features? Doesn't matter, as long as you can break it down into chunks that can be understood, estimated and prioritized.
  • Planning a release
    • Never move a deadline, de-scope if you need to!
    • Announce the features to be demonstrated early. This makes the target clear!
    • Prioritize, not everything is important!
  • Developing the code
    • Coding standards are very important!
    • Don't let just anyone touch the code
    • Test driven development is key
    • Refactor the code often, strive for simplify and elegance
    • Reuse good ideas, best practises and principles, no need to copy&paste code then!
    • The code is the documentation and the unitests are the requirements
    • Document the intent, the idea or principle behind the code
  • Tools for collaboration and issue tracking
    • Issue trackers, wikis are key
    • Use whiteboards often
    • Don't send emails if you can walk up and talk directly with a team member
    • Make sure information is shared
  • How to demonstrate your software
    • At the end of a milestone, demo the initially announced features
    • Be swift, make sure every feature is demonstrated properly
    • Take time to write down all comments from stakeholders
    • Let members in the team take turns in demonstrating new features as this ensures that knowledge is shared evenly
  • In general
    • Be eager to learn something new every day
    • Be helpful and humble but make no mistake, be proud of your craft and skills!
    • Don't complain, do something about it, be pragmatic
    • If you break the build, you fix it!
    • Don't think X hours a week, think Y issues done/left.
    • Measure the velocity by ensuring that most issues are broken down evenly
On Monday it all starts again with release planning. We are now one milestone from the first candidate release. I don't expect us to release more than 2 release candidates at most.

Being so close to a release candidate I am now breaking down the milestone into smaller weekly point releases, one every Friday. The reason for this is so that we can test the codebase more frequently (as we don't have a testing team available) and also to allow for faster feedback from the stakeholders and still allow for a practical development cycle length.

Once all this is done, we will all chill out on a beach in Thailand drinking a MaiTai feeling absolutely in peace with the world...

Why?

Because we deserve it :)

Tuesday, 27 February 2007

Observations

  1. It gets lonely on the top. If you don't have any good connections with the upper level, you are lonely as hell.
  2. You can, but its intrinsically quite difficult to be friends with your stall. The respect dictated by the employer/employee relationship somehow prevents it from happening...
  3. apply 2 to 1 and there you go

Sunday, 25 February 2007

7 Habits of Highly efficient People

A great statement here that I like:

"It is motivation that gets you started, habit is what keeps you going!"

So how can we define habits?




As we grow older and wiser, we also change our outlook in terms of how we perceive our self's and others in terms of dependability.

  • Dependence - the paradigm of you. You take care of me, I blame you...
  • Independence - the paradigm of I. I can do it, I am responsible...
  • Interdependence - the paradigm of we. Together we will succeed...

In order to become more effective we need to balance the production of desired results and our capability of the same.

In effect its all about balance short term gains with long term goals.

We are responsible for our own effectiveness, for our own happiness and ultimately for most of our circumstances...

Pretty much, you are the results of your own actions :)


The 7 habits defined
  • Proactivity
  • Begin with the end in mind
  • First thing first
  • Think Win Win
  • Seek first to understand, then to be understood
  • Synergize
  • Sharpen the saw- become better, keener and more efficient

Have a nice day :)

Saturday, 24 February 2007

Pursue your dreams baby...

"The significant problems we face cannot be solved at the same level of thinking we were at when we created them." - Albert Einstein

I have been thinking lately about what drives us humans to pursue things. We all have dreams, issues or tasks that we very often don't do anything about even though we know we should. Its almost like the threshold is to high, the risk to great or our priorities are all screwed up.

Its always there, the feeling that something should really be done about this, but not now...

"Lets wait, It can always be done tomorrow"

We postpone this thing we want/need/must do in order to preserve our sanity until its unbearable. Why? I mean how often really do we suffer from this limited form of cognitive dissonance?

Its stupid!!!