I would also like to point out that if you have the chance to go to any QCon conference you should! They are the best.
We all follow the Dreyfus Model - 5 levels of skill acquisition (for everything: crawl, walk, c++ programming)
- Novice : follow all rules
- Advanced Beginner: breaking rules, testing boundaries
- Competent: goal oriented
- Proficient: intuition (thoughts starting with "I"), analogies/war stories/patterns usage
- Expert: operating of instinct (knowing the right decision)
Remember this model and analyze where you are in it for every task. This way you can ask the right questions and get the right help.
Tools used by Dan North to become a better software developer (remember the 5 levels)
- IDEs, OS
- SCM, build tools
- UML (should only stay on the white board - or else someone is trying to sell you something :-))
- XP, SCRUM, BDD
- Lean, Kanban, ToC
- ToDo-lists, GTD, Pomodoro (write down all "subconscious" thoughts/wishes on a piece of paper during the session to keep focus)
- GROW framework
- NLP (chunking)
- Six Thinking Hats (used by e.g. NASA)
Some tips for how to become an expert software developer.
Tip #1: Practice the basics
- practice Katas (auth. but you need a sensei to learn from)
- code 4 fun (dojos) - solve problems in different manners (no params, only void methods, …)
- learn a language you don't need in work (bridging languages/concepts)
- learn IDE shortcuts!
- practice your "shell-fu"
Tip #2: Learn from other people
- stalk experts :-)
- listen to novices (the beginners mind)
- read and give books journeys
- read code
- follow people (twitter, rss, …)
- programme in pairs
Tip #3: Understand trends
- build up a network that you listen to
- "Do you know what you don't know?" - use trends to find out what's lurking around the corner
Tip #4: Share knowledge
- Blog about success (and failure)
- Join mailing lists (and help answering questions)
- Use learning lunches, muffin mornings, etc. Keep these simple (no PPT - only white board)
- speak @ conferences - but don't become a conference speaker!
Tip #5: Maintain your toolbox
- some tools are timeless, others disposable
- use the "clothing" rule to update your tools
- ivy instead of maven :-)
Tip #6: Learn how to learn
- check out the book: Pragmatic thinking and learning
- understand second-order incompetence
- start using "six thinking hats"
- practice chunking: "what for?", "how?", "how else?"
- eat your own dog food
- listen like you don't know the answer
- always assume you're out of date
- you owe it to yourself to keep current
- learning is a continual cycle
I would like to send out a big thank you to Dan North for this highly entertaining and interesting talk - Henrik Engstrom