No matter how much experience, there is always more to learn or practice.
Remember, practice must be deliberate.
If you have some free time to learn by yourself, or in a pair, or even a mob, here are some ideas to help you use your time fruitfully.
I want to…
- learn how to setup a Ruby development environment
- learn a new language
- learn more about software architecture
- learn to TDD
- practice TDD
- get feedback on my code style
I’m not sure…
Go and do some Katas, either the ones in this repository.
Or from one of the following sources:
Repeat Code Katas
It goes without saying, but code katas are meant to be repeated.
Each time, you should focus on honing a particular part of your skill set.
You will pick up new knowledge as you finish guides and seminars.
Focus on applying that new knowledge in practice.
- Focus on getting names absolutely perfect, break out a thesaurus and choose the absolute most precise words for the problem at hand.
- Is your code open for extension and closed for modification? Think of ways that it could be extended, and create plugin points
- Do your classes and methods have one reason to change? Can you increase cohesion by refactoring?
Pick up a book and read. In no particular order, here are a few that are invaluable
- Test Driven Development: By Example (Kent Beck)
- Growing Object-Oriented Software Guided By Tests (Steve Freeman, Nat Pryce)
- Domain Driven Design (Eric Evans)
- The Pragmatic Programmer (Andy Hunt)
- Clean Code (Robert C. Martin)
- Refactoring (Martin Fowler)
- The Clean Coder (Robert C. Martin)
- Clean Architecture (Robert C. Martin)
- Working Effectively with Legacy Code (Michael C. Feathers)
- Practical Object Oriented Design in Ruby (Sandi Metz)
- The Software Craftsman (Sandro Mancuso)
Watch screencasts and other programming related videos
Go back over guides
Can you apply the knowledge you picked up in a previous tutorial or seminar in a new project.
Do you need to follow the guide, or can you remember what to do?
If you’re currently not on a delivery team. If possible, arrange to shadow a team actively developing software.
Go and review some code. (You don’t even need to comment).
- Read the code + understand it.
- Do you think it’s well designed.
- Clone the project, try to run it locally.
Work on a project
If you have a burning desire to build something, do so.
Make sure you’re building it well, though.
- Open small pull requests - less than ~400 lines (At Made Tech you can drop a link into #engineering or #learntech)
- Make lots of mistakes, and don’t fear them.
- ATDD your code
- Refactor relentlessly
- Put into practice your ever growing knowledge
- Ask for help when stuck