Be a developer and don’t die trying: What I have learned after four years working as one
Last monday was my fourth anniversary working at Swapps as a software developer. It was also my four years anniversary working as a software developer at all. Before working here at Swapps, I had some minor works on my university but none related to software development. I started working here on the last month of my career so I have built myself as a developer during my years in this company.
I have been very lucky to be able to work here. First of all, I found great mentors in Andres and Cristian. They both taught me almost everything I know about being a capable and useful developer; even now, after all these years, I keep learning from them. As well, I have been able to work with awesome people, too many to mention but they know who they are, that have also contributed to my growth as a software developer and as a professional.
So, after these four years I would like to share with you, current reader, some tips I have found that have made me a better developer. You may have read some of them in other places and some of them may be new to you. Does not matter, the important thing here is that they are merely opinions and they may not be perfect. Keeping this in mind, let’s start!
1. Keep your own pace
Software developing world is huge. And I mean HUGE. There are so many options, so many languages and libraries that you may be overwhelmed by all the possibilities out there. As well, you will meet incredible people, people that just blow your mind with everything they know about software. This may make you feel small and desperate to learn everything at once. But, that is not a very good idea, because your learning process may be hurt and your knowledge may be incomplete. Keep in mind that those incredible people started as you, learning one thing at a time. As well, remember that everybody has different learning rates and different abilities. Keep learning, keep growing, but always do it at your own pace.
2. Build your bases
One of the characteristics of a good software developer is to be like a swiss army knife: to always have the right tool for the problem. For this reason, we as developers need to know how to use several languages, libraries, infrastructure and other tools that we use on a daily basis.
However, it is a common problem among us that we know what something is doing but not how it is doing it. This may lead to severe performance or security problems just because we used something on the wrong context because it has always worked on similar ones. It is not necessary to know the exact code that is being executed, but it is necessary to at least have a notion of what your code is doing below the surface and how the whole system is going to be affected by it. During these years, there have been countless times where I have faced big issues that appeared after making small modifications in apparently harmless code. Going further, the answer was almost always the same: that harmless code was tied to a very big underneath process that generated a domino effect and killed the site. So, build your bases and make sure what is your code doing and how is it doing it.
3. RTFD
This one is very common so I will be brief: Read the F Documentation! It is incredible how many issues appear just because we do not read the documentation. So, before anything else: RTFD.
4. Learn how to RTFD
This one is even more important than the one before. It is not enough to read the documentation. You need to know what you are looking for, how to interpret it and what to use of everything you read. This may take time, time that you may not have. Also, if it is the first time you are working with the language or the library, it may be confusing. Sadly, this is something you learn to do only by experience. However, there are some guidelines that may be useful to you:
- Start from the beginning: read the introduction, the installation instructions and the “get started” section if they exist.
- Check examples: almost all documentations have examples. Start working with the simplest one, understand how it works and then move to the next one, or to the documentation related to what you used on the example.
- Divide your problem and check how to solve each part of it: you usually need to check documentation for a specific problem or requirement. The thing is that you will never find documentation explicitly for that issue; no documentation has something like “and for the issue that MasterHamster is facing today, this is the solution”. However, you may find documentation about some general usage, like changing a color or hooking a signal after the code execution. Learn how to use these sections of the documentation to fulfill your needs.
5. Be critical about google, SO and other sources
As a developer, google and stack overflow will be your best friends. They will understand your problems when no one else will, they will give you support and they will tell you “hey, you are not alone on this one”.
However, they are telling these things to a hundreds of thousands of developers at the same time so they are not focused on your problems or your needs. For this reason, even if you find useful code on the web, you need to be critical enough to know if it will work, if it will have no further consequences and if it will fulfill your needs. Always assume that this kind of information is just a starting point for you to start developing your solution. Never stick to what you find on the web, make it your own, understand what it is really doing and research what is it using and why. Ask other developers on your team what they think about it and if they have suggestions.
Avoid, by all means, becoming a “copy paste developer”. At the end of the day, the code you copy pasted will almost always become a headache. Use internet code only as a reference and make sure that you only commit code that you understand and dominate. Finally, when using code from the internet, it is a good idea to add the link of the source you use on a commentary in your code, to have it for further reference.
6. Ask for help and learn how to do it
Developing code is almost always a team work. So, learning how to support yourself on your teammates is important. Also, it is very important to be humble enough to ask for help: there is nothing wrong with it and you should not feel ashamed when doing it. However, I do think that there should be a sort of etiquette rules when asking for help:
- Make sure to attempt to solve the issue before asking for help. Try different perspectives, google it, read the documentation. Only after you have done these things, ask for help.
- When asking for help, give a good context. It is rude to say “hey, it is not working” or to only send the error that you are trying to solve to someone that is working on something different with no further context. It will be confusing for your teammate. It is much better to say something like “hey, I am working on this feature but I am facing this problem. I already tried these but none worked”. It will save you and your teammates a lot of time and energy.
- When asking for help, be patient. The person you asked help for may also be busy or not available. Also, he/she may not have all the answers.
- Always say please and thank you, always.
7. When facing a hard problem, rest your head to gain perspective
This is something that happens to me a lot: I find a problem, I spend several hours trying to solve it with no success. Then, I finish my work day, think in other things, play some video games, etc. The next morning, I face the problem again and I solve it in less than an hour.
I am sure that almost all developers have experienced something similar. We are humans, and humans get tired, not only physically but also mentally and emotionally. The frustration produced by a problem generates anger and confusion, and they increase significantly after spending hours without finding a solution. From my experience, the best thing to do here is to rest, avoid thinking about the problem, give yourself some time and face the problem later. Almost always, after I do this, I am able to solve the problem considering new approaches that I was not able to think before, and it feels great!
8. Work on some personal projects
Cristian, Swapps’ lead developer, always has a personal project on developing. They all have a characteristic: they always use something very different from what we are used to and that he does not know very well at the beginning. It is his way to introduce the rest of the team to new technologies and languages. During its developing, he learns about the language and the framework he chose to use and becomes sort of an expert on it. He works on it in his free time, with no schedules, and almost always they end up being a Swapps’ internal project or we end up using what he learned on one of our client’s project.
I use this example to show you how a personal project may be the best excuse to learn or to improve your knowledge in a relaxed and funny way. Considering you have no pressure about deadlines or about success, having a code playground like this allows you to check other tools you never had the opportunity to use, to face different challenges than the ones that appear on your daily work and to bring new perspectives to the development team.
I have made some personal projects myself, some of them have failed, some of them have died before they become something but all of them were a perfect opportunity to learn and to grow as a professional.
9. Be an active part of your local developers communities
I got to admit that I am not as active as I would like on my local community, but I have participated in several events and meetups and they have been awesome. First, you will always find incredible developers that may teach you some new uses or new technology that you did not know it existed. As well, you will always learn at least one useful thing on the lectures and workshops they may organize. Finally, applying as a speaker for a meetup is a good way to challenge yourself, improve what you know and investigate further about it. It is a great experience to share your knowledge and make some friends.
10. Do not forget about you and yours
This one may be a little controversial, but I make a hard stand: there is life outside code.
Coding is awesome, do not misunderstand me, but, from my perspective, it is not everything in life. Do not leave your family and your friends beside just to be coding. Go to the movies, play some video games, exercise, have dinner with your family and a drink with your friends and your teammates. Travel, go to the beach or wherever you would like to go on vacation. Ask for your vacations! It is incredibly sad that people do not ask for their vacations. Get a hobby, learn how to play an instrument, read a book. Whatever you like, but do something else beside coding. As I stated on the 7th tip, to be rested is fundamental for a developers job (and for any job, in fact). So, do not forget about you and yours.
These years I have worked as a developer have been great, I really hope to be able to work on this world for much more time. I hope that these tips will be useful for you and your career. If you are starting as a developer and you have doubts, give it a chance; it if fits you, I am sure that you will have tons of fun. Happy coding!