Continuous improvement is an important concept. Everyone wants to get better, to learn new things. This is vital, especially in the software industry where things move at an extremely fast pace. In the video below (from JSConf US), Angelina Fabbor explains what’s most important to advance from a beginner to an intermediate and to ultimately become an expert.
The slides are available here.
Below I outlined some of the key points mentioned in the talk.
How do you know you’re not a beginner?
- You can use fundamentals
(loops, if-else, variables, operators,…)
You should basically be able to get out a hello world or small app.
- Comfortable writing code from scratch
Composing different jQuery plugins is not programming
- You’re curious to know how something work
For instance you start reading an existing jQuery plugin’s code
- You feel your code is mediocre
How do you know you’re not an expert?
- You don’t quite rock all the code you read
You get into the jQuery source, but you don’t really understand all the comments…
- You can’t explain what you know
Lots of devs are brilliant and write awesome code, but you can’t explain what you know to someone else in a patient way.
- You aren’t confident debugging
You still use
- You rely on references too much
You continuously have to lookup stuff in references (i.e. MSDN docs, Javadocs,…). It’s not bad “per se” but you’ll get faster if you not have to, obviously :)
What makes a great programmer
It really depends who is asking. For the project manager it’s the dev which hits the deadline, for the customer the one that solves their problem quickest, to the business owner the dev which makes most money etc…
What do you need to learn
- Ask why obsessively
Know what’s behind. “Why did I choose Bootstrap?”
- Teach and/or speak at an event
Tell people, share knowledge. This way you need to formalize your ideas, make them more concrete. Reflecting makes you learn a lot.
- Experiment Recklessly
“Do silly things just to see what happens”
- Have opinions
But respect other people’s opinions! Accept that you could be wrong and hence learn.
- Seek mentorship
Being able to discuss ideas/problems without fear.
- Program a lot
- Stop fucking programming sometimes You need breaks!!
- Write in another language for a while
Compare with other languages. Find nuances, exercise your brain, get different, fresh viewpoints,…
- Know what good feedback is and reject all else
Turns out some people aren’t really happy with themselves and they’ll take it out on you.
Conclusion and Related Reads
The talks is just about 20 minutes, but jam-packed with valuable tips. Just read through them and think about your own situation. Where are you?? Do you do enough to get better, to learn new things? My favorites: share your knowledge, explain it to others, blog,… I cannot repeat it that often. For many people it might seem silly, a waste of time, but you learn so much.
The other one is to expose yourself to new situations, leave your comfort zone and try something new. That’s the only way to learn. Also just simple things like “never used Git”?? Why not try it out in your next project!? Recently a post has been published on programmers.blogoverflow.com with the title “Tools are not skills”. You should definitely read it.
Learning a new technique makes you a better developer, tools are just there for convenience.Tools are not skills
You’re a .Net Developer?? Why not do some programming in Java to get started? Shouldn’t be too difficult, but trust me it’ll open up your viewpoint. Or even try some dynamic stuff like NodeJS or Ruby.
I understand how to use this, but do I understand why? Tools are not skills