April 11th, 2007

ADM3A

Soft Coding

An application that is well-thought out has three layers:
- a persistence/data layer, to store raw data. Often implemented as queries on a database;
- a business logic layer, to manipulate the 'objects' according to certain rules;
- a presentation layer, to present information to the user and to allow interaction.
Mixing these might give you headaches later on, but that is for another time.

Some business rules may rely on certain conditions or values to be met. For instance, if the order total is over $100.00, get approval from a sales person before sending it off to the warehouse. Or: if this is one of our Gold Customers, offer a special discount. As software is used in more and more complex environments, the complexity of the business rules (naturally) increases.

There is an ancient rule of software engineering: don't hard code anything. Hard Coding means that you put variable information in the source code, thereby embedding it 'hard' into the program. An example is a database connection string: if the application has to be deployed to another environment, the source code would have to be changed in order to use a different database! Clearly, stuff like that should be in configuration files.

In today's Worse Than Failure article, a new term is launched: 'Soft Coding'.
Soft Coding is using configuration files to change the behaviour of the program. For instance, the order amount limit mentioned above could be put in a configuration file, and the program could check the order amount against the amount in the config to see if a particular condition is met! When the limit is changed, all you have to do is edit the config file, and you're done!
However, with more and more complexity in the business layer, the settings become more and more complex. If you're not careful, you (re-)create something Alex calls 'The Enterprise Rules Engine' -- basically a programming language within the program to tweak the behaviour of the program.

Soft Coding leads to even more headaches than Hard Coding, because you add an extra layer of complexity to something that's already complex. Software is meant to make things easier!
Also, it's software -- it can be changed! So if a business rule changes, you can simply change the source code that implements that rule, recompile and redeploy, and be done with it! That is what the business logic layer is for!
Glowing LED

Location doesn't matter anymore

During the DotCom bubble, people were constantly blathering about how location would become meaningless, because all computers would be interconnected and you could hackaccess any information from any location.

Then the power situation in California went all haywire, with rolling blackouts and whatnot. If you have your server center located there, you're paying the price. Location does matter: you need the right infrastructure.
But once the infrastructure is in place, location indeed doesn't matter anymore. If you can get your server center powered, cooled and maintained, it doesn't matter where it is located.

Enter Iceland.

Iceland has virtually free power (because all you need to do to get steam is run a pipe into the ground), highly qualified personnel, and it is located on top of several optical backbones between the US and Europe.

What's not to like?
net zombie!

Cut jobs to achieve success?

Citigroup, the US largest banker, is going to enter a restructuring phase. 17.000 jobs will be cut. This is in response to pressure from shareholders, who think a growth rate of nine percent is too low.

With this cost-cutting operation, Citigroup will save $10 billion. What's not to like?

Well... an analyst puts it this way: "Now they've set up a crazy cost-cutting program, which is absolutely the wrong thing to do. What they need to do is spend money to benefit from growth in core markets."

Basically, you will need the right people to make money. You have to be willing to invest in your personnel and the tools they need to do their work, in order to make (more) money off that work. Allow your people to create value.
Cutting jobs will save you money in the short run, but will take away an opportunity to create value in the long run.
  • Current Mood
    disappointed disappointed
  • Tags