Sleep on It

I'm attending Nathaniel Schutta's excellent class Fundamentals of Software Engineering, offered on O'Reilly. Nathaniel is an experienced software engineer, architect, Spring advocate, and a professor at the University of Minnesota. In the first week, he presented a number of fundamental ideas for software engineers. One of them was the importance of sleep.

He states that you need to sleep to be able to function, which is common sense. In addition, he points out the benefit of sleeping on it. If you are trying to solve a problem and are hitting a wall, try sleeping or just taking a nap. Your brain will still be working on the problem while your sleep. You will wake up and have the solution in your head or at least have some new insights that were not available to you before you went to bed.

I personally experienced this phenomenon multiple times. The first time I was 15. It was my first year programming. I was solving a problem for a game I was building in GW-BASIC. I got stuck for hours and eventually went to bed. I woke up in the middle of the night and had the solution in my head and coded it down right away. It was magic.

Another time this happened I was 18, solving a complicated chemistry problem. It was a similar scenario. I was trying to solve the problem, got tired, went to bed, and then woke up in the morning with the solution in my head.

Today is another example of this. I have been working on preparing for system design interviews by reading through a book. After 3 days of trying, I realized that the process of reading a book about designing a software system, and reading about different concepts, options, and tradeoffs, is not enough without fresh hands-on experience, which I haven't had for some time. I woke up this morning and decided that I need to go back to getting my hands dirty and building things for a few weeks before I go out there "designing" systems. That's what I'll be doing starting today. I'm sampling projects and books on Java, Spring Cloud, SQL, and MongoDB to pick the one I would like to invest in for the next couple of week.s