How a challenge changed everything
30 tips in 30 days!

The main purpose of this blog was to accept a challenge made by Fellipe Couto during the Reboot.Dev week. During 30 days, we should post here information learned in the event: for each day, a different quick tip.
The result is now translated below and I hope it can bring to you a spark, at least 1% of how important these peaces of advice were for me. Get your coffee and enjoy reading!
Tip 1: Create a blog!
The importance of sharing information for keeping the community alive was highlighted during Reboot.Dev. Even if you are just getting started, contribute! And the reason is simple: there will be always someone who knows more than you, but also those who know less. So it is possible to bring some relevant knowledge for someone.
On this website (Medium), you can create a blog in a few seconds. Just log in to your Google account and it is done! Then, by clicking on the image icon, customize your profile. Start writing by clicking on “New Story”. This simple!
Take the chance to read relevant content in your areas of interest. You can leave comments on other people’s texts and follow as many authors as you like. This is a good way to show them that your blog exists. Everything very simple and intuitive.
Tip 2: JavaScript!
This programming language has been grabbing market share due to its versatility and its passionate community has successfully propagated a vast range of usage possibilities.
The “combo” (JS+CSS+HTML) seems to be base of success for front-end devs. For back-end, the same JS appears along with Node.js and this is my favorite path!
In my opinion, JS is friendly and fast to bring results back. It is definitely a good way to start and build your journey. But, if you already have advanced usage and/or studies in another language, maybe to keep focusing on that is better.
Tip 3: LinkedIn!
In addition to being the most relevant social network for professional purposes in Brazil, LinkedIn is a great way to organize your professional information and even generate resumes.
In one place, you can keep in touch with all people that can help in your career and with whom you share common interests. But posting irrelevant content or just linking posts is not enough. It is essential that you, even if you are in a junior level, seek to build authority in your chosen area. For that, the keys are consistency and depth.
How can I do that? One good example is to choose a good article and share information about it (always referencing the author, please), share your understadings or even just translate it, making it possible for more people to access a good content. It is possible that your LinkedIn article be shared and you gain an expert status on that subject, besides being considered as someone that reads interesting texts, knows a foreign language and spreads knowledge.
Tip 4: Portfolio!
During your journey as a dev, you must have taken several courses. Besides all knowledge acquired, the exercises you have done throughout the process can become an important part of your portfolio.
It is “mandatory” to have a GitHub account! There you can share your work and technical evolution, with international repercussions. Most of the resources are free and you can find a lot of content about how to use it on YouTube.
For now, if you do not have an account yet, do it! Start publishing content, following people, starring good projects and contributing for them. Even if you do not feel confident to fix bugs or suggest new features, you can offer translation services or proofreadings. What matters is being active!
Tip 5: Foreign languages!
In my opinion, anyone is capable of learning anything as long as they work hard, choose the right method and set possible goals.
I know everyone wants to learn as quickly as possible, but calm down. It is a construction. If you think about it, how long did it take to you to learn your mother tongue? A lifetime? And even today there are words that you do not know, either because you can not spell it, nor pronounce it well or the meaning. Why would it be any different in a foreign language? Be realistic.
The important thing is to have a vocabulary that allows your daily management. You can get it by learning words that, in fact, you use a lot in your mother tongue. If these words are useful for your day to day, you are more likely to memorize them and you will make a second language as useful as the first.
You can also translate your thoughts into the language, composing a repertoire of sentences. It can be useful to describe events, give information or just chat. If you can, watch everything and listen to music in the foreign language, it can give you a context of usage.
Tip 6: Practice!
During Reboot.Dev, Elton Minetto (Codenation) made a comparison that I found excellent: a developer is like an athlete and must practice every day. I totally agree because I believe in the strength of discipline. Of course, for some people to do certain activities is easier than to others, for several reasons. But, without effort one does not achieve the best one can be.
For years, I took ballet classes and even became a teacher for beginners. The main thing that caught my attention was the fact that everything had influence on the performance: food, hours of sleep, a well done stretching, the right ballet shoes and, mainly, the hours of class.
Practice is essential! My teacher used to say: “if you missed a class, then do two to make up for half”. Everybody is categorical stating: in order to become a dev, it is mandatory to code every day! And I wonder: why not?
Is there any better feeling than spend hours trying to solve a problem and, finally, “run” a solution? Or try to find where the bug is and, after a lot of research and anger, it was just a typo?
For me, more important then the incredible senior you want to be, is to enjoy the journey (because, believe me, it is a loooooong one). It is not easy, can be frustrating, requires a lot of effort and dedication, but it depends on you. So, set a nice playlist, organize your desktop and create a good relationship with coding.
Tip 7: Always a Junior!
It is important to be humble to always learn something and reinvent yourself. One of the most frequently asked question is whether there is an age limit for migrating from other work area to technology and the answer is: it depends on you.
Many people find it difficult to give up a certain status reached in a given profession and start over in another, sometimes knowing less than the intern. Start again, from scratch, but with a background of years of experience. Some points are essential: humility, financial planning and a lot of willpower.
Of course, it is necessary to be ready for a possible drop in the financial status. After all, when we are no longer teenagers, we have already made several commitments “from adult life”. In other words: bills.
So allow each day to be one of learning. Even when you are revisiting known subjects, let your mind look for new understandings. Learn, always!
Tip 8: Take the risk!
As important as being prepared, taking on a challenge is fundamental to any career. There is no point in spending a lifetime studying, without ever applying for a job.
Even if your profile is not completely within the requirements for the job, is it not worth taking a risk? I always hear recruiters saying that soft skills are sometimes more important than technical skills. After all, a person can learn to program in a certain language within a few weeks, but how long does it take to train empathy? Or sense of accountability? How to work well in a team?
If you found a job vacancy interesting, try to take it! Send your resume! Submit your profile! I have never heard that companies’ HR keep a list with names of people who tried to get a job but were not completely compatible and therefore should never work there. In other words: you do not lose anything just by sending your resume.
This movement is essential for you to understand the demands of the market and also to know your position in it. So you can adjust your study efforts, start to dedicate more time to certain tools or even choosing another language to work with.
There are a lot of possibilities out there, but you will only know if you try.
Tip 9: Communication is the key!
The relevance of communication in the context of organizations and even personal life was highlighted by Thaíssa Candella. According to her speech, in order to have good relationships one needs to be able to connect with other people and practice will help.
Remote work is a reality and it is mandatory to solve problems through communication and daily tasks such as sending messages and writing reports can become more efficient if the content is thought within good communication practices. Some tips can assist in this process:
- As soon as you start your working day, send “good morning” and inform the others on what task you will be working on.
- Have an informal channel to share information that is not directly linked to work, but generates companionship in your team and a favorable environment for interactions.
- Create a repository of doubts and clarification to help professionals who are just starting in the area, as interns and juniors.
Even in a remote work situation it is important to be connected.
Tip 10: Personal Page!
Even when you are following a tutorial to create your own personal page, try to customize it. When you are a beginner it might be difficult to change everything but you can make small changes, such as colors and font-family.
You can easily host your page on GitPages. For me, being honest it was a little complicated and took me a few minutes, because I have created a repository with the wrong name and it was a mess! But after all, it worked: https://zmmarina.github.io/ (sorry it is in Portuguese).
In general, it was easy for me to create it and causes a good visual impact, besides showing that you dedicated certain time to create something more than a simple resume. You can find a lot of good tutorials on YouTube and you can choose a layout that better pleases you.
Tip 11: Code review!
When analyzing someone else’s code, you have access to another logic used to solve a problem, another way to write the code and even the implementation of another solution.
But how to do a good code review? I mentioned some points I think are relevant and can be taken into account when making constructive suggestions to someone:
- Be kind, always! Remember that in the written text it is complicated to express ourselves exactly the way we want. We have no way to use facial expressions to soften words, for example. So be careful when choosing words and try to make sure you are as close as possible to what you really mean.
- Respect other “logics”. After all, there is not only one way to think a solution. The most charming thing about programming is just that: several paths can reach the same solution, some are longer or more verbose, others are more direct. But all them deserve respect.
- It is a suggestion. No matter at what level of knowledge you are, remember: this code is not yours. With code review, you seek to make suggestions for improvement, whether to make the code more readable or with better performance, or more secure. Anyway, they are just suggestions.
- Yes, you can praise! It is amazing when someone leaves a compliment in your code, am I wrong? You feel that you not only found a solution to a problem, but you did it brilliantly. It motivates and serves to indicate that the path the person has chosen is a good option.
- Read me. Even before reading the code itself, take a few minutes to understand the Read Me section. Contextualize your code review by getting to know the code purposes and peculiarities.
For me, code reviews are essential to trace trails of logic I had not thought of or show me different steps for something I had thought. In other words, I am increasing my own repertoire of possible solutions, in addition to learning shortcuts and tricks that the most experienced devs have.
On the other hand, I always ask for code reviews of my codes because I grow with each correction and suggestion. Small details of syntax or even big security issues can go unnoticed by me and an external look can help. The key for all this is humility.
Tip 12: Code review!
First of all, focus is not stubborn! And do you know what makes a huge difference? The context. All your plans are designed based on a certain context, but emotional intelligence consists in knowing how to adapt them. It is vital to know where you are going, but it is equally important to recognize the time to make adjustments in order to reach your goal.
Let’s suppose you are watching the nightly news and the “weather person” says that it will snow tomorrow. So you take your heavy coats out of the closet, let your wool socks ready and leave all this on the table, just to make it easier to wear all that stuff. However, the “weather person” was wrong! There is an amazing sunny day outside! Will you wear yout cold clothes just because you have planned so?
Focus is precisely to know what is relevant to achieve your goal. Some people are more attached to what they have done than to the reasons for that and they get lost. The recent events showed us the world is changing all the time and all we have is our ability to get adapted.
Tip 13: Method!
If you want to work as a dev, you do not necessarily need to have a Bachelor’s degree. so all knowledge you have came from your own efforts and studies. You, with your didactics (wheter good or bad), have organized a study method that works for you.
Of course, this is not an easy task. Not everyone knows the learning way that better works for themselves. Sometimes, they start the process but are unable to proceed or, after a long time, realize that they have not learned anything.
How to create a study method?
- Set up an environment to be your place of study. I know apartments are small and it is not possible to have a room only for this. At least during the studying time, keep your desk tidy, silence and avoid distractions.
- If possible, set a time to study. For example, “Every day I will study two hours” and do it.
- Make studying part of your routine, a habit. Even when you are not willing, just sit and study. No matter what, study.
- Recognize the method by which you learn best. Reading? Taking notes? Videos? Podcasts? Remeber: what works for one may not work for you.
- Before sleep (best moment to think complex things.. oh no, wait…), ask yourself: “what did I learn today? Can I summarize it within 30 seconds?”. And try!
Tip 14: Pomodoro!
You probably have heard about the Pomodoro Technique, a method in which you use a timer to set intervals (usually 25 minutes) to dedicate your attention to do certain task.
- Choose your task and be sure to “break” it into several small activities. For example, you have to study a book, so break it into chapters.
- Set the timer and leave your phone away. Again: leave your phone away.
- Work on the task until the alarm sounds. Then, you stop and check on a paper, to control your performance.
- Take short breaks (around 3 minutes).
Obviously, just like any tool, it is intersting that you make adjustments to your reallity. Avoid distractions: turn off the TV, stay away from your phone (I know it is difficult), keep only what you use for your studies on the desk, avoid studying in bed. The technique alone will not be enough to make you study, it depends on you.
Tip 15: Agile Team!
Luiz Duarte Jr. defined an agile team as one that can guarantee the delivery of a product from end to end, in a number of around ten people. The key is interdisciplinarity: different skills working together. There is no way to pre-define what these competencies are, since each product has its specificities, its own demands.
In general, the agile methodology helps teams to develop more efficient and dynamic solutions, based on principles and values, which include delivery in the shortest possible time, efficient communication and self-organized teams.
There are several methods that use agile processes to optimize their procedures, such as Kaban, Scrum and Lean.
The purpose is that each interaction is like a mini-project, which lasts around 1 to 4 weeks. At the end of this period, a new version of the product must be delivered to the customer. Then, there will be a new communication process to define new deliveries.
Tip 16: The right programming language!
First of all, you have to ask yourself: what problem do I want to solve?
Each language can support more efficiently than other structures that will serve as a solution to raised problems. What you want to develop dictates the language to be chosen. So, sometimes, you may be working on a particular project that requires knowledge of other languages, which ate better suited to what needs to be done.
The important thing, therefore, is to have the fundamentals, the basis, the logic of programming. So you will be able to learn any language, because you know how to break the problem into small parts and how to solve each one.
Before learning any language, focus on logic of programming, build a solid foundation that supports the building of your knowledge.
Tip 17: Logic of Programming!
Basically, it is the set of rules and concepts that guides the creation of a sequence of actions (algorithms), i.e. the scrip that you need to inform the machine and it follows and returns something expected.
I always think that writing a good code is like giving instructions to a small child or someone who is unwilling to do something. You have to explain the step by step in detail, without letting anything to be implied. There is no “I did not say it because it is logical that it is so, everyone knows it”.
There are tools to define an information flow in a logical way, such as control structures (if), loops (for/while), among others.
Having a solid foundation of logic of programming means that you can organize your thoughts in order to find possible solutions and be able to code this fot the machine.
Tip 18: Start with a generalist mind!
Despite all demand for specialized professionals with specific knowledge, it is essential to have a macro view, before choosing which area to follow.
Starting in the area with a very restricted point of view can help to focus on what elements to study initially, but also bring unnecessary performance habits, in addition to closing possibilities for those who are starting.
So “try” a little bit of everything before deciding which area of programming to follow. Watch videos on YouTube, take (free) courses and talk to professionals to find out what area is more suitable for you.
And the most important: be calm! You do not have to know all the answers right away.
Tip 19: Age!
I usually hear people asking if it is possible to learn to program after a certain age. As they have backgrounds that seem to be in opposite fields to that of software development, for example, many people wonder whether they can really start this long learning journey from the scratch.
The good thing (in my opinion) is that everything depends on your effort. At the same time as you get older, you also gain experience and having a rich background is fundamental to your ability to think of solutions. Times usually brings maturity to make decisions, empathy to work in a team and patience to deal with customers.
In other words, time brings age and some good softskills. So do not underestimate your capacity and conquer your space, knowing how to value your experience.
Tip 20: Be the recruiter!
Fellipe Couto always states the need for candidates to be interested in the company. It makes perfect sense! After all we spend most of the day in the workplace.
It is essential that the candidate research the organization, but not just numbers and awards. Understanding organizational culture, profile of employees and company’s mission is fundamental.
Do you identify yourself with that organization? Would you like to make part of it? Choose a company that fits your profile. Do you see yourself acting naturally in that environment? So, you are part of it. The worst thing you can do to yourself is to spend the day pretending to be something or trying to fit in.
At the time of interview, ask questions! The interview is not an oral exam! Take the opportunity to clarify your doubts and everything you consider relevant. Hiring is a two-way process.
Tip 21: Resume!
About this subject, there are some points that I consider important:
- Number of pages: your resume must have as many pages as necessary to pass on the relevant information for that job.
- A resume for each job vacancy: each company has its prerequisites and you must show that you fit into them. Highlight this compatibility.
- Photo: not required. It can be interesting to put a “face” to all that history. But remember to find a good balance between friendliness and professionalism.
- “I have no professional experience”: you can use your academic experiences, volunteering, freelances. The important thing is to show that you know how to make commitments and follow an activity routine.
- “I have no academic background”: free courses and professional experience can demonstrate how much you have learned and dedicated yourself to your career.
- Aesthetics: choose easily readable letters and neutral colors.
- Grammar: review your resume a few times before submitting it. If you are unsure about the meaning of a word, choose another one that you really know.
Remember that the recruiter will have dozens of resumes to choose from. So emphasize the points he/she is looking for.
Tip 22: Academic background!
For some people studying at a university is a dream, others see it as an opportunity to improvement, or a waste of time. Well, every experience is valid if you know how to get the best out of it.
Anyway, a college can help networking, give a more traditional view of knowledge, a path to be taken and a title. These elements, if they do not help, are unlikely to get in the way.
But it is mandatory to a dev? The average answer is no. Most job vacancies are more interested in your knonwledge than in the way you acquired it.
Tip 23: Courses!
For those who chose to learn “alone” or even for those who want to improve their knowledge, internet is full of super interesting courses! On YouTube, videos seem to be endless (some with high quality).
- Coursera: free classes and hands-on projects for free (no certificate).
- Codecademy: I love this one! The text is funny and full of good content. They have the perfect balance! You learn by reading and practicing. There is a payed zone.
I know there are dozens more, but I chose to only put the courses in English that I have taken and recommend.
Tip 24: Technical challenges!
Even more essential than memorizing concepts, it is the need to practice. Programming is practical, it means having a repertoire of experiences to apply as a solution for different situations.
The best thing is that there are several free sites where you can practice with technical questions and challenges. And yes, you can upload your codes as part of your portfolio on GitHub. It is intersting for other professionals, including recruiters, to see your efforts to improve your skills continuously.
I have listed just a few, but the possibilities are many! Let’s code!
Tip 25: Hackathons!
Basically, hackathons are programming marathons focused on developing solutions and can last for days! The cool thing about it is to have contact with people from different backgrounds, areas (programmers, designers…) and technical levels.
I know that those who are starting are afraid to sign up and end up “disturbing” the team. But it does not work that way. The main idea is that every collaboration is valid! So this is a great chance to learn new things.
Furthermore, networking is a key to a healthy career! Working as a team is always a great idea and brings lessons of adaptation and leadership. Different personalities that come together to achieve a goal.
Extra tip: SHAWEE.
Tip 26: Motivation!
It is not an easy subject. Mainly because it varies from person to person. Some feel stimulated by money, others pursue fame and authority… Anyway, each person knows what she/he values, what seeks and is willing to give up in order to achieve it.
Well, I anticipate one thing: if you have chosen programming, get ready to study hard! And it means going out less, watching less Netflix, spending less time with friends, giving up many things.
On the other hand, how can you not fall in love with programming? You will notice your progress and how you are becoming better than before. It is like a competition with yourself!
Find your motivation and, when things get tough (because they will, ok?), just keep going. There are moments when you walk, in others you run and, sometimes, you almost drag yourself. It does not matter. The important is do not stand still. Direction is more relevant than speed. Just keep going.
Tip 27: Communities!
Through connections, you form your network, access people who can help you acquire knowledge and even solve the bugs that will appear in your codes. But not only that!
Being in contact with people who spend a lof of time doing something you also spend a lot of time doing, who speak the same “language” (even if in another language), with common interests, who share the same frustration in seeing that the code did not work… All of these factors create connections that are beyond technique. They are connected people generating something bigger.
To be honest, I have never felt so welcomed as I do now. I may be very wrong, but I find this feeling of mutual help incredible.
Tip 28: Perception!
Creativity is not enough to think about solutions, it is necessary to have the perception that there is a problem to be solved. But, many times, there is a wrong understanding about the word “problem” and improvements end up not being implemented, not even developed.
And how do you know that? By analyzing the affected audiences, leaving the comfort zone and exercising empathy. An exercise used by Marketing teams is to create a persona.
So, you will no longer develop an application for children in general. No. You will think of an application for Theo. Theo is a three-year-old boy, extremely intelligent and active, who loves dinosaurs, heavy vehicles (bulldozer, tractor, monster trucks…), firefighters and police cars. He enjoys interacting with images and is beginning to understand vowels and numbers. He loves blue.
It is easier to connect to a person than to a generic group. Expand your perception beyond your comfort zone.
Tip 29: Creativity!
I constantly hear people saying that they are not creative. The concept of creativity itself is also not objective and I think that is where the misunderstanding comes from.
I believe that there is no creation from scratch. Nothing came out of nowhere, it always has a starting point. Then, suddenly, creativity can be turning things into other things. Thinking about solutions is pure creativity!
Are you going to say that you had never looked at someone’s code to get an idea for yours? And will you say that the person who wrote the code also had never looked at anyone’s code to write hers/his? And you will say… (OK! I know you got it!) See? Do not feel bad about getting inspired!
Obviously, I am not talking about copying someone else’s work. But having contact with different solutions to compose a repertoire of your own solutions.
The raw material for ideias are ideas. And you know the best thing about all this? Ideas are renewable, infinite and, the more shared, the more abundant.
Tip 30: Revisit!
We live in a world that constantly pushes us forward. You cannot stand still, time does not stop and does not return. But it does not mean that we cannot revisit places of knowledge that we have already been through and have new understandings, draw new lessons.
So go see your old codes, for example! Try to see how much you have evolved or how you sttoped being cared for with some details. When I take olde notebooks to rewrite (yes, I am this kind of person), I see in my notes points that I considered important before and today have become so natural that I do not even think about them anymore. Like declaring functions in JS, for example.
It is not a crime to watch the same movie, just because there are thousands of other movies you have never watched. Obviously, do not just watch it but allow yourself to revisit. Did you take a course you liked? Take it again. There is nothing wrong with that. Novelty also comes from the “same”.