- Develop a new software system, or
- Maintain and redevelop a software system
Tuesday, 18 October 2016
MISSING IN IT: Personality before skills
Wednesday, 12 October 2016
Hardware is cheap, people are not
Monday, 2 January 2012
We are at the end of the road for home computer
Why is it happening? There is basically two reasons for it, one being driven by technological development, and the second on being changing usage patterns of people. In the past home computers were used as productive tools, then as a way to access information and the Internet, and now they are used mainly for consuming media and engaging entertainment. Home computers, be it desktops or laptops, can fulfill these needs, but not optimally, and certainly not with ease of usage. Instead of a home computer, a better way to fulfill these needs is to use range of different devices like gaming consoles, Internet enabled TVs and tablets linked to each other and other peripherals via wireless connection.
One might ask why is the change coming now and not before, the reason is that technology is becoming ready, it is powerful enough and more importantly easy enough to use. For example you can stream music from your phone or tablet to your stereo system; you can print to wireless printer; etc... In short, your devices are talking to each other, thus you don't need one uber device to do everything.
When will it happen? This is a tricky question to answer, but essentially it is all about consumer perceptions on what is needed to fulfill their needs. The day when your average Joe says to himself that instead of getting a new computer to use Facebook and YouTube, he will instead buy a new tablet with a wireless keyboard and printer if needed. This change can happen very rapidly, maybe even a time frame of just few years. However to speak frankly, we are not there yet. The technology isn't powerful enough, when we have for example AMD Fusion or upcoming Intel Ivy Bridge processors with 4 gigabytes of memory packed inside a tablet or other media device, then the technology will be ready. This would more or less put the time frame from end of 2012 to 2014.
What does it mean? End of Windows monopoly in the home market if Microsoft doesn't successfully retake markets from Apple and Google Android with Windows 8. End of open access and free usability of various devices for the majority of users, in short everything will be locked, users download their software and content from their designated shops or use Internet delivered applications and services to fulfill their needs.
From a point of view of a professional working in the software industry, this upcoming change will create both opportunities to be taken and dangers that need to be counteracted. One pit fall that I see is that companies will be spending too much time and money on tailoring applications for different platforms, a dangerous trend that we are already seeing with smart phones. Instead companies should use this opportunity to get rid of all native applications and technologies, moving to pure web based technologies that can be offered to all platforms. It may not be optimal, but cost effective flexibility is something that will be needed in the coming years.
Sunday, 31 July 2011
To be run only in a single server instance
One day when I was talking with my colleague about the past software development projects, it occurred me to ask, why isn't it ever specified that the software to be developed only needs to be run in a single server instance? The reason for my thought is that it would remove unneeded complexity from the application, allowing more straight forward solutions and optimisations that couldn't otherwise be done. In essence it would save both development and maintenance time, thus saving money.
Of course it isn't possible or sensible in all situations to make this specification, but there are cases where it could and should be done. For example SMEs many times have simple applications that just take input from users and other systems, do simple processing and then save it, serving the end result to other users and systems. These kind of CRUD -applications really don't need to be clustered. The reasons why they are specified to be run in a cluster have usually more to do with beliefs or with ignorance about what kind of systems we have to day. For example reason given on why the applications has to be have multiple could be...
"We have too many users, we need to have multiple servers"
No. The servers we have today have amble of power, memory and storage. You can easily rent a server with 2 x 2,5GHz Quad Core, 8GB of memory and hundreds of gigabytes of storage with less than few hundred Euro per month. This setup should be more than enough for your average run-of-the-mill business application and it should be able to handle hundreds of simultaneous users easily.
"It needs to be fail safe, we need to have multiple servers"
No. The server where the application is deployed is probably either an virtual server or an card server attached to a NAS that has RAID enabled and timely backups done. In case of a hardware failure, the virtual server instance is deployed to a new server, and the card server is replaced with a new blade. Depending on the service and automation level, a server failure will cost us a downtime ranging from minutes to hours.
Now to be on the safe side, there are applications and usage situations where what I suggest can't simply be done, and even when we have a suitable case it doesn't mean that we have to throw good engineering practices away. No. If and when we have a case where we know that we aren't going to need multiple servers, let us give the developers the added guidance of not needing to have the application to be clusterable, and let them produce a better application with less unneeded complexity.
