Posts Tagged ‘Software’

Are all the software products created in just five Countries?

August 19, 2011

It seems that software products are only created in very few countries around the world : United States, Israel , United Kingdom , Canada and Texas :).

There are 196 countries in the world, but most seem to have better things to do than to write software.

This is a critical piece of information because “Software is Eating the World.”

India has  plenty of IT projects outsourcing companies , Japan has 200 video games companies while China has many hardware companies.

However, there seem to be very few software products companies In non English speaking countries (I count both  Canada and Israel as English speaking countries for in this blog context).

Germany has SAP and Software AG. France used to have Business Objects, but now it belongs to SAP so it is left with Dassau. Japan has Trend Micro, but that’s about it. China is not in a much much better situation with total of 29 companies listed in Wikipedia.

Try to think about a famous Spanish Software Company ( Hint : Anti virus that looks like a bear).

I’m not sure why this is the case , but can suggest a few ideas:

  • There are a lots of software companies in other countries, but they are local to their markets an don’t bother to become international and big
  • Since programming languages are in English, there is a huge advantage to English speaking countries
  • Software development started form universities and the leading Computer Science universities are in the same countries
  • Software development product companies have consolidated to a very few big companies and most are American
  • Software products require a unique combination of strong engineering and “immature” first versions

Does anyone else have any explanation or counter data?

Any maybe it is less important these days. Our industry is moving into Software as a Service model in many use cases.

Where in the world are the great user interface developers? – Part I

January 11, 2008

UI Guru Ad

After a six months long search, we have finally filled our UI Guru position. While recruiting is not easy these days, it is next to impossible to find an excellent UI developer on any given date.

There is vicious cycle preventing good people from programming UI and pushing good UI programmers to other domains. I will try to describe this flawed process and maybe even start a movement to fix it…

Here is how it works:

1. Development managers unusually come from the server, networking, kernel and database walks of life.

2. Software mangers tend to be arrogant .They presume UI programming is easy, boring and can be done by anyone.

3. UI developers earn less money than kernel\networking developers.

4. The best programmers do not want to become UI experts, as there is less money and prestige in it.

5. As most UI developers are not excellent programmers, they write the code in non modular, non reusable fashion. Thus it really becomes boring and manual to fix. Even if an excellent programmer happens to start in UI, he soon wants to move on to the server side, or at least become a team leader.

6. As a result of the above, the development manager belief is encouraged, since most of their UI coders are not very impressing. They pay them less and distance them form the real interesting product decisions.

Examining the myths leading to this outcome, I believe they are flawed and irrational.

“UI is not an important part of the application”– thankfully, people have largely grown out of this perception. The success of Outlook, iPod, Nokia, Google and others has demonstrated that exceptional user experience carries a huge premium.

Even in more traditional enterprise based security software the rule applies.  If the feature does not have a visible, clear, user interface it might as well be removed. When I worked in Check Point, we sometimes tried to roll out features with no UI, because UI always seemed to be the bottleneck. We rarely succeeded.

In one famous case, we added a dialog to features that existed in the product for two years. The interface was simple and we assumed the task would be quick and easy. We were very wrong. Not only the UI was complicated, it turned out the features themselves are not working and need to be designed from scratch.

The features were turned off by default when they were first released, so they never ran in the field. Off course, no bugs came from support and everyone assumed they work well. QA stopped testing them, as they were pushed to the magical “Test Cycle 3” which never actually takes place. Our sales and marketing people did not really promote the features and customers did not even know they existed.

“UI Programming is Easy” – Yeah, right. If it is so easy, how come it is always the bottleneck?  I managed software projects in multiple programming language and various organizational structures. X\Motif, MFC, C++, Java, Swing, AJAX etc. I experimented with UI programmers as a separate group, as integral part of the main application team and as outsourced team. The projects domains were in enterprise, consumer and Telco .The developers were Israeli, American and Belarusian.

The one common aspect was the UI effort was almost always the bottleneck in the development process.

