Level up as a developer
How to keep learning and improving a programming language.
By now, I guess all of us in the development world know that we are in a “living” ecosystem. Technologies evolve, add new features, new functionalities and even some are left behind under something we are all familiar with: the dreaded deprecated.
It would be funny to do a poll on the first word that comes to mind when we read “deprecated” (You could leave a comment at the end of the article).
But this is not a problem for us, or it shouldn’t be. From my point of view, it is exciting to evolve with the language we work with and to be continuously learning. Each new feature that is added can be seen as a new tool that is provided to me to be able to solve the problems that I encounter on a daily basis.
Like the wood carver (I love it!), you can work with a single gouge (tool with which you shape the wood), or you can have a set of gouges with different tips that will make your work easier. You can do the same with just one tool, but it will cost you more.
Not everything new is the best
It is true that there are functionalities that are not to everyone’s liking and sometimes they are even left there gathering dust in the language’s source code.
But that’s the good thing, the community of developers can mark the direction in which a given technology is going. Even if only to a small extent, I like to think that we influence the evolution of a given language or framework.
-It is what it is, some technologies listen more to the community than others, but we cannot ignore the power of the developer community.
On other occasions we will have to adapt to certain characteristics of the language or framework because they are guidelines tested by the development team itself as the technology in question evolves.
Have you ever been looking for a solution to a problem and after going through stackoverflow, ended up in a thread in the main repository of a certain language, framework?
It happened to me and I was able to witness a new feature added in the next version. When that new version came and I read the change, I could feel part of it and know where the need came from.
In my opinion, this is the way forward and should be our goal if we want to be good at what we do. Whatever language you work with, understand it, play with it, make mistakes, get out of your comfort zone with the code you produce, keep up with new releases, read articles about it and, above all, learns to solve new problems in an appropriate way.
We all know what to do when faced with a problem and don’t know the answer, ask Google, go to Stackoverflow. So far so good, but don’t copy and paste code without understanding why. Try to analyse and understand the code. This is the only way you will learn something that day and be able to apply it in the future to a similar problem. It may take longer today, but you will save it for tomorrow.
So what can I do?
If you have recently started learning a programming language or framework, I assume that you have taken an introductory course in the language where you have learned the basics, features and syntax. You will have written code for the examples in the course and feel ready for further learning.
The next thing you might think about to expand your knowledge and learn new things is to do another, more advanced course.
That’s fine, but you’ll find that there comes a point where the courses don’t allow you to advance your learning because it’s more of the same.
This is the point at which you will have to change your learning methodology.
This part of the apprenticeship is harder. It’s not the same watching videos and following the code written by someone else who has already thought of everything for you before writing it. Instead, it will allow you to go deeper into the language and to face real problems, to think for yourself what is the best solution with the tools you have at your disposal under that particular framework.
To keep moving forward when you don’t know how, try this:
- Official documentation. Most languages or frameworks have a website with the official documentation where you can learn the rest of the features that are not covered in the courses. If this is your case, it can be a good place to follow the learning process.
- Start reading articles on the technology. Spending 5–10 minutes a day reading articles about a certain language is not a lot of time, but imagine if you do it every day. Little by little you will learn small features of the language or discover different solutions to problems you have already faced.
The important thing is to be constant. It all adds up!
- Read code. Reading other people’s code gives you a different view of a language, you learn different coding styles. You might struggle to understand it at first, depending on your experience, but that’s what it’s all about. If you use Github, you can read the repository documentation, download it, test it, debug it and analyse each piece of code.
- Personal projects. You will have heard more than once the importance of doing projects on your own. Start a project and, above all, finish it, even if it is not destined for any client.
Personally, the biggest problem I have encountered when starting a personal project has been: what do I do it about? If you are stuck at this point, take a tip: depending on the technology you want to use, choose a platform or web app or software you know and try to replicate it.
The important thing is that you are the director, producer of the work.
- Events. If you have the time and opportunity to participate in events or webinars, don’t hesitate. You’ll have fun, you’ll meet people who are as passionate about technology as you are and, most importantly, you’ll learn a lot.
- Stay informed about new releases. If you do all of the above, you will almost certainly be informed of the release of new versions. When this happens, read about the changes and try to implement some of them to add to your coding skills.
These are just some of the ways in which you can raise your level of knowledge about a language or framework, but there are certainly many more things you can do depending on your level and your willingness to learn.
Is this too much work for you?
Don’t worry if you don’t have much time to devote to your learning. This is a long-distance race, not a sprint. The key is perseverance and loving what you do.
There will be days when you spend more time than others, be patient and don’t want to cover everything, you have your whole life to learn.