Yepp, more things I wish I'd known when I started, 8th edition.
You can find the first article in the series here.
And the previous article here
Programming is not about memorizing, it's about understanding
When I started programming I felt very frustrated when I tried to write simple things just to find out I forgot some syntax details. I constantly felt as if I was going backward in my learning because no matter how hard I tried, I kept forgetting the names of standard library methods or the arguments they take. I also felt a bit ashamed for needing to have several documentation pages open on my browser.
Nowadays I don't really care, I know that programming is not about memorizing, it's about understanding. Our brain has a limited capacity that is better used in things other than obscure syntax. Sure, after some months using a programming language a lot of things will become muscle memory, but there's nothing wrong in consulting the documentation, it's there to help you after all. At the end of the day, we get paid to build things that provide value, so it's more important to know where things fit and when to use them. If you forget a name or argument list, just go and read the docs!
I partially blame this paranoia on the evaluation methods used through our education. In many places, you are required to commit to memory vast amounts of information that is easily available everywhere. If you forget an equation it doesn't matter how well you understand a concept, you are toast.
Real-life is different, no one will hide your books and cut your access to the internet at work (unless management is insane). Focus your learning process on understanding the most important concepts and when to use them. If you understand this, then syntax becomes an afterthought.
Sometimes, programming languages use different names for the same concept, but an experienced programmer has no problem switching between languages. This is a result of understanding the underlying concepts, and it's the reason experienced programmers can learn new languages with very little effort.
So don't feel frustrated if you forget some small details, we all do. Learn the concepts, practice a lot and consult all the documentation/articles/forums/answers you need, they are there to help you and everyone uses them, even (especially) experts.
Be part of the community
The software development community is a surprisingly helpful and friendly one. The sooner you form part of it the better, as they can help you if you get stuck and guide your learning process.
There are lots of ways of doing this, and you don't need to limit yourself to a single option:
- Participate in online forums or other forms of virtual communities. Reddit, StackOverflow, and Quora are very popular options, but there are endless other online communities with lots of cool and helpful people.
- Get involved with your local developer community. There might even be a place in your city where programmers hang around and organize events or other activities centered on sharing new ideas and cool project. Sometimes they even organize hackathons, which are great opportunities to learn new things and test your skill.
- Contribute to an open-source project. This is a really productive way of honing your skill and learning what's it like to work with other developers in a project. Go to GitHub and find the lists of projects that accept newbie contributions. People from the project's community can offer you guidance and help you improve.
If you can try to find a mentor, it goes a long way in guiding your career and providing helpful advice. The obvious place is searching in one of the programming meetups in your area, but online mentorship is becoming more and more popular. You just need to find a person with the time and motivation to provide you guidance, which is not a rare thing in this industry.
Have lots of fun!
Developing software is a lot of fun, and it's the primary reason I started writing code a few years ago.
There is something about creating a working and well-written piece of software, something that keeps you going back for more. The activity of creating something new involves a lot of creativity and problem solving, so much that in some situations it feels like solving a puzzle. What's more, seeing a piece of code you wrote in production is an extremely rewarding experience.
Being able to write code allows you to make almost anything inside a computer. The creative possibilities are endless, and the things you create are only limited by your skills and knowledge. Making these little pieces of materialized thought is something that after years continues to be a huge source of enjoyment for me.
And yes, it's true, writing software is hard, and learning how to do it well is a process that takes years. This, of course, will be much easier if you enjoy programming. You will amass hundreds of hours of experience while having fun, which will eventually lead you to become a world-class programmer. So go and pick a topic of interest and write something fun!
Well, that's all for now
I wanted to write this series to share some of the most important things I've learned about software development in the last years. I wanted to put special emphasis on the career/human side of software development, and not focus too much on the technical aspects. All these are lessons that I wish I'd known from the beginning, so hopefully, you will make way fewer mistakes than I did, and find much sooner what you want from your career in software development.
You will learn all the technical things in time, it just takes some effort and consistency. After all, software development is not magic, and think anyone with the right motivation and work ethics can become a splendid developer. Oh, and be sure to spend time honing your soft skills, they will come in handy later.
I really hope some of the things I shared in the series will be useful in your career. So go now and write some code, and have lots of fun!
What to do next:
- Share this article with friends and colleagues. Thank you for helping me reach people who might find this information useful.
- You can find helpful books to continue investing in your carrer in the recommended reading list.
- Send me an email with questions, comments or suggestions (it's in the About Me page). Come on, don't be shy!