Do it fast or do it right?

You can choose to make something as fast as you can or you can choose to do it right. Virtue is knowing which one is called for when you develop software. Both have their merits and neither is inherently wrong. Sometimes fast is what makes you successful and sometimes you must do it right.

Lot of companies don’t have balance between fast and right. And scale is usually heavily tipped on the fast side…


On choosing to do it well

“If a man is called to be a street sweeper, he should sweep streets even as Michelangelo painted or Beethoven composed music or Shakespeare wrote poetry.  He should sweep streets so well that all the hosts of heaven and earth will pause to say, ‘Here lived a great street sweeper who did his job well.’” – Martin Luther King, Jr.

Because what other effort is worth our time here?


We just released DotNetBar for WPF 5.5 which includes all new Timeline view for calendar/schedule control. Timeline view is designed to display continuous schedule for one or multiple resources. You can optionally display condensed (bird-eye) view of the schedule below each timeline that can be used for easy schedule “surfing”.

Here is screen-shot of the Timeline view:

Time-slot duration in this view is fully customizable. In screen-shot above we used 30 minutes as single time-slot duration, but you can set it to any value you want, even whole day or couple of days. That way you can zoom in or out of the schedule view. This makes this view very useful for representing for example factory production schedule.

Another commonly asked for feature was hit-testing. In this release we include CalendarView.HitTest method that will give you plenty of information about the point inside of the calendar control.

If you have DotNetBar for WPF license you can download latest release on Customer Only web site. There is also full functional trial version available.

Tagged with:

It seems popular these days to say that we should be doing less. Producing products with less features and under-doing competition. The problem is, this sounds good but it does not work. I am not aware of any single company that did less and succeeded. They might say they are doing less, but if you watch what is being done, truth is everyone is adding more.

Take a look at what has been added to iPhone over last 3 years: Compass, video recording, whole application store, more memory, more processing power, more of everything. Not less. And just wait for next version. There will be even more added. I don’t think they would be investing all the resources into new functionality if that was not directly related to increased sales.

Is your car doing less than 10 years ago? Does VS.NET 2010 have less features than VS.NET 2008 and would you buy it if they actually removed what you use or kept everything the same? I don’t think so.

Any successful product to stay relevant to its users must add more, it must improve and evolve. It is what customers demand. In last 10 years we have not received a single request to remove features from our products, but we have received thousands of requests to add features to the product.

This is normal. There is nothing wrong with more. People find new uses and needs in the products they like. And if you don’t give it to them, they will go and get them somewhere else. Simple as that. You choose.

Some equate the less with easy to use, but that is not the case. Less may lead to easy to use, but feature rich product can be easy to use too. I have no doubt which one wins: feature rich easy to use product indeed.

So doing less as an idea sounds attractive. As marketing point it sounds good and it gets mind-share. But when you turn around and look at what’s actually being done, everyone is busy adding more.


So I was trying to remove an add-in from starting up with VS.NET but when I open the “Add-in Manager” dialog through Tools->Add-in Manager… menu, Startup check-box for that add-in is disabled so you cannot un-check it. You see something like this:

It turns out this is caused by the .addin files of respective add-ins being read-only. This happens on Vista and Windows 7 due to UAC since these files are in Program Files folder.

Fix is simple, run VS.NET as administrator so you can uncheck Startup box for add-ins in Add-in Manager. Right click the shortcut for VS.NET and choose “Run as administrator” and presto, all check-boxes are enabled now.

Tagged with:

We’ve been busy as bees lately and it is evident in this new release :-). Let’s start with the biggest addition which is Time-line view for Schedule/Calendar control.

Time-line is designed to display schedule of multiple-resources on single screen. It also provides condensed (bird-eye) view of the schedule and allows you to control time units so you can zoom in/out and display calendar for part of day or for whole year.

Here is screen-shot of the new time-line view:

Note that below the appointments for each resource you can display the condensed (bird-eye) schedule view. That condensed view may display year worth of schedule or whatever period you find appropriate, it is completely customizable. You can also click and drag the mouse over the condensed view to “surf” the schedule.

Here is screen-shot  of the schedule where time-line interval is set to 2 hours:

Changing time-line interval is useful if you need to display events on calendar that span half-day or more, for example factory production schedules etc.

Time-line view with condensed, bird-eye view is unique to our schedule control and you will not find it anywhere else.

We also improved Office 2010 styling for our Ribbon control. While style is not finalized yet and it will not be until Office 2010 goes into the RTM, we continue on polishing it. Included with latest release is Blue color scheme. Here is screen-shot of our RibbonPad sample running on Windows 7 with Glass effect enabled:

