As a software developer, I know how busy we are and how many different ideas we got in our minds: learn and study new techs, fix bugs, contribute to open source, start a business, etc.
Can you count how many new tools came up since last year?
I sometimes ask myself what is the secret to becoming a successful software developer, although I believe the word success is extremely subjective, it depends on each person goals.
I do not believe in a magic secret to become a successful software developer, however, if we start to take care about ourselves, plan and set goals, study and work hard, I believe we have a better chance. I wrote this article to share some important things which are continuously helping me to become a better software developer. Hope you’ll find it useful.
I often see people complaining about being always tired. As a software developer I know sometimes we want to do a lot of things, study and learn, then we stay up until late and wake up early in the morning, etc.I already had dreams with code and solution for some bugs, it was at same time exciting and scary.
I have defined a rule for myself: one of the most precious things in my life is my health and without it I will not accomplish my goals, build my ideas, learn new things, etc. It’s not easy to change habits, but the first step is look to yourself and identify if you need to change something to improve your life quality.
If you are one of those persons who is tired of being tired, why not have a look at what might be causing this? It’s not easy, you can start with small steps to improve your life quality as exercise, have enough sleep, eat healthy food, etc. There is a lot of available content, books, etc that can help you with this task.
Time flies, so take care of your self now and remember that health is one of the most important things that you have in your life, so don’t waste it.
This is one of the most important and hard things in my opinion. We are super busy at work and is almost impossible to know every single technology, language, framework, etc. I believe that one of the most important skills for software developers is how quick they can pick up new things. Everything in IT/Software development is changing every day and super fast. Getting to know what is upcoming in the market is really important and I often use this quote:
I don’t need to go deep and know how every single new tool/language works under the hood, but at least I should be aware that it exists, understand how it works (even superficially) and what it is used for.
I have worked with different technologies in the last years and the learning process was easier because at least I read about them previously. Moreover, I was able to apply a lot of new tools to solve problems at work because I knew that they exist and could be used as a solution.
Some tips to get updated:
- Be curious: Whenever I listen or watch someone talking about software development, one of the first things I do if I don’t know what are they talking about is search about it. Curiosity really helps me a lot to keep connected with a lot of new things. When I access some websites, one of my first thinkings is: what tools/frameworks were used to build it?
- Twitter: Twitter is one of my favorites, it has a lot of awesome professionals which is daily sharing a lot of useful content and news about software development. If you are keen to keep updated about any subject, just create a twitter and search for people and companies of your interest. I can’t spend one day without scrolling my twitter timeline. Does not matter if you are keen on Javascript, React, NodeJs, Python, Machine Learning, DevOps, Database, etc, you will certainly find good content for it.
- Talks: I love to watch talks, especially talks that big companies do explaining how they build their infrastructure and how they are solving their problems. In each video, I usually learn a lot of new tools and technologies and immediately google and read more about them.
- Read/Blogs: We have a lot of plataforms as dev.to, medium and much more with a lot of content about software development. In the most part of them, you can set yourself notifications to receive emails when new content is released.
- Github: Github has an explore function which contains trending repositories and much more. I also follow a lot of awesome software developers and IT companies to see what they are up to.
- Stackoverflow: Sometimes I search random new questions on stackoverflow just to see what people are asking questions about.
- LinkedIn: I keep connected with IT Professionals, IT Companies, co workers and sometimes I use this to see in what they are working on, what technologies they are using,etc.
If you are working with any tool/language/framework, try to go deep and understand how it works, what are the best practices and never do any line of code without knowing why you are doing in this way.
Here are some and have been really useful for me so far:
- Develop a problem-solving mindset: I love problems. Don’t be afraid or feel bad if you get stuck to solve a problem on your system/code. It’s 100% normal if you have no idea how to solve it. Be optimistic and thankful if you have a problem to solve (by the way we are paid to solve them hahaha), if you don’t know just google it, search for books and don’t be afraid to ask questions.
- If you get stuck in any bug and find a solution on the internet, don’t copy & paste any code without understanding it. (If you don’t have time on the moment, do it later)
- Am I doing this in the right way? What are the other alternatives? I often ask myself this question before making a decision regarding software architecture. On the same way, as any problem can be solved in different ways, tools/languages and frameworks can be used in different ways too. Make sure that you understand your software architecture and the reason why you are using it. If you are not familiar with some language, read about design patterns and best practices before moving on. I often google: “what is the best way to … ”
- If the framework/language that you are working on has a github repository, twitter profile or any team collaboration workspace as slack, gitter, etc, follow it and keep updated about new changes/issues.
- Contribute and share knowledge: I am always repetitive on this one. The best way to learn is by sharing knowledge. If possible, try to contribute with the community, sometimes you can even contribute to the documentation if you are not familiar with the code. You can also write blog posts or tutorials about something you have learned :). Don’t be shy!
-
Interact with the community: You can also interact with thousands of awesome engineers/software developers on social media as the twitter, for example. I list below just three examples of people/pages on twitter that brought me a lot of knowledge:
- React: Dan Abramov
- Angular Angular In Depth
- Javascript - Testing: Kent C. Dodds
… And much more!
- Browse the source code or try to run it locally (I know it might be hard to understand all the source code from an entire framework, but you can start trying to understand how each chunk works). When you get a bug showing a log message, you can try to inspect the source code and see where this message is coming from and why. I was developing an application using angular a few months ago and always had the source code open, whenever I got an error message I used to inspect the source code and understand why I got the message. It really helped me to understand how the framework works by itself.
- Find meetups/conferences If you can’t go you can either watch it later or see what topics were discussed on. You can use meetup app to search for groups of interest on your location.
- Read, read and read. The internet has a lot of content. Do not hesitate do read official documentation, blog posts, books to understand better the tool that you are working on.
- Don’t underestimate yourself: Don’t underestimate yourself. I used to underestimate myself quite often having thoughts like: Why should I write about this if has a lot of people who know much more than me? Don’t get hard comparing yourself to another developer and thinking you worth less because you don’t work in big IT companies or know much like them. Use this as motivation to learn more and always remember, no one was born knowing everything and everyone has something to learn&teach.
One of my favorites! As I software developer, I love to feel useful and I believe that has no better way to feel like this than helping someone else. It really worth it when you share some knowledge and find out that this helped someone :).
Furthermore, every time when you write about something I believe it is one the best way to memorize and learn more about it.
This is my second blog post and I have no plans to stop on it. Hopefully I will manage my time to try to write blog posts every week :)
Some tips:
- Create a blog and write about something new that you have learned in your work.
- If possible, get into your IT community, you can use apps like meetup for that.
- Answers questions on stackoverflow.
- Contribute to open-source projects in github.
Without planning and focus is really hard to achieve your goals. Some time ago I found my self lost in a bunch of different ideas, things to study and learn, it was really hard to really finish/accomplish something. As a result, I bought more than 10 courses and finish only two of them.
Time is one of our most precious things and sometimes it’s a challenge to use it efficiently. I used to start to do something then suddenly I got distracted by different things.
As soon as I started to plan every week with my goals and what I would study/develop everything changed.
I got my self a whiteboard where I write all my goals/plans for every week and it’s have helped me a lot. Every time when I am sitting on my desk and can just look on my right and quickly remember all my goals for this week, which helps me to keep focused.
- Set Goals: What do you wanna learn? What will you build? What you want to be good at?
- Define actions: What I need to do to achieve my goals? If you want learn a specific technology you can define as an action build an application using it or do an online course.
- Organize your time: The hardest part. Everyone is busy, so organize your timetable and save yourself some time to execute your actions.
- Focus: We have a lot of different languages, technologies, etc. If you want to learn and be good at something, try to focus on one by one. As I mentioned before, some time ago I bought myself 10 courses and I finish just 2 of them. Chose something and go ahead.
Hope you found these tips useful :)