Chapter 8. Conclusion

If you’ve read this far, you’ve hopefully enjoyed the book. We enjoyed writing it as well. In this concluding chapter you’ll learn about where to go next in your programming career. We’ll offer some advice on how to evolve your skills and push yourself to the next level in your career as a developer.

Project-Based Structure

The project-based structure of the book was designed to help you understand software development concepts more easily. You were presented topics within software projects in order to understand the context of software engineering decisions. Context is critical in software engineering—decisions that may be right in one context aren’t so applicable in another. Many developers overuse and abuse subclassing due to misunderstanding that it’s a mechanism for code reuse. Hopefully we’ve discouraged that idea in your mind in Chapter 4.

But you can’t simply hope to read a book and magically become an expert software developer. It takes practice, experience, and patience. This book is just here to help optimize and improve the process. That’s why we’ve added an “Iterating on You” section to each chapter—they offer suggestions as to how you can take the material in this book further and improve your understanding.

Iterating on You

As a software developer you probably often approach projects in an iterative fashion. That’s to say, slice off the highest priority week or two’s worth of work items, implement them, and then use the feedback in order to decide on the next set of items. We’ve found that it’s often worth evaluating the progress of your own skills in the same way.

Taking a regular retrospective on yourself can help you gain focus and direction should you need it. Agile software development often involves weekly retrospectives, but you don’t personally need to do it so frequently. A quarterly or biannual retrospective can be very helpful. One topic we’ve found useful is to evaluate what skills would help your current or a future job. In order to ensure that these skills are progressed, it’s helpful to set a goal for the next quarter. This could be something to learn or something to improve upon. It doesn’t need to a big goal like learning a whole new programming language; it could be something simple like picking up a new testing framework or a couple of design patterns.

We’ve heard pushback from some developers when it comes to skills. A frequently asked question is “How can I be constantly expected to learn new technologies, practices, and principles?” It’s not easy and everyone is busy. They trick is to not worry about trying to learn everything in the technology industry. That’s a surefire route to madness! Finding key skills that will serve you over time and build upon your existing skillset is what helps you become an excellent developer. The key thing is to be always improving yourself and iterating on you.

Deliberate Practice

While this book has covered a lot of the key concepts and skills that are needed to be a good developer, it’s important to practice them. Reading isn’t enough on its own—practice helps you internalize these skills and apply them yourself. In your day job seeking out situations where different techniques are appropriate to apply will help. As every pattern described in the book has places where it works and places where it doesn’t work, so it’s also helpful to consider situations where a technique isn’t helpful.

Often we think that natural talent and intellect are the most crucial factors to success, but a lot of research has established that practice and work are the real the key to success. Books such as Talent is Overrated by Geoff Colvin (Portfolio, 2008) and Outliers: The Story of Success by Malcolm Gladwell (Penguin, 2009) evaluate a number of key factors to being successful in your life, and the most effective of all is deliberate practice.

Deliberate practice is a form of practice that has purpose and is systematic. Deliberate practice has the goal of trying to improve performance and requires focus and attention. Often when people practice their skills to improve them, they just engage in repetition. Doing the same thing over and over again expecting to get better at it is not the most effective way of doing things.

One good example of this was when we were exploring and learning the Eclipse Collections library. In order to understand and learn the library in a systematic way we stepped through the excellent set of code Katas that come with the library in question. To ensure that we were getting a really good understanding, we stepped through the Katas three times. Each time we started from scratch and compared my solution with the one that we had done previously, finding cleaner, better, and faster ways of doing them.

The thing is that repeating personal behaviors means that they are automatic. So if you pick up bad habits during your career, you can end up teaching them to yourself through practicing on the job. Experience reinforces habit. Deliberate practice is the way to break out of that cycle. Deliberate practice may involve practicing new approaches from books systematically. It may involve taking a small problem that you’ve solved before and solving it repeatedly with different approaches. It may involve going on training courses that have exercises that have been designed to practice. No matter which route you go down, deliberate practice is the key to honing your skills over time and going beyond what this book covers.

Next Steps and Additional Resources

OK, so hopefully you’re convinced that this book isn’t the end of the road in terms of learning, but what should you look at next?

Getting involved in open source is a great way to learn more about software and expand your horizons. Many of the most popular Java open source projects, like JUnit and Spring are hosted on GitHub. Some projects can be more welcoming than others but often open source maintainers are overworked and in need of help on their projects. You could take a look at the bug tracker and see if there’s anything you can work.

Formal training courses and online learning are another practical and popular way of improving your skills. Online training courses are increasingly popular and both Pluralsight and the O’Reilly Learning Platform have a great selection of Java training courses.

Another fantastic source of information for developers are blogs and Twitter. Both Richard and Raoul are on Twitter and often post links on software development. The Programming Reddit often acts as a strong link aggregator, as does Hacker News. Finally, the training company that the book authors run (Iteratr Learning) also provides a series of free articles for anyone to read.

Thank you for reading this book. We appreciate your thoughts and feedback and wish you the best in your journey as a Java developer.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset