Ever since I started to learn about software development a few years ago, John Sonmez (the author of this book) was present in my search for answers. He is so to say my personal career guide. His new book also brought me quite some amount of insights, which I want to share with you. Basically, John describes in more or less detail, which software development related behaviors, trends and fundamentals are most important and why. I really liked the parts about motivation and learning, but I want to start with the software development trends he strongly emphasized on. And of course, I won’t forget to report some of this with my data enthusiast glasses on (or better said data enthusiast ear pods, because I listened to the audio version).
Test-Driven Development (TDD)
I listened very carefully to all the testing and TDD bits, because at the time of listening, I was deeply involved in my side project, crafting a data collection tool, that I wanted to finish in a full TDD manner. Everyone in the software industry should know how important testing is. After completing my side project I now also know how entertaining TDD can be. To be honest, I almost never had that much fun coding. The sooner you start to integrate tests and unit testing, the more confidence you will have during and after the development of your product. There is plenty of material on test-driven data science and even a book about test driven machine learning. So join the club right away!
Debugging is so common sense because everybody does it from the very beginning, from the first lines of code, when ‘Hello World’ isn’t displaying properly. So it might sound weird and painful when after a few years of coding somebody says to you, that you are doing it wrong or not optimally. It’s like the funny people, who would preach that you are breathing wrong. My first encounter with this was one year ago or so when I was opening the Eclipse debugger in a pair programming session with my project leader and he said: “We don’t need the debugger, I am the debugger!”. After this incident, I started some research about debugging and found out that there is even a book fully focusing on the correct debugging techniques. Learning about debugging is as essential as learning about coding. It is one of the fundamental pillars of the engineer’s skills stack. In fact, there should courses in the computer science university programs at the very beginning because this skill gives a tremendous coding power. The book purchase introduces you to a resources toolkit, which also includes a very valuable debugging cheatsheet with valuable debug steps when you are really stuck, like:
Divide and conquer.Figure out how to cut the problem in half. Hack away big chunks of code. Skip sections of the program. Hard-code values to eliminate as much code as possible. Figure out what half the problem is in and hack that part in half.
While the debugging process for database queries and machine learning models is technically a realm for itself, the fundamental debugging principles stay the same.
John says that web and mobile is the future. I say web and mobile is the future. What would you do with all your fancy data analysis if there was no web to make it public? So basically it was nothing new for me, it just strengthened my opinion about how important the Internet is. However, I personally would argue with the “mobile” part in terms of mobile applications, because I think, or better said dream about, that mobile apps will disappear in future completely in favor of Progressive Web Applications.
John is extremely harsh on certificates and I am very happy about this little chapter in his book. I have to admit, that I recently thought about doing one so I can learn something and get a “proof” of knowledge. But there are so many drawbacks to that. To keep it short here, I want to outline the most critical point: Like with all kinds of courses, university programs and similar, a certificate is just a proof of you having had dealt with the topic. Most of the time it says nothing about you being proficient in the subject or even being able to apply it in practice. A much better time investment can be side projects, which will not only proof your practical knowledge but also might give you a chance to monetize whatever you have built.
As the Datagoodie himself, I had been waiting every second for the data term to come up. The book speaks a lot about careers and possible paths but does not go into detail about the more specialized software developer roles. Which is not surprising regarding the fact that it’s an infinite, ever-evolving jungle of job titles. It speaks for one sentence or two about data science and cloud as a viable path, though. So, we have the confirmation now.
What else was there? Apart from stories, pearls of wisdom and worldviews from a deep-read and educated author, I enjoyed his thoughts about ethics and etiquette in the software industry. And as I mentioned in the introduction, the book is on a mission to enlighten and motivate the reader. I have found three quotes in the book, which deal from several perspectives with one of an engineer’s most valuable assets: the ability to learn.
If you don’t know what your purpose in life is, then your purpose in life is to find a purpose in life. – “Some guy”, whom John quotes
Obviously, this is where everything begins. If you exactly know why you are learning and if it contributes to your life’s mission, the learning process will not only be enjoyable but also extremely efficient.
There are things we know that we know. Things we know that we don’t know. And things that we don’t know that we don’t know. – Donald Rumsfeld
A major goal should always be to reduce the unknown unknowns because they are most harmful to your development. By recognizing your unknowns you extend your mental horizon and maximize your potential.
Nobody has a natural talent that they were born with. Some people might be more inclined to do something. But if you have a „natural talent“ it makes you only good as a beginner, but it doesn’t make you good as a master. What makes you good as a master is experience, practice and consistency. – John Sonmez, loosely cited
You can learn anything at any time (That being said, it doesn’t mean you should go through extreme struggles your whole life, because you have not taken the time to evaluate your strengths and weaknesses). Pick your path and stick to your direction.
How to Learn and Teach Anything
Now that you hopefully feel the importance of learning, you might ask yourself: What is the best way to broaden your horizon? John explains a really nice framework for learning and teaching anything quickly. For example to learn or teach a new technology:
- Get the Big Picture of it. What is this technology capable of?
- Quick-start. Provide the fastest way to set up your first dummy, e.g. your first “Hello World” print out.
- Learn the 20% that you will use 80% of the time, that is to say, the most important material.
As a final word here the finisher advice from the finisher himself: Become a Finisher! No matter how hard it is, when you start a project, make a plan on how to finish it and follow through at any cost. It does not mean that you don’t react to changes by adjusting your plan. It means that you get the thing done. ATTENTION: This is a life-transforming advice when applied radically.
While these are only my personal observations from the book, I recommend to read (or better listen to) this book, draw your own conclusions and enjoy your own biggest takeaways:
I love audiobooks where the author himself reads it. If you have read or are planning to read this book, definitely grab the audio version to get John’s voice into your brain. Also, there are some important side notes and additional stories, which you won’t find in the print version. Here is how I’ve read it:
- Listened to the audio version
- Original Length 20 hours 4 minutes
- Listened in 11.5 hours
- From 11. August 2018 to 22. August 2018
Don’t forget to share this article using the buttons below, if you learned something useful today. Other Engineers will thank it to you as well ;-)