Heads up... You're reading this book for free, with parts of this chapter shown beyond this point astext.
Cyril is an avid lover of mobile platforms and a multi-skilled engineer. He is actively involved in the Android community and shares his passion writing blog posts, helping others on social networks, creating open source libraries and giving talks. His motto: “Do less, but do it insanely great.”
Connect with Cyril
Which do you prefer: podcasts or books?
When it comes to software engineering, I have to confess that I do prefer the good old books. Books’ main advantages are that they are generally more polished and in-depth. At the same time, podcasts are generally better when you want to have an overview of a subject or just want to know about the latest trends or great tools.
What are some books that have had a lasting impact on how you do your work?
Of all of the engineering books I have read, none of them are dedicated specifically to Android. They are generally more focused on global concepts that apply to software design in general. My top two? Effective Java by Joshua Bloch; I consider this book as a must-read when you start developing in Java. It gives so much of the dos and don’ts in Java and helps new developers write Java code that is clear, correct, robust, future-proof and maintainable. Java Concurrency in Practice by Brian Goetz is another great choice; concurrency is definitely hard. Concurrency issues are generally difficult to reproduce and understand. And the very first day you think you get it, you will actually discover the day after you are still off-track. I haven’t read this book for a very long time but I remember learning a lot with it.
In terms of insight from an individual in the community, what is something you wish someone had told you at the start of your software development career that you had to learn the hard way instead?
I think it would be to never ever be afraid of deep-diving into the source code! Books and documentation are handy, but the one and only source of truth is the source code. Most of the things I have learned in school are actually based on the knowledge of my teachers. Sometimes they were telling me to read books and look at the documentation, but I never had the simple advice of looking at the source code (when available of course). I learned it the hard way because it’s always difficult to understand how a project is structured and organized. But, at the end, I learned something very important: The only source of truth for any library, tool, platform, etc. is its source code.