Are you ready to be a super ninja warrior (maybe cyclop) developer?
You said web development?
You might ask yourself: who is this guy who write an article about "learning as a web developer"? Can I trust his opinions and experiences? Is it again an article which has no content whatsoever or so vague I won't learn anything and never put my feet again on Internet and watching television all day because they say the Truth in there?
First of all let me present myself: I am a web developer working for companies for more than 6 years now. Before that I was developing already for the fun. I learn languages by myself (beginning by C) since I am 12. Almost 20 years ago...
You know what? Even if I was claiming I am a master in 55 languages including Basic, that I rewrote windows 10 in assembler and I created an AI which had the idea to use humans as energy, you should still be careful regarding the content of this article. Not only this one: every articles on the web. Internet is a great place full of good, bad or ugly resources.
To me it is one of the most difficult pitfall you will have to face as a web developer.
Nevertheless, I am very happy to be a web developer because I love to learn!
Learning means that your point of views change, you get better and you grow as a person. You are evolving: it brings a true feel of happiness.
What are the best way to learn? How can you become an efficient web developer?
Today I would like to share with you the results of my own research.
The pleasure of learning
Most of the time we have a goal and we learn on the way. We focus on that goal more than the way to accomplish it.
The true pleasure for me is the process of learning itself. Without learning, I would be totally bored in my day to day job. Obviously I like to achieve my goals but if it's without learning anything, it is definitely less enjoyable to me.
That's why I try to be focus on the way to achieve my goals, trying to grasp every occasions to learn something!
Writing is an excellent way to learn
Are you interested enough in web development?
Web development technologies are always moving like a massive ecosystem of frameworks, test tools, library, CMS and so on. Everyday new tools and best practices are written, used and criticized by the community.
In this gigantic information soup we have to separate the wheat from the chaff. Learning what matters and not be overwhelmed by too much information is essential to grow up in the web development field.
To me it is simple: If you care about what you do, if you enjoy what you do, you will enjoy learning about it.
However don't try to force yourself creating an interest in web development. Maybe the interest will come. Being surrounded by interested and interesting people can have a great impact. Obviously, if you are surrounded by careless people who are developers but are not involved in their craft, consider to change your environment (company or whatnot).
If you still don't find any interest in web development after months or even years, I would advice you to do something else in your life. What the point in doing something 8 hours a day you don't enjoy? Even if it provides financial security, it is not worth your time.
You will as well aim to learn efficiently, in a reasonable amount of time. Even if I like the fact of learning itself, I like learning how to learn. It is not really a goal because it never end ; but who cares, as long as you enjoy it?
What do I have to learn?
This is the first question which can come into your mind when you want to learn something new. Do I want to be an expert? In which fields?
Those questions can be very overwhelming and can discourage you. Don't worry! When you begin in that field you just need to define your objectives.
What do you want to achieve?
You could learn everything and choose what you prefer but I think it's not possible to master all of these languages equally. It's better to know very well a language than to know roughly ten languages.
Don't get me wrong: there are a lot of benefit to learn more than one language. Philosophy between languages can be quite different and keeping your mind open is always valuable. However don't try to master everything in the same time, especially at the beginning of your career.
Companies will hire you because you have better skills than other candidates (among a lot of other things). If you claim that you are the best in every languages, you will look very suspicious. More and more our industry is populated with specialized people. Trying to be one of them is a good strategy: you will answer very specific needs generalists can't fulfill.
You will discover that there are many languages and technologies which can help you achieve your objectives. Just try them out and don't trust other people in their opinions, especially if they lack clear and obvious arguments. It is a matter of subjectivity most of the time.
Try and choose what technologies you like the most and the one you really need in order to accomplish your goals.
Learning the basics
A child needs to learn the basics. An adult as well!
Be sure to know what you are talking about. It seems obvious but sometimes we expect a result without understanding how things really work.
I don't ask you to be able to translate your code in 0 and 1 just by looking at it. Instead, when you work with a framework or a library, just be curious and try to sort out how things work internally. If you can take the time, go deeply into applications and frameworks, read the code, try to understand it.
Simply because without knowing what you are working with, it is difficult to know what can happen and how to fix the resulting bugs.
Dive in your framework core, CMS or library and try to understand them. Read the documentation. Experiment with your tools.
If it's too abstract or complicated for your understanding, don't spend a huge amount of time on it. You will have the opportunity to come back to it later.
Your brain will anyway continue to process what you don't understand. While learning, you need to give yourself some time and be patient. Learning little by little, step by step is the best strategy.
I have a simple rule to understand and learn: when I see a concept I don't know, I just google it. Everything I am not sure to understand goes into the Google search bar.
If somebody speak about something I don't know, I just ask for it. If he's a very bad teacher and explain poorly, write the concept somewhere (paper, application on your phone...) and search for it later.
Let's be clear to one another: nobody knows everything. Therefore asking is not showing a weakness, it doesn't mean your are not knowledgeable. It doesn't mean neither that you don't deserve the job you are doing.
It means that you are humble and try to know more.
This is one of the best quality you can have as a web developer.
Learn what is useful for you at that time. Be curious and don't rest on your laurels!
Learning the good practices
Making your code working is not the end of your work. This is just the first step.
You need to make your code understandable for the others, scalable, easy to change.
The best practices are simply what experienced developers advice to do. They should be the fruit of experience and therefore highly considered.
The best practices is something you need to have always in mind. Most of the time they are the same whatever the languages you use, so don't be shy and read good practices even for languages you don't know!
I include at the end of this article some books I really like about those best practices.
Master your tools
Tools are a bridge between your ideas and their realization
As a web developer you must learn as well to use your tools efficiently: your code editor/IDE, your version control software, your debugger and so on.
Learning how to code is not enough. Learning how to work as efficient as possible is the next step.
Choose your IDE or code editor based on your needs and the way you develop.
Do you want a heavy IDE with auto-completion, profiling and debugging support or a simple and light code editor? What about some compromise between the two extremes?
Your OS is important as well. Choose it wisely and learn to use it. It can be life savior when you have a bug in your system not to spend to much time fixing it.
Don't waste your time by typing in google what's the best OS/IDE/thing. There are none. Every tool has its own advantages. It depends on what you want to do and how you want to do it.
* Look at what tools are available for the technology you use, test them and forge your own opinion. *
How to learn
Use your imagination to invent new ways of learning!
We're all different. The best learning methods for your colleagues won't necessarily work with you. You have to find what is the best learning processes for you.
The point of having learning methods is to learn quickly and
sustainably. More you will understand your technologies, more you will enjoy learning about them!
It's known that there are multiple types of memories. Let's concentrate on the most important one: visual and auditory memory.
- Visual memory: the best way to learn when you have a visual memory is to write things and put them where you can easily see them. For example I have a big cardboard just above my working desk where I put everything I want to learn and remember. It is a patchwork of a lot of things: technical charts about photography, development, German grammar. Simply because I learn at the moment to speak German, taking good pictures and to be a better developer. I know them by heart because I simply look at them from time to time.
Writing is a very good way to fix concepts in your brain. For example I wrote some sheets reminder (like this) and hang them on a wall.
You can as well have a blog. When you want to master a subject you can write an article about it. If you don't know the subject of your article it forces you to search about it and by extension to learn. Explaining a concept on a blog can show you what you understand and what you don't.
- Auditory memory: You can do the same thing but instead of writing you can record yourself. Listen to your recording from time to time to fix information in your memory.
You can as well listen to technical podcasts for example or, even better, creates your own!
Speak with other developers and try to explain as much as possible: you will always learn with those kind of conversations. We all have our personal ways to explain and understand the same things, it is always valuable to learn from it!
Obviously even if you are more auditive than visual you can apply every of those tips.
Try to concentrate on the methods the most effective for you.
There is no magic methods: learning is all about working in an efficient way on things you are interested in. Working should be, most of the time, synonym of fun!
As a little bonus, if you are interested in memorization, I advice you to read an excellent book written by Kevin Horsley, Unlimited memory.
Learn step by step
Multitasking is not a good idea for your brain. You are not a computer.
Instead, focus on one subject and try to understand it enough to be able to explain it.
Don't feel bad because you have the impression you don't learn anything: patience is the key. Simply learn regularly, little by little.
Regularity is a better teacher than trying to learn something for hours and hours once in a while!
Be careful not to be overwhelmed by too much information: you can lose your interest. Learn to listen and to be honest with yourself. Relaxing is as important as learning.
At the end learning is a balance between work and relaxation. Try to find your own!
Embrace your failures
Failure can be really rough. You put your heart in your work and the result is buggy or doesn't work as expected.
You know what? It's not the end of the world.
Quite the contrary. Those errors are very important sources of learning!
Even if your pride is tainted. Even if you're boss yelled at you and your colleagues threw paper balls to you. What's done is done. Everybody make mistakes, so don't feel ashamed.
Everybody. Even the best of the best. Actually the "best of the best" are the best because they made a lot of mistakes!
If somebody blame you for your mistakes, just remember that he is doing a lot of mistakes himself. It is simply human.
The critical part is to learn about your mistakes in order to limit them in the future.
Ask yourself or, even better, people around you (colleagues, fellow friends): why did it failed? Did I made some syntax or logical errors? Did I understand the requirement? Did I understand the need, the objectives of my development? Do I communicate enough with my team to understand the needs? Did I understand the real problem of my client?
The reasons can be multiple and you have to find the root of them in order not to see the same errors rising again and again. Failing is definitely fine, failing for always the same reasons can be very discouraging.
Don't live in the past. Don't forget your failures but learn to analyze them and move forward. Asking the good questions to the good people is definitely the way to go.
Torturing yourself without analyzing your mistakes is definitely not.
You'll fail in many things all your life and... it's great. There is no better learning method than trying and failing.
With experience and a good self esteem you can take all the benefits of failure.
As I said at the beginning of this article, enjoying the process of learning is much more positive than expecting only the result of your learning! With this state of mind, failure is not anymore an obstacle to your objectives but a new learning path!
Practice makes perfect...
The best way to learn is to practice. You can read as much as you want, if you don't apply what you learn it will go away from your memory as fast as it came.
Just write some scripts, some code experiments. Do some Katas. Have a simple side project. You are a web developer? In that case, you need to develop!
Regularity is again a very important concept here.
... but is not enough!
A lot of people think that practicing is all you need to improve your skills. It is simply not true.
I met developers with decades of experience coding very badly, using old concepts which create more problems than it solve. Anyone heard about forms submitted in iframe?
You need to sharpen the saw. You need to keep up with the best practices, the technologies. You need to keep learning. If, during your career, you have the feeling that you've mastered everything you need and there is no room for progress anymore, you are wrong. There is always something to learn.
Yet some people believe and get comfort in those kind of ideas and don't improve at all anymore.
The easiest way to improve is to read articles or to watch videos on Internet. However I won't repeat it enough though: a lot of misguided and plain wrong information populate the web!
Reading books is safer (but longer of course) and can show you a deeper aspect of a subject. Even if I keep reading articles and books, I think well known books are always more beneficial in general.
Learn with humans
Working and learning with somebody who have better skills or who's more experienced is always valuable.
You can ask questions, read their code, tell them if you think they are wrong, engaging interesting conversations.
Learning doesn't necessarily mean learning academically. Speaking and engaging a conversation with interesting and interested developers will always teach you something.
It is true even if you have 20 years of experience more than your interlocutor. If you can't explain some concepts and paradigms (or with difficulties) it shows you that you never really understand them. It is difficult to know if you master something: explaining is a very good way to find your weak spots.
Build something you like
Enjoying what you build and you will learn and retain much more...
Don't let the tutorials on the web imposing you the project you have to build. You can take inspiration of them but at the end build something you want to build. Something personal. You will learn much more if you like the end goal and the process to reach it.
Obviously if you are working for a company you won't have this freedom. Try to find a company with interesting projects.
My first website was about old video games simply because I love playing to the NES and other antiquities. I took a great pleasure to build it and I learn a lot from this experience. Much more than other websites I developed afterward!
After all, the most important is having fun !
If you want to master a bunch of subjects you have to close Facebook, Skype and everything which can disturb you. The social media are designed for you to lose your time on it.
Stay focus and interested. Don't take a break every 5 minutes. You want to learn ? Document yourself and do some experiments. Practice, again and again. Don't do multiple things at the same time like speaking to your friends, coding and cooking. Stay focus.
If you have difficulties to keep your focus, it exists a lot of app which will forbid you access to a lot of I-am-designed-to-waste-your-time websites.
My favorite technic to stay focus is the pomodoro technic. Just google it, it is very simple and efficient.
...but take breaks
As stated before, breaks are also important.
Don't stay on your computer, go out, walk a little, read some pages of a good book. If you feel tired you can stop working for a longer moment.
It's sometimes better than coding nonsense because your brain can't work properly anymore. Quality is what we aim for, not quantity. Don't blame yourself for that, but don't use tiredness as an excuse not to work.
In a nutshell : you have to know yourself and be attentive to your limits. You have to be as honest as possible with yourself when considering your tiredness.
Find a balance.
Discipline and excuses
We all know it: you really want to achieve something, learn a new cool technology but you don't have the time. Maybe you are not motivated neither. Maybe you are too tired. So you continue to browse your Facebook like you would watch TV: passively and without any motivation.
All our life we find ourselves excuses not doing what we need or simply want to do.
My advice on this is simple: try to do it anyway. At the same time make yourself a promise: if you don't want to continue after ten minutes, simply stop and do something else. Don't be ashamed of it.
This promise is really important. It shows you that you have nothing to lose. It shows you that you are not the slave of your tasks. Since you can stop after 10 minutes you are way less engaged emotionally.
Most of the time you will continue your task after 10 minutes. The harder is to begin. Motivation will come while doing.
If after 10 minutes you still don't want to do what you wanted to do, respect your promise and do something else.
What can help me to learn?
In books we trust!
Internet technologies evolve very fast and it's important to stay updated if you want to understand the new challenges in the field.
You only need to be a bit curious about the technologies you like. There are a lot of technical articles on the web, it shouldn't be difficult to monitor what happens.
Personally I try to read a bunch of techy guys I learned to trust. I follow them on twitter or I use RSS readers like feedly.
I share the best articles I read on my twitter so don't hesitate to follow me @Cneude_Matthieu!
Books are your friends!
Books are really valuable. They will teach you subjects in depth. It is way easier to find a good book than a good article about web development.
Here my personal selection of books I like:
Clean code by Robert C. Martin - This book is a must read whatever your level or the technologies you like. It is maybe more suited for beginners but even advanced developers can find very valuable good practices in there. It is very easy to read and very well explained. A must have!
Code Complete by Steve McConnell - If you have read Clean Code you can pass this one. It is very long, the author repeats himself a lot and throw a lot of useless data a bit randomly. Still, in the middle of this ocean of content you can find very valuable advices. You can read a chapter from time to time or just read what is interesting for you.
The art of SQL by Stephane Faroult - This one is more for developers who has already a good experience with SQL. To me this is a must read if you want to increase your SQL skills in a significant way. It written for intermediate SQL practitioners.
PHP Objects, Patterns, and Practice by Matt Zandstra - This one is more for PHP developers. You need as well some experience to understand this book but if you want to learn and understand the most common design pattern in OOP, this book is for you. Full of examples, far from being only theoretical, it will lighten your PHP journey.
Obviously this is a very tiny selection, a lot of other very interesting books can be found pretty easily.
Youtube is not only for funny cat videos
There are a lot of conferences about technological subjects available on Youtube. It is sometimes very valuable and insightful. If you don't want to read (even if I definitely encourage you to do so!), watching interesting talks could be a good alternative.
You can as well take notes when you watch some tutorials or conferences in order to create something more personal out of it. It will help you remember what you've learned.
Are you ready to learn more?
I really wanted to write this article simply because I think intelligence is synonym of curiosity. If you are ready to learn, to challenge yourself in the web development field, to improve and grow, you will become a good and valuable developer.
It looks simple but it takes time. It's not a problem! Be patient, focus and regular in your learning. More importantly: have fun!