Issue #19 - The Art of Deliberate Practice for Software Engineers
Becoming a better software engineer through focused deliberate and targeted practice
Welcome!
Welcome to Developing Skills - Skills for Developers looking to develop their careers.
Tip of The Week: Deliberate Practice
Becoming a better software engineer is a journey, not a destination. The field is so broad and the world in which we live and work is changing socially, economically and technologically providing an evergreen set of new things to learn.
But how do you do that? One approach that’s worked well for me and many others is deliberate practice.
Deliberate practice was defined by the psychologist Anders Ericsson and colleagues, as: “the individualized training activities specially designed by a coach or teacher to improve specific aspects of an individual's performance through repetition and successive refinement”
It goes beyond mere repetition and involves focused, intentional efforts to improve performance in a specific skill. For software engineers, this means honing coding skills, problem-solving abilities, and staying abreast of emerging technology trends.
But How?
6 Simple Ways to Embrace Deliberate Practice as a Software Engineer
1. Build Real-World Applications Regularly: If you’re doing this in your day job great! If not check out Coding Challenges for som projects ideas.
2. Implement Design Patterns in Projects: Deliberately incorporate design patterns into your study projects. Understand the situations where each pattern is most effective and experiment with their implementation. This hands-on experience reinforces your understanding of the patterns and their use.
3. Actively Participate in Code Reviews: Engage in code reviews, whether at work or through open-source contributions. Analysing and providing feedback on others' code exposes you to different coding styles and best practices. This collaborative process not only sharpens your critical thinking skills but also helps you learn from your peers.
4. Stay Abreast of Emerging Technologies: Set aside time to explore new programming languages, frameworks, and tools. Follow industry trends, attend meetups, and read tech blogs regularly. Learning about new technologies keeps your skill set relevant and broadens your perspective, making you a more adaptable and versatile engineer.
6. Contribute to Open Source Projects: Participate in open-source projects relevant to your interests. It exposes you to diverse coding styles and allows you to work on real-world projects. It's a valuable opportunity to apply your skills in different contexts and receive feedback from other developers.
7. Attend Workshops and Courses: Take advantage of workshops and courses to deepen your understanding of specific technologies or coding practices. These focused learning experiences provide hands-on training and expert guidance, accelerating your growth as a software engineer.
Three Ways I May Be Able To Help You Level Up As A Software Engineer:
I write another FREE newsletter Coding Challenges that helps you become a better software engineer through coding challenges that build real applications.
I am available for 121 coaching and mentoring.
I have a course Become a Better Software Developer by Building Your Own Redis Server (Python Edition) which guides you through solving the Redis Coding Challenge in Python.
I think a key to growth is establishing your feedback loops.
The examples you mention have it implicit: You see your software either running or not running, and you find your comments in code reviews understood or not understood...
Knowledge without action is just potential. Implementing what we learn is the key to truly mastering any skill. 💪