Yesterday Amazon announced immediate availability of Route 53 (their DNS service) tools in AWS Management Console, which is great news for all the AWS users. But it also bad news to services like Interstate53, which I was using to manage DNS records hosted on Amazon, because it immediately renders them irrelevant. It is good time to remind ourselves how addon development is not exactly the best spot for software vendors and how in some cases you can still compete against the platform vendor by having significant value add.
Last weekend we kind of explored the field of software estimation, so it is about time to see, why it is not an easy task. Complexity is what makes estimating hard.
Human brain capacity is more or less fixed, but software complexity grows at least as fast as the square of the size of the project
-- Jerry Weinberg, Quality Software Management Vol 1, Chapter 9
And here are some more links to explore the topic:
- The Rising Costs of Software Complexity 2001 Dr.Dobb's article.
What's the most important problem in computer science? Languages, tools, programmers? Well, according to a growing number of researchers and computer users, it's software complexity.
- No Silver Bullet: Essence and Accidents of Software Engineering by Fred Brooks.
Software entities are more complex for their size than perhaps any other human construct because no two parts are alike (at least above the statement level).
- Recent NASA Study on Flight Software Complexity (via Glen Alleman).
- Code's worst enemy by Steve Yegge. A practical view on software size as main contributor to complexity.
- The Fourth Law of Software Design: Complexity vs. Ease of Maintenance. Another practical report, which discusses how "an average-sized computer program is so complex that no human being could comprehend it all at once in their mind" and what effect it has on software engineering practice.
These days there is many buzz around recent announcement of Google Chrome OS. This is, probably, first loud announcement of development of new desktop OS since 2000 when Apple announced its Mac OS X. Of course, if we do not take mobile OSes into account. There are many discussions around what this means to computing. And, in my mind, this is important event, because it manifests end of desktop OS. 10 years ago you used your OS to run applications, now you use OS to access the Internet. As soon as computer became a means of accessing Internet, OS become irrelevant, because the Web-browser is the new laptop:
At this point, who cares what operating system you run? Choice of web browser will have a far more profound impact on most people's daily lives.
We've seen this in cell phone world for years: phones are not a platform for running applications, they are means of accessing cellular network. It does not matter which software is used to operate the phone. Nobody gives a crap about phone software, as long as it allows to place and receive calls with some level of convenience.
"Time to Web" (time from the moment user powers up a computer till Google is loaded in the browser) for a computer+OS tandem will be defining a winner in today's and tomorrow's market of computing. The same way as time to repeat last call was once important for cell phones.
Today "time to Web" determines how fast you can access your e-mail, your text editor, your spreadsheet, you video and TV, your newspaper, your everything. Yes, Web-apps are usually less functional than their desktop counterparts, but as Leo Babauta says:
We don’t need feature-bloated Microsoft Word anymore. Nor Excel, with its 2 million features, nor PowerPoint (who likes to watch slides?). Sure, there are still some great desktop apps that people use, for photo and video editing and much more … but the majority of us don’t need those. We need to communicate simply and quickly, without hassle.
Web apps don’t match up with desktop apps … but that’s a good thing for most of us who use the new computing model.
Now, that we have for quite a time in-kernel Web-servers, I wonder how long it will take to create in-kernel web-browser.
Some time ago I've posted a couple of ideas around productivity and distractionless computer environment. Since then I continue trying to optimize my computer experience here and there. It is always interesting to know what ideas others have about problems you are thinking about. So it was very interesting for me to read how Leo Babauta of Zen Habits approaches his computer experience. A lot of good ideas there.
Iconless desktop. Great idea! Desktop is not a junkyard. On Windows XP it is as simple as right-click on the desktop -> Arrange Icons By -> Show Desktop Icons.
"Light" menubar. Now I switched from autohiding my Task Bar to completely removing it from the screen: only 2 pixels at the top of the screen. No more annoying appearances of the Tool Bar when your mouse is near the edge. You can still use Win-key to access the Start menu and Alt-Tab to switch between windows.
Keyboard shortcuts instead of icons. Brilliant! This is something that I started adopting very actively. On Windows XP you do not even need to install additional software tools: right-click on the icon in the Start Menu -> Properties, click in the Shortcut key box and select shortcut for an application.
Find your way to effective computer experience.These and other small tricks can take you one step away from chaos and give you some precious time to do what you do best - create!
A while back I wrote about using full screen to enhance your productivity and focus on the task you need to accomplish. But that is not enough - you need to get rid of blinking, screaming and beeping everything. Here are a few recipes that I follow personally.
Most likely you use Outlook as I do. Outlook has incredible concentration killer - Desktop Alter. I would not say you should disable it, I would say you must disable it! Here is how my notification settings look like
That's right, I do not get any notifications. I want to decide when to read process e-mail myself. I'll talk later about processing e-mail.
Next thing is IMs. Now, don't get me wrong instant messaging is really great. You can distract people from what they are doing all over the world (and, yes, you can use messengers to communicate). Usually IM tools are smart enough to have a "Do not disturb" mode. In this mode all inbound communication will just accumulate without letting you know and you will be able to process it later. And to not forget to turn of sound notification on incoming messages.
There are so many ways to get distracted, but there equally as many to protect yourself from distraction. Before you skip to the next web page check out this.
Quite a time ago I wrote about "good" outsourcing which is focused on business value delivery rather than on potential cost savings. Even when we speak about outsourcing to offshore locations costs should not be the major factor influencing the decision. What is more important is the ability of the vendor to deliver on promise. Deliver business value on schedule and within budget. If you read Outsourcing Handbook by Construx you will see that cost savings are not listed among 10 common reasons to outsource a project. Although the study did not explicitly focus on offshore outsourcing I believe the results would not much different. Outsourcing is there to help you leverage your own potential by developing your core competencies. Budget savings should be seen as vendor's ability to master his software engineering approaches to achieve higher efficiency than with in-house development team.
This presentation was used in my talk on open seminar of Dnipropertovsk Guild of Certified Professionals in 2003. Here I tell history of software engineering and convergence trends in software industry. Perspectives of Software Industry (PDF, in Russian)