Skip to main content

Seven things doing a 1000 piece puzzle has common with complex engineering projects

I was doing grocery shopping during the New Year holidays and the store had a lot of 1000 piece puzzle on sale for $11. My son had never done more than 100 pieces and  I was like hey this seems interesting for him, so I bought one. We started working it on Jan13th and finished between 4 people on Jan25th. During the journey of finishing I saw a lot of similarities with complex engineering projects. I think everyone in engineering should do one of these and here are some of the things I learned.

  1. Underestimating the task: I grossly underestimated the task and amount of time it would take for my son to do it.
  2. Teamwork: After a day or two I realized my son lost interest, the whole family had to be involved to keep him motivated on it.
  3. Prep work: Like engineering projects, you need to do a lot of prep work like:
    1. Turn  the pieces down 
    2. Study the patterns
    3. Sort the pieces
  4. Divide and rule: Like engineering projects you need to pick some quick wins initially to get off the ground and start assigning tasks to team members. In our case, I focused first on building the frame by finding corner pieces whereas other members picked up some unique buildings or landmarks in the puzzle.
  5. Uncertainties: Like software projects, unforseen things can come and derail you, in our case, my wife had to go out of town for a week for school and my son became sick with fever for 3 days.
  6. Tenacity and Persistence: Every project needs a driver who would carry on regardless of how monumental the task is and one who keeps inching towards the deadline. Once you build momentum, puzzles like engineering projects have a snowball effect and the first 50% took 80% of the time but the last 50% went fast because pieces were reduced and when members saw that it's getting close, everyone got excited and put in extra efforts to finish it.
  7. The joy of finishing it: Like complex engineering project seeing something going live is a feeling that can't be expressed in words but can only be experienced by going through the grind.
Here are some pictures of the process and I recommend others to go through this, it's a great tool to increase family bonding and have some time off from tech like TV and distraction from work on the weekend.


Popular posts from this blog

Startup Engineers should learn this one trait

Engineers are creative creatures who like to solve problems and build things. When you build something it becomes a part of you, no wonder that IKEA desk that took you 2 hours to assemble in an apartment has a lot of sentimental value than the Haverty desk you paid 3 times the price and just shipped it to home. Gardeners are also like that and the blackberries I grow in my backyard have a lot of sentimental value than the sweet ones I can buy from the store even though the home grown are sour 50% or more times .

Given a problem there can be many designs to solve it and sometimes we pick one design and worked tirelessly for days to add few new classes and a shining new framework and then send it for code review and someone outsider with a devil's advocate view comes up with a new simple design to solve the same problem or sometimes unconsciously you would come up with another simple solution to the same problem but you hold back and you keep investing time trying to make the origi…

Can you remain a fullstack developer?

I started as a full stack developer 14 years ago but these days its becoming more and more difficult to remain a one. Back in those days all you needed to know was html/css/Js/jsp/java/sql/ant/xml and some tools like tomcat, svn, eclipse and some shell scripting and you are a full stack developer. Being full stack developer means you can code from UI layer to server to database and peel any layer of onion to trace an issue.

Now a days you may need to know 20 different technologies in each area before you can easily navigate between layers. Life becomes difficult if its a distributed system. In UI you may need to know
ReactAngularJquerySASSHTML5JavascriptNode.jsGrunt and many more In server you need to know
JavaSpringHibernate or any OR toolGuavaNginxHaproxyMemcached and many more.  In Database you may need to know
MysqlNOSQL databases like Cassandra or MongoDBShardingAWS Aurora or RDSElasticSearchRedisOpenTSDBHadoop Big data services like BigQuery and many more On top of that …