This is the second part of a series about most important skills for developer. The first part, about searching for answer skill, can be read here.
Searching for the answer is usually the fastest way to solve a problem
But searching on Google might not be enough to find you the answers, you might be the first to encounter the problem, or you might be searching for the wrong keyword. Sometimes, you have to ask the questions, hoping that some one, some where does know about the problem, and is kind enough to spend some time reading your questions, and typing the answers.
There’s a enormous number of books out there – (even I am writing a book!), so choosing the right books to read can be a difficult task. Yet it’s important because our spare time, is very limited: we still need to eat, sleep, socialize, take care of family and kids, while we have to spend significant time to write code and solve problems. How to get the right book and not regret spending time reading it?
There are many good books – but it’s best to categorize them into smaller groups:
Is the book only useful for a small group of developers, on a specific topic (such as C#, Javascript or Networking), or is it useful for almost every developer?
Is the book beginner-level, or does it require some experience to digest?
Will the content be still largely relevant after ten years, or will it be obsolete in just next few years?
Is it a book to read from cover-to-cover in one sitting (just kidding, I mean you should finish it when you start it), or to read chunk by chunk (read a chapter, stop for a while, read another chapter), or keep it around as a reference?
I have this criteria to categorize books myself:
Good books: A book which is on-topic and with accurate information, and in an easy to read and easy to follow style, the author(s) deliver their promises.
Great books: Good books give information. Great books raise questions. A good book becomes great when it makes readers think – not only about topics mentioned in the book, but also the bigger picture.
Legendary/Classic books: Great books which stand the time and still be useful after 10 years, or even longer. These are truly gems of their own and should be read, regardless of the topics. The topics might be obsoleted, but the thoughts/ insights are still relevant. They are battle-tested and no matter which field you are working on, you’ll still learn something from it.
Books you really should read
C programming language, 2nd edition
Not everyone works with C (myself included), but this book is still recommended over and over for developers. The book is pretty small, and indeed very easy to read and follow – it is widely accepted as one of the best programming books ever written, in terms of writing quality – and it provides a view of what is a function, how a program works, how are things connected to hardware-level …
If you ever write a programming documentation – and you will – make this a reference for writing style.
Code Complete, 2nd edition
This book is considered must read for everyone, especially those who are new to software development, and re-read after a while. It’s a big book contains almost everything you should follow when you’re in the software industry – coding convention, naming, how to structure your classes … Get a copy and read it from cover to cover, if you haven’t, and re-read after 3-4 years to see how much you learned from it.
The Pragmatic Programmer: From Journeyman to Master
C# has never been considered as a cool language (fact: It was initially called COOL – C-like Object Oriented Language) – it’s a good language, very good indeed, but because of it is “created by Microsoft” and then “tied to .NET platform”, it lost the coolness to other languages – JavaScript, C, Scala, you name it.
The table has turned and the wind has changed. Microsoft has been making bold moves with all the open source projects that run multi platforms. Once known as the “evil” of software industry, Microsoft is changing their image to be good again. And with Xamarin being free – C# is the language to learn now – if you have not already. Being a very good OOP language with powerful functional programming features, and built on a mature platform and excellent tools and library, you can use C# for almost everything these days – mobile, desktop, server, and even client.
So how?
Visual Studio Community:
Visual Studio is simply one of the best IDEs out there, and while missing some of the features, Visual Studio Community is free – so it’s perfect choice if you are a student or simply learning the language. It can be downloaded from here:
Development can be hard – as developers we want to spend time to write code to solve problems. Luckily, we have tools to solve our problems – so we can save the precious brain power for the coding, and let them handle everything else.
These tools are used by me on Windows, but most of they are available on multi-platforms.
Everything
Platform(s): Windows
Seriously, it’s a tool to search for everything, by name:
It’s incredibly helpful when you want to jump to check something outside of your solution, but you don’t know exactly where is it located. Save me 5 seconds for every file and I use it, like, (at least) 50 times a days. 6 days a week (on average). Imagine how much times I saved?
Sublime Text is widely considered as the defacto standard for text editing – it’s fast, it’s smooth, it has bunch of useful (or even awesome) plug-ins, and because everyone uses it for everything, the guides is freely available everywhere. But with two caveats: It’s not free (79$ is not really expensive, but not cheap neither), and it has been rarely updated recently (it was updated, like two times last year). Many questions have been raised about the development in its forum, but they are all left unanswered.