Learning Ideas
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…
Code Katas
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.
Examples
- 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?
Read
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
Watch screencasts and other programming related videos
- Destroy All Software
- Clean Coders
- Rails Casts some free videos are outdated
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?
Shadow others
If you’re currently not on a delivery team. If possible, arrange to shadow a team actively developing software.
Code Review
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.
Remember:
- 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