Here is same screen-shot without Glass enabled:

Final big addition in this release is to AdvTree control data-binding functionality. Using ParentFieldNames property you can specify the ID and parent ID field names in your bound data-source that will be used to create tree from flat table. This feature is an addition to our auto-grouping feature so you can choose what fits best your usage scenario.

There are over 45 new features and enhancements in this release so it is a big update that is 100% backwards compatible. You uninstall old version, install new one, recompile and you are ready to go. Simple like that.

If you already own DotNetBar head over to Customer Only web site and download latest release. If you do not own DotNetBar you must give it a try.

I want thank everyone that helped us shape this release (especially our new hire Brian) and wish all of you Happy New Year. Stay productive people!


Is there a success gene?

What is the most important trait for success? I think it is willpower. Yes, luck plays a role. Yes, talent plays a role to a degree. But unless you have willpower to slug through 10 years of intense work that is required to master a skill you will not make it. If you look at just about any major category of problems that people are faced with odds are pretty good that willpower is involved in some way. You might think that willpower is fixed asset, some of us have more of it and some of us less, but it is not.

Willpower is controlled by the prefrontal cortex part of brain located just behind the forehead. Prefrontal cortex is also responsible for focus, abstract thinking and short-term memory. I think it is reasonable to assume that due to genetics some people have better developed prefrontal cortex which makes it easier for them to exert willpower for longer periods of time, focus better and have better short-term memory. You could say that they are genetically pre-disposed for success.

Good news is that research indicates that willpower is a lot like muscle. You can develop it. It is also interesting that, if you exert it too much, like muscle trying to lift too much weight, it will fail. It shines new light on “pick your battles” saying doesn’t it? It also means that if you are not working at it, like muscles, your willpower will atrophy. So how do you go about increasing willpower?

Dr. Roy Baumeister who did research on willpower found in experiments that willpower improves across the board when we exercise it. He did experiment with group of students which were asked to improve their posture for two weeks. After that period these students showed marked improvement in measures of self-control when compared to a group that didn’t work on improving the posture.

In another words exercising self control in any area of your life will be reflected in improved willpower on unrelated tasks like business or programming. You start with small tasks like improving posture or even brushing teeth with opposite hand so you can build up your willpower for bigger tasks. But how does this work, is it really possible?

In early 1970s scientist discovered that brain changed its very structure with each different activity it performed, perfecting its circuits so it can better do the task at hand. This fundamental brain property was called neuroplasticity.

“Neurons that fire together wire together”. As you exercise your willpower you actually re-wire your brain. The neurons responsible for willpower develop stronger, “cleaner” more efficient connections and your willpower gets improved. But if you do not exercise it, the connections will weaken and your willpower will be reduced. Use it or lose it literally applies here. Dr. Michael Merzenich is neuroscientist that has done lot of research in area of neuroplasticity.

The key for this to work successfully is close attention to the task being done since that is the key for long-term plastic change. If you do the task automatically the improvements are made but are not long lasting. This is another very strong vote against multi-tasking. Divided attention doesn’t lead to lasting changes in your brain.

But if you have boring work that you dread doing, it will drain your willpower needed for important tasks. How do you address that?

Self-Determination Theory – SDT – indicates that willpower will be depleted less if we think that task we are working on is of our own choosing, i.e. decision to do it is made based on our own deeply held interests rather than decision dictated by other source, societal pressures or external control.

Based on my own experience, I found that you need to convince yourself into believing that tasks that are assigned to you are interesting or beneficial. I used this technique effectively in school to be able to learn dull, boring subjects easier. I would trick myself into believing that they are interesting by finding something in them that interests me or that I think will be useful to me in future. Otherwise I would have hell of time trying to learn anything that I do not find interesting.

Another important component that should not be forgotten is nutrition. In research Dr. Baumeister found that exercising self-control uses lot of energy and that blood glucose levels are connected with self-control. He found that blood glucose levels had dropped in people that were exerting their willpower and that restoring glucose levels replenishes self-control. Study subjects who drank sugar-sweetened lemonade, which raises glucose levels quickly, performed better on self-control tests than those who drank artificially-sweetened beverages, which have no effect on glucose. Seems like that might explains why lot of us programmers are sugar junkies as we wrangle with code all day long…

Intuitively I think it seems logical that there are people predisposed to success. People that have stronger willpower genetically, just like there are people that are taller or have blue eyes. While you can’t get taller you can certainly build up your willpower. As with everything in life it requires hard work and paying attention.


Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!

Visit our friends!

A few highly recommended friends...

© 2009 Denis Basaric: DevComponents Blog