It's not exactly Mid 2011, almost a month has passed but I feel it's still reasonable to title this blog post as it is. In the most cliche way of saying this: A lot has happened. One effort that stands out from all the others is keeping complicated from being complicated. Everything that has been going on for the last 6 months is inspired by a quote saying: Less is More.
Murphy's law states that anything that can go wrong, will go wrong. No matter how well the preparation, execution and anticipation, there is still the slightest possibility that some thing WILL go wrong. When it does go wrong, headaches are bound to happen. That's why by keeping things simple, troubleshooting will very much be less prone to cause more headaches.
Just about any Object Oriented Programming language facilitate us with Exceptions to play around with. However, even when we try to catch Exceptions, it's not a failsafe mechanism of pinning down the source of the problem. In a production environment, especially one where a single node is serving a lot of services, the source of the problems is multiplied exponentially by the number of services at any given time.
Late last year, a Googler once confirmed that the faster the page is served to visitors, the more the revenue generated. This has played true every time. It's the principle rule of thumb for any website. I can't count how many man hours are spent trying to squeeze seconds into milliseconds. As do any best practice will tell, optimizing (upgrading) application/brain is the answer to scale properly. It has been a nightmare and also sweet dreams over and over again. I guess it's never ending, you scale when it's time to and never do it when you don't need to.
Following the last paragraph, a lot has changed in the way I code both in front ends and back ends. Starting up as a web developer and with PHP, I tend to be spoiled by how relatively painless the language is compared with other languages. On the hardware side, servers are equipped with the best resource money can buy. These two represents all the performance woes that any website will endure.
The problem is how to communicate all this to other developers. Every developer is unique but every one of them share the same principle which is curiosity. A good lead developer should know how to get the best out of the team by what my friend in Yahoo! Indonesia callsÂ Progressive Disclosure. It's a User Experience (UX) technique actually but I feel it's usable in real life also. By practicing this, although it's relatively a longer learning curve, the principles that are captured and practiced will last a lifetime. After all, all things instant, goes away instantly without a doubt.
Anyone who had code in back ends are by nature wide thinkers. They are adapt to making frameworks and API's that will be used over and over by other developers. They tend to think 2-3x times harder and produce lines of codes way less than others with more time consumed but their result is more often than not, bug free. Bugs will happen when they meant it to happen. In translation, the haven't thought of the condition yet, usually happens when the codes are in production environments.
People can't stand back end people usually because they curse a lot more than the lines of code they produce. Including them in daily routine coding tasks is suicidal. That's why bridging by making people bond over after hours or a few bottles of beer is important. Every developer is human and humas are social creatures. Although geek looking, developers still feel the urge to see the world in the eyes of others.
Enough have been said or written about the love and hate relationship between Developers VS Designers. In any big names in the tech world, the balance of which is more pride over the other is balanced. I don't really care about which is more than the others, what I care is what the two can achieve together.
To do all the above, it takes research and careful thinking, this is most likely not credited enough by developers. As do the other way around. I myself am a developer, all of my codes stays hidden behind those silky designs. Every lines of code is worth at least 0.5 second of my time. During that 0.5 seconds, I must make more than 1 decision because it can and most probably will branch into another condition that I must eliminate.
So going back to Developers VS Designers, I feel it's important to get things straight from the moment the project is started. It takes two to tango and above all, teamwork is more important than personal gains. The recipe for success will vary across teams but one thing for sure is that between the two, communication, I mean really communication like actually talking face to face with one another is crucial. Body language, the tone, the words, etc counts a great deal in shaping the same perspective and perception of the matters at hand.
There are still a lot to go but the last 6 months has been great. I managed to entertain myself with a lot of new knowledge while digging my passion deeper and deeper. I honestly don't know how to quit, the only thing I know I'm good at is My Passion wherever it takes me.