Become a better web developer
April 28, 2015
Recently I attended Fluent conference and saw very interesting presentation by Kathy Sierra (SeriousPony). It was about making badass developers. Since I'm trying to be a better web developer myself and constantly improve, I did a little more digging and found some useful information and tips.
Study shows that willpower and memory use same cognitive resources in your brain. So, if you memorize more then you have less willpower (can't resist stopping by Wendy's on your way back from work). So, the main goal is to stop cognitive leaks.
Create system, stay organized
Make small and unimportant decisions later in the day
Plan for the next day before going to sleep, so you don't waste your energy on small things like what to eat or what to wear
Don't attend boring meetings if you don't have to
Avoid urgent and stressful work environment
There 4 stages in learning:
- Unconscious incompetence (I don't know what I don't know)
- Conscious incompetence (I know I Can't do it)
- Conscious competence (I know can do it but with effort or research)
- Unconscious competence (Mastered the skill)
Stage 1 is where you think you decide to learn something new, you don't know how difficult it's going to be or hoe much time it will take, usually it's very exciting. You don't know what to expect.
Stage 2 and 3 that's where most learning and struggle happens. You're going to be going back and forth a lot from 2 to 3 and from 3 to 2. I'm sure it happened to you, you learn something, then when it comes to actually do something, you have to go back and look something up, repeat and patient until you reach that level of confidence - level 4.
Level 4 is the expert level, you have mastered the skill and can easily do it, time to learn something new :)
There some problems when it comes to learning, it's not always that easy as 1,2,3,4.
Problem 1, Don't get better
If there too many tasks and you are overloaded with work, then not enough resources left to learn new skills. Don't try to learn everything at once, pick something specific and split it to small sub-skills and perfect them. Then take that small skill from "can't do it" to master.
Spend about 45-90 minutes per session (I use pomodoro timer). And remember, practice makes it permanent (not necessarily better).
Problem 2, half-assed skills and poor quality
Bypass this step as much as possible. Nobody needs a job half done or done but a lot or everything has to be re-done.
Problem 3, takes too long
Web development is a fast changing industry, there a lot of innovation going on. New frameworks are created, new standards introduced, new programming languages added constantly. Once in awhile revisit your skills and ask yourself "do I still need to know this"? Cleanup room for some new exciting skills. Always use best tools available, it helps to use less cognitive resources for unimportant and repetitive stuff. Things like good text editor, good computer, good framework or good online service. For example I pay for github, because it saves me time, and I consider that money well spent (investment).
Brain is very good at pattern recognition. If you create a pattern, it's easier to learn. High quality and very high quantity of examples creates pattern. So, if you repeat working on different task using same programming language, guess what, you will learn that language much quicker. Build a big library of small very diverse examples. Try working on very different task, not just same task over and over again. By solving different problems you create pattern and next time you need to solve that problem you just re-use the solution from previous task.
And finally, my approach to learn new language or framework is just to build something from start to finish. I learned WordPress by building my own website, I learned Ruby on Rails by building TimeBooklet.com, then learned Meteor.js by re-building TimeBooklet.com from scratch. By doing these projects I resolved almost any problem I might have when building client projects.