Server developers tend to think UI is easy, because one can create a trivial application very quickly. Sadly, most applications are far from trivial. Generating high quality user interface, which is maintainable, modular & pretty is extremely difficult. Unlike backend programming, every mistake is highly visible and everyone has an opinion on the subject.

“UI Programming is boring, tedious and manual”

Strangely, many people think programming kernel drivers with VI in “C”, armed with printf debugging, is more tedious than writing a modern application in C# & Python, using Visual Studio.Net.  Personally, I find the internals of kbuf, mbuf, ioctl & NDIS tiresome and frustrating. If one wants to hand craft assembly code, he might as well become a hardware engineer.

It’s true the debugging Cascading Style Sheets can be frustrating, but so is analyzing core files on Linux machine and the memory is one big mess. Sometimes it seems that the typical male programmer finds it more prestigious to hunt down the prey with bare hands 🙂

The truth is that UI programming and design can be extremely challenging. When done right there are sophisticated modeling, design and coding involved. There is always some manual, event customized code that needs to be written, and this tends to be less generic than server code by nature. However, the usage of more modern programming frameworks compensates for that and makes it much more fun.

Stay tuned for the second part of the post – Binary search and the UI Guru.

Debugging Core Files

Can you make money writing algorithms ? Part I

December 21, 2007

Just a few years ago it didn’t really pay off to be an algorithm focused company or an expert. Life was much better for a company that made pretty straight forward   database-office-automation-process-improvement software. Finally, this is about to change and the really smart people of software programming might start seeing money flowing their way.

Historically, writing sophisticated algorithms didn’t result in great product, system or reward. One of my good friends, who is also one of the brightest guys I know, tried once to sell a great machine learning algorithm.He devoted 5 years of his life to writing it. The best offer he ever heard was 10,000$. That’s more-or-less 200 hours worth of an expert HTML developer in San Francisco , only that this is one of the smartest people in computer science and he spent some 12,000 hours on it.

Things were not much better for others. Let’s try a social game. Name 5 famous Belgians ! Sorry, wrong game.  Name 5 famous algorithms that made their inventors rich. Don’t Peek.

1.       RSA – There is some evidence that considerable financial reward did arrive to some of the inventors.

2.       LZW – Rumor has it that Compuserve made some money out of it.

3.       Can someone Help ? One-Click-Shopping? Window Keyboard Button?  T9 ?

To make things worse even the smart companies didn’t do very well. Take a look the OCR market. There used to be quite a few companies that made great algorithms for image processing and pattern recognition : Ceare, Calera, Xerox, ScanSoft. They are so forgotten you can’t even find most of them on the web.

Today, almost none of them exist and you probably never heard of them, if you are outside of the field. Voice recognition companies didn’t do much better. Dragon, Art,Phonetic Systems. No one was really able to get really huge revenues and they all folded into one company – Nuance.

There are quite a few good reasons for that. First of all, people buy products , services or full solutions. They are not really interested in algorithms. Usually the people who create great algorithms are not so great in product management or system engineering. Google without the text-ad concept and great engineering of scalable data centers would be left with another great information retrieval algorithm.

Second, there are many times in which a better algorithm is less important than implementation and context. In computer science it can mean a lot if something takes N operations to compute or If it takes 2N operating to compute. In real life this is often overshadowed by other considerations such as memory, IO, or just waiting for the users input. Moreover, algorithms need context. Data mining for  shopping is different that basketball analytics. Understanding the unique features of each one involves a lot of domain expertise.

To make matters worse for our algorithm genius, even in places where algorithm can save lots of money such as compression, communication and encryption the trend in recent years has been standardization.
With cellular (GSM) & Security  (AES) innovation being set by standard committees, the potential to make a difference lies more in the implementation of the algorithm, rather than its invention.

In so many words, if you wanted to spend your life writing cool algorithms, you would probably need to focus on academic life or settle for nice day job in medical, communications or defense industry.In next part – Why is it all changing ?