Currently reading a very interesting business book called Rework. It is written by the people who started the very successful 37signals.com. The format of the book is also very good. It has a collection of essays based on truisms that the authors have discovered. Embrace constraints is one of them. This is what the authors say
Stop whining. Less is a good thing. Constraints are advantages in disguise. Limited resources force you to make do with what you’ve got. There is no room for waste. And that forces you to be creative.
How true. I have seen this happen many times. The story I am narrating here is about how I learnt a lot of discipline and good programming practices due to constraints.
The year was 1989. I had got into NCST (National Centre for Software Technology) and was doing PGCST (Post Graduate Course in Software Technology), a one year, part time course.
During this course, the most limited resources were computing resources. There were enormous constraints imposed on us. PCs were still not very common then. We had only 400 rupees worth of NCST’s computing resources on a VAX machine available every month. Everything we did would cost us, and was automatically accounted for. Here is the rate card as I remember. Connection time used to cost us Rs. 40/- per hour. This itself would mean we would never get more than 10 hours of connection time per month. Login and logout from the system would cost us Rs. 1 each. A page of printout would cost Rs. 1. A second of processor would cost 1 Rs. Even storage would cost us 1 paisa per day per kilo byte. There was an online program called mycharge that would display the whole charge table for us, and we would look at our reducing balance with a sinking feeling. . Off course we could pay and get more resources, but we didn’t want to pay.
We were doing a module on C programming and we were given a very complex programming problem. My program was 1,400 lines long. However, it compiled in two attempts and it ran and passed all test cases the first time I ran it. And remember, I was a newbie, programming for the first time in my life. What made it possible?
Due to all the constraints I had, I had written the program on paper 5 or 6 times before I entered it in the editor. I had taken hand runs through every function I had written and before I started entering the program in the computer, I was completely sure that it was going to run, and it did. No one formally trained me in taking hand runs and testing each function using them. The constraints made be creative and helped me discover the techniques. Embrace constraints.
Can you think of cases in your own life when the constraints helped get the best out of you? Please share.