“A good developer is a lazy developer”. That was the first thing I heard in my first course of computer sciences. “Lazy” here does not mean “work allergic,” but it means “doing less to be more efficient”. It is a reality: doing less makes your projects shorter, reduces the need of application maintenance, and is less risky.
In my own opinion, the most important steps requiring the biggest efforts in a project are the following:
I had to implement some new functionalities on an application extracting interesting data from big log files. This application was implemented in an old low-level programmatical language (for rapidity and optimization purposes). I started to develop new functionalities on this application with this dummy language, but after having written a huge amount of complicated and unstable code I realized that the application could be simplified with a high-level language. It took me a very short time to completely rewrite the application with the new functionalities because the high level language was easier to use, needed less effort, and was more “test and debugging friendly”. Why was the application originally developed with this dummy outdated language? Just for performance and rapidity reasons. Indeed, the new application was now slower, but replacing the machine hosting the application by a new one made the application run faster than before! As says Google, “Do not lose your time to optimize an application. If your application is too slow move it on 10 machines. If the application is still too slow, move it on 100 machines ….” Keep in mind “high level programming” to provide “first class deliveries.”
So what is the role of the modern developer? Nowadays, good developers are no longer crazy geeks who do not sleep one week before the deadline to write as many lines of codes as possible. Good developers are people that are able to select, aggregate, and parameterize the best tools answering as many of the client’s requirements as possible.
Web services are a good example of API not requiring any business developments. They are externally hosted and the functionalities offered are well tested (interesting web services provider here).
So now every time you have something to develop, just keep in mind that someone has already done it, maintained it, and provided support on it. The more your deliveries are universal, the more they will be understood and accepted by a majority of people. Our real added value is not the number of lines of codes you can write but how you select the best tools to satisfy your customer. Billy agrees: