Keeping Ourselves Up to Date
- We live in a world where there is more and more information, and less and less meaning.
- —Jean Baudrillard
Different people have different learning patterns and preferences, and by no means do I feel that I could describe all the possible ways a person could learn. However, the following is a small list of things we can do to keep ourselves up to date.
Books, Many Books
Having our own library, physical or electronic, is essential. We are very lucky to be in an industry where so much information is produced. However, there are many different types of books, and choosing which books to read can be a very difficult task.
- Technology-specific books are very valuable but they expire. They are essential for the immediate need, when we want to learn a framework, language, or any other software we need to use. They are great at giving us a deep understanding of how things work and the knowledge acquired can usually be used immediately. They are also great when we are planning our next career steps. They can give us details of how to use the technologies that may be between our current job and our desired job. However, many of the technology-specific books get old extremely quickly. When a new version of the technology they cover is released, or a different way of doing things becomes more popular, they will not add as much value as before. Examples would be books about Java, Hibernate, Node.js, or Clojure.
- Conceptual books are the books that give us the foundation to advance in our careers. They are the books where we get introduced to new concepts, paradigms, and practices. The knowledge we acquire through this type of book cannot always be applied immediately; it may take a significant amount of time to digest the information and become proficient. Quite often a technology or language may be used to explain some technical concepts but usually the knowledge we get can be applied broadly. Books covering topics like Test-Driven Development, Domain-Driven Design, object-oriented design, functional programming, or modeling different types of NoSQL databases, just to mention a few examples, would fit in this category. Learning new concepts, paradigms, and practices is far harder than learning a specific technology, and it may take years until we get comfortable with them. However, conceptual books are the books that give us the foundation to learn specific technologies much quicker.
- Behavioral books are the books that make us more efficient when working in teams and better professionals in general. They help us learn how to deal with people, clients, deadlines, team members, and so on. Knowing some programming languages, frameworks, and practices is not enough if we want to be good professionals. We also need to learn how to deal with everything else that is not related to code but is also part of a software project or organization. Books in this category will cover the more human and professional side of software development, including topics like Agile methodologies, Software Craftsmanship, Lean software development, psychology, philosophy, and management.
- Revolutionary books (some call them classics) are the ones that change the way we work or even some of our personal values. They propose a different set of values and principles, quite often initially rejected or ignored by the majority of professionals. Bit by bit, they end up making their way into the mainstream. They are books that every software developer is expected to have read and are constantly mentioned in technical conversations. Very rarely does a technology-specific book become a classic. Normally the revolutionary books are conceptual, behavioral, or a combination. Books in this category define or have a great influence on the direction and evolution of our industry. A few examples would be The Pragmatic Programmer, The Mythical Man-Month, Design Patterns (GoF), Test-Driven Development: By Example, Extreme Programming Explained: Embrace Change, The Clean Coder, Software Craftsmanship, and Refactoring. It may take many years to master the content in the books in this category.
Books give us a deeper understanding of a technology or subject. Favor conceptual and behavioral books for your career progression, starting with the revolutionary ones. Read technology-specific books for your short- and medium-term plans.
Reading itself also has a learning curve. There are many different ways to read books, and understanding them can make a big difference in how fast we can read them and how much we can learn. This topic is beyond the scope of this book but I recommend you research speed-reading techniques.
Blogs are extremely popular and a great way to keep ourselves up to date. Quite a few very good developers I know and respect just read blogs. They have almost abandoned books. Blogs tend to fit well in the Software Craftsmanship and Agile models because they contain real experiences, personal findings, opinions, successes, and failures in short snippets. Reading blogs from more experienced professionals and subject matter experts is a good, quick, and free way for us to learn from many different great professionals at the same time. There are also great apps like Instapaper and Evernote, just to mention a few, that we can use to keep track of blogs.
Blogs can be dangerous for the uninformed though. The vast majority of blogs are written without much research or deep thought. Some blog posts are just a brain dump of half-baked ideas, rants, or random thoughts. Some developers use their blogs to keep track of their own professional progression. Some report their own experiences in real projects but that does not necessarily mean they were able to solve their problems well or even to identify their real problems. And that is OK. That is exactly why blogs are great. As long as we understand that we need to read blogs with a pinch of salt, they are fantastic.
But do not think that just experienced professionals should write blogs. All software developers should have their own blogs, regardless of how much experience they have. We should all share our experiences and findings and help to create a great community of professionals. Sometimes we may think that we are not good enough or do not have much to say. We may think that we don’t have an original idea and no one will read our blog anyway. First of all, we should treat our blog as a record of our own learning and progression—a history of our thoughts, ideas, and views of the world over our careers. We should not worry too much about what other people will think about it. We should first write it for ourselves. Even if developers more experienced than us have written about the subject many times before, it is worth writing whatever we are currently learning anyway. Every year there are thousands of new developers joining our industry and they will need to learn many of the things we are learning now. Maybe for them, our blogs will be very useful since we will be writing them from the perspective of a beginner. Do not worry about being judged by more senior developers because that is not going to happen. Whenever we Google for something and the first link we click leads to something we already know, we just jump to the next link. All developers should appreciate the effort that other developers make to write and share their views with the rest of the world, for free.
Technical websites are also good in order to keep ourselves up to date with what’s going on in the market. There are many websites that work as a digital magazine, announcing new trends and techniques. Some of these websites have technical writers writing for them every day. Some of them just aggregate the best blogs or provide a big discussion forum.