<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Dmitry Shvetsov</title>
    <description>The latest articles on Forem by Dmitry Shvetsov (@dmshvetsov).</description>
    <link>https://forem.com/dmshvetsov</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F350444%2Fe78b64fb-a904-42c7-bc2b-194fec3f0e4c.jpeg</url>
      <title>Forem: Dmitry Shvetsov</title>
      <link>https://forem.com/dmshvetsov</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/dmshvetsov"/>
    <language>en</language>
    <item>
      <title>Tricks And Tools To Fast-Track Your Goal of Becoming a Strong Programmer</title>
      <dc:creator>Dmitry Shvetsov</dc:creator>
      <pubDate>Wed, 31 Mar 2021 14:46:30 +0000</pubDate>
      <link>https://forem.com/dmshvetsov/tricks-and-tools-to-fast-track-your-goal-of-becoming-a-strong-programmer-35kn</link>
      <guid>https://forem.com/dmshvetsov/tricks-and-tools-to-fast-track-your-goal-of-becoming-a-strong-programmer-35kn</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://dmitryshvetsov.com/tools-of-strong-programmers"&gt;dmitryshvetsov.com&lt;/a&gt; on March 25, 2021.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Illustration by &lt;a href="https://www.instagram.com/ant_lapin/"&gt;Anton Lapin&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What is the route to becoming a strong programmer? Answers from programmers from Facebook, Amazon, Microsoft and more.
&lt;/h2&gt;

&lt;p&gt;How would it change your programming if you could learn how other programmers have become strong, how they solve problems, and what tools they are using?&lt;/p&gt;

&lt;p&gt;For me it all started with the idea of inheriting the experience of programmers within my circle. I asked my friends and former colleagues whom they consider to be strong programmers, then I made a list, prepared some questions and started asking!&lt;/p&gt;

&lt;p&gt;I didn’t want to limit myself to this circle so I included the question “which programmers do you consider to be “strong?”, and then asked them to introduce me to these programmers. This approach worked brilliantly! I was lucky enough to get answers from and talk personally with people I had always dreamed of talking to. &lt;/p&gt;

&lt;p&gt;Although the title includes companies with big names, I did not aim to ask programmers only from well-known “top” companies. I found that valuable advice came equally from people working in regional companies.&lt;/p&gt;

&lt;p&gt;On this page, you will come across some rare nuggets of wisdom, as well as the mundane things that make a strong programmer strong.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to read this article
&lt;/h2&gt;

&lt;p&gt;In the text you will find &lt;em&gt;[My Thoughts] in italics&lt;/em&gt;. These are the places where I share my thoughts in addition to the answers.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Quotes are given in this style” - Dmitry Shvetsov&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In square brackets [like these] I supplement the quotes with my own words so that the meaning is clear. Many quotes taken out of context are difficult to understand in the way that the author intended.&lt;/p&gt;

&lt;p&gt;The rest of the text is the distilled answers and thoughts of the heroes of this article. In most cases I have used the original words and my job here is only to summarize and highlight the most important.&lt;/p&gt;

&lt;p&gt;Therefore, I want to say a huge thank you to everyone who agreed to share their path in programming. A list of them is at the very end of this article. Some wished to remain anonymous.&lt;/p&gt;

&lt;h2&gt;
  
  
  What makes the difference between a mediocre programmer and a strong one?
&lt;/h2&gt;

&lt;p&gt;Strong programmers started early in high school. Twenty years back, information was lacking, and it was necessary to program a lot to become proficient. This was the case for Denis Bazhenov, Dmitry Fedorenko and another developer who worked for FAANG companies.&lt;/p&gt;

&lt;p&gt;The complexity of modern development is such that now the developer’s toolkit is huge and it continues to grow and become more complex. There is a lot to know.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“The volume of knowledge in the industry is growing, but people have the same time available, and this is not their fault” - Denis Bazhenov&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Strong programmers love to dig deeper through the programming language into the platform and down into the hardware, disassembling the code piece by piece, going down and down the layers of abstraction, from the software layer to the hardware.&lt;/p&gt;

&lt;p&gt;When the program does not work as expected (and this happens all the time) the ability to debug allows you to move at a steady speed, despite the constant tendency of systems to become more complex.&lt;/p&gt;

&lt;p&gt;When a programmer needs to look at a program not from the point of view of the programmer, but from the point of view of the language, the ability to use a debugger on the one hand, and the operating system and diagnostic tools on the other hand, will be indispensable. It will allow you to see the big picture, like what files are open, what is happening in memory, what is going on in the CPU, and what packets are moving across the network. Knowledge of DevOps helps in this regard.&lt;/p&gt;

&lt;p&gt;If you are a backend developer then learn the operating systems! Get to know C and C++ languages, ​​in which most of the system applications are written. If you are a Java developer, learn the JVM and the standard library. If you write OOP, make sure you understand OOP. This forms a profound depth of knowledge and helps to write meaningful and high performant code. If you are using a database, go further than learning its query language; figure out how it works inside. This will aid in design, awareness of bottlenecks, and debugging.&lt;/p&gt;

&lt;p&gt;Strong programmers don't take facts for granted. They ask the questions "why is this so?" It's great if there is a colleague who has an answer, but their absence does not stop a strong programmer, who is driven by curiosity.&lt;/p&gt;

&lt;p&gt;Curiosity leads deeper. If something doesn’t work as you expect, or you’re just wondering how this or that function works, you look into its source code, then get deeper, even further from the application layer, descending to the level below. This knowledge gives an outlook to help solve complex problems.&lt;/p&gt;

&lt;p&gt;It's important to be proficient in patterns. This is how Anton Kireev from Avito explains it.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Programming is like playing chess. You cannot sit down and start playing chess by learning only how the pieces move. Of course, there will be people who can do this, but in most cases these are the people who can multiply huge numbers in their minds but cannot even put their pants on without help. The funny thing is, chess is patterns that your brain won't see at first. That is why it is recommended to start with small drills rather than the full game for the first year, so that the current state of a game seeps into your subconscious, and moves become reflexes. Then you can engage in strategy with ease. Without practice, neural connections will not develop in the brain, and you will not be able to freely see and apply patterns to the task that you are facing and to the code that you see."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Strong programmers prioritize business, not code, and this changes the way they approach problem-solving and technology choices.&lt;/p&gt;

&lt;p&gt;Moving from an engineering mindset to a product one is a step to become more efficient. We must put business at the forefront, explains Ruslan Torobaev from ok.ru.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Choose effective solutions. Even if they are not always the best, they are faster to make and easier to throw away” - Ruslan Torobaev&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;When developing large products, you often have to throw away your work. Development through experiments and small steps helps to negate this problem.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Experiment more - go in small steps” - Ruslan Torobaev&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A frequent piece of advice from strong programmers is not to get hooked on “hype” technologies if you are a product programmer. New technologies with exciting success stories are often the same: “they took top-end hardware, new technology, and got a dizzying result”.&lt;/p&gt;

&lt;p&gt;The stories of failures are much more interesting, says Ruslan, as they allow you to find out where the technology cannot be applied, in which cases it does not solve the problem, and what bugs it has.&lt;/p&gt;

&lt;p&gt;Strong programmers are pragmatic. You don't always need an elegant solution, written about in books or talked about at conferences.&lt;/p&gt;

&lt;p&gt;From Ruslan's experience, it often happens that a prototype that gets to production will work unchanged for many months.&lt;/p&gt;

&lt;p&gt;At the start of his career, Vlad Popov, an architect from Kinaxis, spent two years using a PHP script with one class of 25 lines as a backend for Flash projects.&lt;/p&gt;

&lt;p&gt;Strong programmers are distinguished by the ability to solve situations that block progress on a task. They are not afraid to ask colleagues questions and ask for help.&lt;/p&gt;

&lt;p&gt;Ruslan says that psychological moments play a big role.&lt;/p&gt;

&lt;p&gt;Personal life problems immediately lead to a drawdown at work. Therefore, balance in life outside of work is as important to a career as the work itself.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;[My thoughts] Health, relationships and financial security are the foundation for everything else.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Another point in psychology is that strong programmers are not afraid to change someone else's code. This is often the case when a programmer starts working on a new project.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Don't be afraid to change someone else's code." - Ruslan Torobaev&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You have to understand that the code was written before you, by programmers like you who were solving a local problem, and had local knowledge about the system and the product.&lt;/p&gt;

&lt;p&gt;Self-confidence is another psychological trait of a strong programmer that has helped Vlad.&lt;/p&gt;

&lt;p&gt;When you are sure that you are a strong programmer, regardless of experience, it helps in interviews, communication, writing code and commenting in code reviews.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;[My thoughts] I have moments when I doubt whether I made the right decision. Such doubts use up a lot of "mental fuel", which we have in limited quantities for the day.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Write projects to gain confidence. Lots of projects. Build your portfolio and make it public. What was a few nights of programming for you will result in a "wow, did you write this?" response. This is the effect of public portfolios.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;[My thoughts] I got into my first serious company thanks to a portfolio of one project.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Six out of eleven programmers who gave answers for this article have a noticeable modesty (in my opinion).&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I developed the habit of considering myself as not being smarter than the rest, so there were a lot of people who could correct me. It doesn't matter if it’s a junior developer or Linus Torvalds. Anyone can teach me something." - Anton Kireev&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Despite being well paid, it is not programmers who bring money into the business.  The fact that you get paid more than many of your colleagues can lead to arrogance. This could cause problems, Ruslan warns. Arrogance only gets in the way.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;[My thoughts] We don't make money personally, but we could lose $460 million in 45 minutes. Here is the story of how the largest US stock trader went bankrupt due to a &lt;a href="https://dougseven.com/2014/04/17/knightmare-a-devops-cautionary-tale/"&gt;dead piece of code&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;All of the above is brought together by a love for what you do and the desire to not work alone.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the path to becoming a strong programmer?
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;“Do what you love, love what you do” - common sense&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;[My thoughts] Below are many ways to grow into a strong programmer. Some advice will be contradictory, and that's okay. There is no single approach. Everyone has their own path. It’s important to choose the one that you will enjoy.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Work in the field of information technology (IT) is a constant race for knowledge. The systems that we as programmers most often work on tend to become more complex, with growing layers of abstraction over abstractions, and the integration of everything with everything else. Solving problems in such an industry always requires more knowledge than you have now. You are constantly learning something new.&lt;/p&gt;

&lt;h3&gt;
  
  
  Searching for imposter syndrome
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;“If you're the smartest person in the room, you're in the wrong room” – Confucius&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Your goal is to get into a strong team. When you find yourself in a strong environment, it motivates you to rise to the level of the environment.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;[My thoughts] Considering joining a company with a strong engineering team is a good way to find your next job.&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Seek to work with people who know more than you in any area, watch how they work and learn.” - Dmitry Fedorenko&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Try to work at the best company you can find. If you can't do that, practice and get really strong with fundamental concepts. There are many resources these days such as online courses, YouTube and open -source projects. [More about self-development is included later.]&lt;/p&gt;

&lt;p&gt;Avoid teams and companies with a toxic atmosphere. It is hard to learn and grow in such environments.&lt;/p&gt;

&lt;p&gt;If you don’t feel that you are constantly learning, then it's time to think about changing your project or employer. If you do not grow, it hurts you and your colleagues.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“New environments equal new knowledge” - Ruslan Torobaev&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Feedback is a requirement for personal growth. It's harder to grow without feedback. If you don't receive feedback, ask for it.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;[My Thoughts] 1:1 is an indispensable tool for sharing feedback both from leadership roles to developers and from developers to leadership roles.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A lot of time will have to be spent on training and if you don’t enjoy the process it will feel like really hard work.&lt;/p&gt;

&lt;p&gt;If you are interested in programming and you are ready to spend weekends and evenings on it, doing something for fun or coding for free, then most likely you will turn out to be a good programmer. And vice versa - rarely do those who sit at work from 9 to 5 and don’t practice outside of it as a hobby become top or even average specialists.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“It is difficult to be successful in IT if you come there for money and hype. It must be a calling." - Dmitry Fedorenko&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A good place to start is a position of a web developer in a web studio. This is often а place where the juices are squeezed out of you, but they take junior developers with basic skills, teach them, give them a range of experience, and build in them a habit of finishing their tasks within estimated time.  These are all important skills.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Simple question - will you program if you won’t get paid for it? If not, then my path is not for you" - Dmitry Fedorenko&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Choosing a company is difficult. Getting a job in a “top” company is a lottery. You can end up in the wrong project, or with the wrong leader, or a weak team.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;[My thoughts] It's a little easier in smaller companies, especially with international ones. Through &lt;a href="https://glassdoor.com"&gt;glassdoor.com&lt;/a&gt; and &lt;a href="https://www.teamblind.com/company"&gt;teamblind.com/company&lt;/a&gt;, you can read reviews from former and current employees. Let me emphasize again that this approach does not work for large companies. But if you can find contacts of current employees and communicate in an informal setting, you could find out if the company has what you are looking for.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Where there are challenging tasks, there are strong teammates
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;“No pressure, no diamonds.” – Thomas Carlyle&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Start participating in large, technically complex (not to be confused with logically complex) projects and / or participate in internship programs for “top” tech companies as early as possible.&lt;/p&gt;

&lt;p&gt;The path to strong programmers is through challenging tasks. This is often the complement to strong colleagues. Where difficult tasks exist, there are strong colleagues.&lt;/p&gt;

&lt;p&gt;An ideal situation would be to get yourself into a strong team where you can be mentored and have help available in case of difficult problems.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;[My Thoughts] I noticed how much my colleagues and I grew when we were working to tight deadlines on a challenging task. Those times when you have no choice but to learn how to solve a problem at hand here and now. At such moments, you really turn on to the fullest. And when the task is completed, you feel that you are head and shoulders above who you were yesterday.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Look for projects and challenges, and get out of your comfort zone if you feel like doing routine tasks all the time. If you cannot find challenging tasks - change your project or team. Changing jobs is another way to get out of your comfort zone and into a place of growth.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;[My thoughts] Don't expect every task to be challenging and interesting. Routine will be necessary. It is within your power to make the task more interesting. For example you can hone your skills like an athlete to get your routines faster and better, or automate a routine task and learn something.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Follow your interests. Choose a company where working on the product will be super interesting for you and focus more on the industry or domain and less on the technologies.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;[My Thoughts] In the long run, an interesting job may be more important than a pay rise now&lt;/em&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Self-development
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;“Without great teammates, it is difficult to engage in self-development” - Ruslan Torobaev&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can find smart people outside of the workplace.&lt;/p&gt;

&lt;p&gt;Open-source is the most accessible source of the very best programmers who will “show” their code, their tricks and give feedback on your code. It is impossible not to use this opportunity in the absence of strong colleagues. Open-source is a source of knowledge and new acquaintances.&lt;/p&gt;

&lt;p&gt;Read a lot of code. Open the library you are using and just read it through.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Every solution is a pattern that I have been solving for eleven years, and which has been replenished with knowledge on questions like "how Google works", how this works, how that works." - Anton Kireev&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Vlad Popov discusses a common threat, modern programmers writing non-idiomatic code that does not match the libraries used in the project. Take a look inside the libraries you are using, figure out how they are written and use this knowledge to write better code.&lt;/p&gt;

&lt;p&gt;Vlad believes that he has been helped by the habit of trying all experimental technologies as soon as they appear. That way you can become an experienced specialist in successful technology.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;[My thoughts] He was one of those who stoked up for Node.JS even before the first version, and used Vue.js in production seven years ago, when the framework was not yet so popular. Now he is an expert in both.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;On the other hand Denis Bazhenov believes that it is necessary to keep the size of the stack small, not letting it grow. Don't chase every technology that is popular today. Use the time that frees up to study your stack in depth.&lt;/p&gt;

&lt;p&gt;It’s often the case that “top” companies require deep knowledge of the language and platform, whereas novice programmers often study frameworks and libraries.&lt;/p&gt;

&lt;p&gt;Anton Kireev laid out the idea of ​​teaching programming by copying others in comparison with learning to play the guitar as follows.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“You can watch tabs [tablature - chord notation for guitarists] of other people's cool songs, like the code of cool programmers, and extract patterns by repeating them in your work. But by repeating "songs" of other performers you will not learn to play a Spanish piece. To play something like that, you need someone to teach you how to sit, the correct position of the hands, the correct clamp. Why is it important? Because with the right technique, you will get a better sound and fatigue less.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Sources of self-development by Vadim Tsesko, developer from odnoklasniki.ru:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  reading academic articles&lt;/li&gt;
&lt;li&gt;  tech books&lt;/li&gt;
&lt;li&gt;  conference talks&lt;/li&gt;
&lt;li&gt;  participation in regular meetups and user groups&lt;/li&gt;
&lt;li&gt;  online courses&lt;/li&gt;
&lt;li&gt;  open-source projects, bugs / features, code review&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Do not rely on learning only through courses and books. They will not help you go beyond the scope of the studied stack to the OS and network, where problems most often arise.&lt;/p&gt;

&lt;p&gt;George Hotz, the developer of iOS jailbreaks and founder of vehicle automation machine learning project &lt;a href="https://github.com/commaai/openpilot"&gt;comma.ai&lt;/a&gt; said &lt;a href="https://www.youtube.com/watch?v=NjYICpXJ03M"&gt;“you never learn to program by watching a video called “learn programming”&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Books that will reveal to you the "secret of the whole world" do not exist. All the books I've read give me a maximum of 60% of the information I have." - Anton Kireev&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;[My thoughts] The rest is derived from personal experience and the experience of colleagues.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Anton Kireev recommends the &lt;a href="https://duckduckgo.com/?q=Andrew+Tanenbaum+books"&gt;books of Andrew Tanenbaum&lt;/a&gt; for development deep into the technological stack.&lt;/p&gt;

&lt;p&gt;Reading documentation is another source of knowledge. There you can find information about how things work.&lt;/p&gt;

&lt;p&gt;leetcode.com is the most recommended resource to get better at the basics of computer science.&lt;/p&gt;

&lt;p&gt;Ruslan agrees that self-development is possible, but believes that a university will be a better choice. Programming requires a good foundation: higher mathematics, combinatorics, algebra, operating systems, networks, and knowledge of hardware. Without formal education it is more difficult to get this knowledge. Although it won’t stop you creating websites, this lack of knowledge will be a limiting factor.&lt;/p&gt;

&lt;p&gt;Popov advises looking at features of new programming languages, which take into account the problems faced by previous generations of programmers.&lt;/p&gt;

&lt;p&gt;To learn something new, you need to choose a programming language that will unsettle you, shares Bazhenov. It should be completely different from what you use on a daily basis. This approach will expand your arsenal.&lt;/p&gt;

&lt;p&gt;It is equally important for growth to be open to criticism, considers one of the Facebook programmers.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;[My Thoughts] The hardest part of the previous tip is to really pay attention to how you feel when you receive criticism, and make sure that your wounded pride does not cause you to shut yourself off from criticism. At this moment, the brain does not work rationally and you are playing defense. Learning to catch such moments and take advice is another important soft skill. One of my tools for introspection is to write a “day review” in my diary just before bed. I’ve picked up this tool from Stoic, philosopher, and Roman statesman Lucius Seneca.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Denis Bazhenov sees a big plus when programmers know about system administration and advises reading &lt;a href="http://www.brendangregg.com/linuxperf.html"&gt;the Linux Performance blog&lt;/a&gt; by Netflix Senior Performance Architect Brendan Gregg.&lt;/p&gt;

&lt;p&gt;For Java developers, Ruslan Torobaev advises an excellent resource: &lt;a href="https://shipilev.net/"&gt;shipilev.net&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pet projects
&lt;/h3&gt;

&lt;p&gt;Denis Bazhenov believes that he was greatly helped by building a chat project for a university on which he worked with Dmitry Fedorenko.&lt;/p&gt;

&lt;p&gt;It was often noted that it is better to work with someone on pet projects rather than alone. It is difficult to work on long projects as a single person. You will inevitably get bored at some point, and your enthusiasm may fizzle out. This happens less often when working in a team.&lt;/p&gt;

&lt;p&gt;Vlad Popov undertook any proposal he was offered to work on projects. He never said no to a work opportunity, and was involved in many projects for no money at all, just for experience, interest, references and acquaintances.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I constantly had a bunch of projects at the same time. I was hungry for them.” - Vlad Popov&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;[My thoughts] Four years ago we worked together on a project and he was looking for a library to solve a problem. “Dima, look” he said, “well written… that is clever… it’s cool too… hmm here I would write differently, but fine… I wonder who the author is?” He opens the project's config file, scrolls down and sees that he is the author.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Working on various projects helped Vlad to master his tech stack. Start 25 projects from scratch and you will make this process seamless!&lt;/p&gt;

&lt;p&gt;Vadim Tsesko advises that you write - just for fun - your own implementation of various layers of the technological stack: boot file, kernel, network, data structures, library and framework. This will give a better understanding of the entire stack that programmers rely on every day.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mentorship
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;“When the student is ready the teacher will appear. When the student is truly ready... the teacher will disappear.” – Tao Te Ching&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A mentor can turn years of self-study into weeks, or months into days.&lt;/p&gt;

&lt;p&gt;Vlad Popov didn't get the knowledge he wanted at a university. Instead, he went to study with a person who knew the technology he was interested in better than anyone else in his country. Denis Muraviev conducted an intensive course "Advanced Flash Programming", where after a few days, designers were able to write ActionScript code [a relative of ECMAScript].&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“When they explained to me what classes are, I didn’t understand why they were needed, when you can write procedures instead” - Vlad Popov&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Follow the coolest developers on Github and Twitter, and the Core developers in your stack.&lt;/p&gt;

&lt;p&gt;Their examples of how to write good code will inspire you to keep growing and find extra time for your hobbies, to keep you moving forward.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;[My Thoughts] The mentor need not necessarily know that they are your mentor. By reading their blog, Twitter, listening to podcasts and watching screencasts and videos on YouTube, you can learn a lot from the programmer. Vova Popov and I took over the previously popular TextMate editor and learned how to develop on the Ruby on Rails framework. Choose two or three of the strongest in your field, and read everything that they publish.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Denis Bazhenov himself is a mentor for young teammates. He shared what to look for when choosing a mentor:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Make a preference for highly specialized ones who have been digging into their topic for a long time&lt;/li&gt;
&lt;li&gt;  Avoid people who are critical in their thinking&lt;/li&gt;
&lt;li&gt;  Choose someone who can talk not just about the pros but also the cons of the technology you want to learn&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;How can you be a good student for a mentor:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Don't be indifferent, you should display an interest&lt;/li&gt;
&lt;li&gt;  Doing anything outside 9 to 5 job, like open source, a pet project, or writing a blog&lt;/li&gt;
&lt;li&gt;  Work on being more open to other people’s ideas &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What if you're just starting out?
&lt;/h3&gt;

&lt;p&gt;Novice programmers should get hands-on programming as much as possible. They should be able to follow the leader.&lt;/p&gt;

&lt;p&gt;The goal is to be as useful as possible without constant questions and be able to solve a well-posed problem on your own.&lt;/p&gt;

&lt;p&gt;The next step is to broaden your horizons. Code review, git, debugging, DevOps, problem solving [read about problem solving below]. Developing these domains will allow you to become self-sufficient.&lt;/p&gt;

&lt;p&gt;What can help beginner programmers to realize their potential?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Internship in teams with challenging tasks and experienced colleagues&lt;/li&gt;
&lt;li&gt;  Drive&lt;/li&gt;
&lt;li&gt;  Having their own ideas&lt;/li&gt;
&lt;li&gt;  Open to criticism&lt;/li&gt;
&lt;li&gt;  Ability to be led&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  How to find time for all this?
&lt;/h3&gt;

&lt;p&gt;Nobody cancels the hard work.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“The threshold for entering programming and IT in general is high. You need to work hard for five to ten years to become an average specialist. We must make sure we plan regular “sweatshops” for ourselves.”- Dmitry Fedorenko&lt;/p&gt;

&lt;p&gt;“Direct all free time to self-development” - Vadim Tsesko&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Many have families and children. How to find time for at least some of the above?&lt;/p&gt;

&lt;p&gt;The main secret is a strong inner desire. Do what you love, love what you do. You will always find time for something that makes you happy.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I don’t know - it just happens!” - Anton Kireev&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The tools of strong programmers
&lt;/h2&gt;

&lt;p&gt;Dmitry Fedorenko uses &lt;a href="https://en.wikipedia.org/wiki/Getting_Things_Done"&gt;the “Getting Things Done” practice&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Invest time in learning how to use debuggers. Debuggers are very helpful in quickly understanding what's going wrong. This will help in resolving bugs and in development when the code stops working the way you want it to.&lt;/p&gt;

&lt;p&gt;Analytical debugging [the term is not mine, but from developers at JetBrains] is a way to ditch debuggers and think about what went wrong. The advantage of this approach is that you are more likely to find the sources of the problem rather than its symptoms. You have a growing general understanding of the project, and you can find accompanying bugs. The disadvantage of analytical debugging is that it is many times slower than using debuggers.&lt;/p&gt;

&lt;p&gt;OS debugging tools that Denis Bazhenov uses include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  strace&lt;/li&gt;
&lt;li&gt;  ltrace&lt;/li&gt;
&lt;li&gt;  pidstat&lt;/li&gt;
&lt;li&gt;  tcpdump&lt;/li&gt;
&lt;li&gt;  linux sar&lt;/li&gt;
&lt;li&gt;  lsof&lt;/li&gt;
&lt;li&gt;  vmstat&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The advantage of these diagnostic tools is that they allow you to understand what is happening with the application, regardless of what language the application is written in.&lt;/p&gt;

&lt;h2&gt;
  
  
  Solve problems like a PRO
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;“The problems are all different, but they all boil down to the same tasks” - a programmer from JetBrains&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There are no secrets in solving problems. Use decision theory and standard problem-solving approaches.&lt;/p&gt;

&lt;p&gt;Notice patterns. The faster you identify them, the faster you will be able to solve problems.&lt;/p&gt;

&lt;p&gt;The best approach to problem-solving is treating it as an optimization problem with some pretty tricky boundary conditions. Therefore, the most difficult part of this process is to choose the best solution.&lt;/p&gt;

&lt;p&gt;Do not blindly believe the description of the problem. Before solving it, you need to understand it well. Find out exactly who needs it and why. This requires asking questions. In a third of cases, the task may disappear altogether, and in another third it may change greatly.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;- Dmitry, make a green button here.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;- No, first describe what problem you have? Why do you want a button? What will happen if we don’t do this?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This approach saves a great deal of energy. Often, before starting work, it turns out that you do not need a button, but a link, or text on the page, or you do not need to do anything at all. Better to spend time on conversation first, and then programming.&lt;/p&gt;

&lt;p&gt;“Lack of requirements is a constant problem that I face.” - Dmitry Fedorenko&lt;/p&gt;

&lt;p&gt;Break down complex problems into small manageable chunks, the details of which can easily fit in your head, and which you can complete in four hours.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Small libraries are more useful than one big one. An ideal library is a library that you can write in four hours and forget about." - Vlad Popov&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Big tasks take hours to dive into every time you start working on them. Avoid context switching - small tasks help with this.&lt;/p&gt;

&lt;p&gt;Try to use &lt;a href="https://fs.blog/2018/04/first-principles/"&gt;first principles&lt;/a&gt; and think of the best way to solve a problem apart from constraints. Consider trade-offs between different solutions and bias towards simplicity.&lt;/p&gt;

&lt;p&gt;Aim to assemble a minimum working prototype. Do not worry about quality or using the best tools like databases, queues, etc. Do it in a short time frame to see how the feature works and get feedback on it from users.&lt;/p&gt;

&lt;p&gt;Look for the shortest path to a solution.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“When I was inexperienced, I wanted to do everything in the best possible way, and I would start out wanting to "build a bridge” thoroughly from one end to the other [implement full functionality first time around] But over time, I realized that such bridges end up in the wrong place. Therefore, with experience, I first "tread the path", making at least a working prototype, then, when (and if) this stuff somehow works, I begin to put meat on the bones [iterate towards a fuller functionality]. ." - a programmer from ok.ru&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;[My thoughts] When you have a ready-made good-enough solution, the deadlines are no longer pressing on you. Here you can make a decision to improve something, get feedback on the code, or save time for another task. Trying to make it sleek right away, I often ended up missing a deadline.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Consider the requirements and resources that you have. Some tasks require immersion in the subject area, while others are a waste of time.&lt;/p&gt;

&lt;p&gt;Using analytics is useful for business, monitoring, debugging.&lt;/p&gt;

&lt;p&gt;When you don't know how to solve a problem, make the simplest solution possible. Up to &lt;code&gt;if a = some_value then return expected_result&lt;/code&gt;. You just need to start, and once you’ve solved the simplest case, select the next requirement and repeat, then continue like this.&lt;/p&gt;

&lt;p&gt;Often tasks that you do not know how to solve are obviously solvable. The solution for them comes from an intensive search on the internet. The downside of this approach is that it takes a lot of time, days and weeks.&lt;/p&gt;

&lt;p&gt;Tasks that you can’t solve now can be postponed for a couple of hours or until tomorrow. Fall asleep with a difficult task in mind - often the idea comes in the morning!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;[My thoughts] This is due to the fact that our brain works in two modes, focused and diffused. Focused mode allows us to keep more complex details in our head. It's more about depth of knowledge. Whereas the diffuse mode is a creative work mode using the full breadth of our knowledge. New ideas come in diffuse mode, in which the brain works in the background. This explains the belief that ideas come in the shower.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A detailed breakdown of the approach to problem solving was shared by Vadim Tsesko:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Collection of all requirements, immersion in the domain&lt;/li&gt;
&lt;li&gt;Thorough documentation (design doc) for subsequent retrospection of maintenance and development of the system&lt;/li&gt;
&lt;li&gt;Search and communication with colleagues with relevant experience in order to collect an exhaustive set of alternatives&lt;/li&gt;
&lt;li&gt;Study of existing solutions in the market, read relevant academic articles &lt;/li&gt;
&lt;li&gt;Analysis of the advantages and disadvantages of each of the solution options, choice of solution&lt;/li&gt;
&lt;li&gt;Iterative design review and gathering opinions from more experienced colleagues&lt;/li&gt;
&lt;li&gt;Important: so as not to become isolated and get stuck, proactively collect opinions, be open and tolerant of criticism, honestly weigh the pros and cons, and make decisions in an evidenced-based manner.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Tips from Denis Bazhenov:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Conceptualize the task in terms of technical and business constraints, and under what conditions a solution will not work&lt;/li&gt;
&lt;li&gt;  If the task is not demanding of resources, then develop a prototype through automated testing. It is easier to form a design and any flaws can be spotted earlier.&lt;/li&gt;
&lt;li&gt;  If the task is technically complex or related to distributed systems, it is important to analyze what can fail, what steps need to be taken to make the system diagnosable, what we will do if parts of the system start to fail, how to eliminate failures and how to be on the safe side, for example collect special logs.&lt;/li&gt;
&lt;li&gt;  When everything fits together then it comes to the programming, and an understanding should be reached of what modules the system should be divided into, and how to organize work.&lt;/li&gt;
&lt;li&gt;  Consider making a prototype (maybe even without programming)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Advice on how to implement the decisions from by Ruslan Torobaev:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Write unit tests if the task is large and it is not possible to keep all of its parts in your head.&lt;/li&gt;
&lt;li&gt;  Use specialized logs for integration code. It’s not possible to cover everything with tests in integrations.&lt;/li&gt;
&lt;li&gt;  For small components, test-driven development is useful. It helps to find flaws in the interface. If the component cannot be tested, you immediately understand that you need to change the interface.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is important to be able to solve blocks while working on a task. Here’s how to approach it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Use internal knowledge base or documentation or external product documentation&lt;/li&gt;
&lt;li&gt;Get help from colleagues&lt;/li&gt;
&lt;li&gt;StackOverflow, Slack community channels, Discord, user groups, issues in a library or product repository, product channels.&lt;/li&gt;
&lt;li&gt;Look into the source code. For third party products you can fetch a Docker image, start debugging with breakpoints and see how the product works from the inside. Do this simultaneously with the first three actions!&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  More to come…
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;“Art is never finished, only abandoned.” — Leonardo da Vinci&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;By the time I came to publish this article, I had even more programmers on my list to talk to than when I started this project.&lt;/p&gt;

&lt;p&gt;This page will be updated over time.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://gift.dmitryshvetsov.com/tbpm-newsletter"&gt;Subscribe to my newsletter now&lt;/a&gt; to find out when there will be more nuggets of wisdom and easy-to-forget simple rules added.&lt;/p&gt;

&lt;h2 id="bottom"&gt;Heroes of this article&lt;/h2&gt;

&lt;p&gt;Many thanks to these people for their answers and for the great chat!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Anton Kireev, programmer at Avito&lt;/li&gt;
&lt;li&gt;  Denis Bazhenov, tech lead at Farpost&lt;/li&gt;
&lt;li&gt;  Dmitry Fedorenko, CTO at 100sp.ru&lt;/li&gt;
&lt;li&gt;  Roman Dmitrienko, team lead at drom.ru&lt;/li&gt;
&lt;li&gt;  Ruslan Torobaev, team lead, at ok.ru&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://incubos.org/contacts/"&gt;Vadim Tsesko&lt;/a&gt;, programmer at &lt;a href="https://oktech.ru/"&gt;ok.ru&lt;/a&gt; and educator&lt;/li&gt;
&lt;li&gt;  Vlad Popov, architect at Kinaxis&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And those who asked to remain anonymous:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  a programmer from Facebook&lt;/li&gt;
&lt;li&gt;  an ex. Amazon, ex. Microsoft programmer&lt;/li&gt;
&lt;li&gt;  a programmer from JetBrains&lt;/li&gt;
&lt;li&gt;  a programmer from ok.ru&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;a href="https://twitter.com/search?q=https%3A%2F%2Fdmitryshvetsov.com%2Ftools-of-strong-programmers"&gt;Discuss on Twitter&lt;/a&gt;, &lt;a href="https://news.ycombinator.com/item?id=26582361"&gt;Hacker News&lt;/a&gt;, and &lt;a href="https://www.reddit.com/search/?q=url%3Admitryshvetsov.com%2Ftools-of-strong-programmers"&gt;Reddit&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>productivity</category>
      <category>career</category>
      <category>learning</category>
    </item>
    <item>
      <title>Interview with Vladimir Dementyev, author of `anycable` and `ruby-next`</title>
      <dc:creator>Dmitry Shvetsov</dc:creator>
      <pubDate>Tue, 16 Jun 2020 06:07:53 +0000</pubDate>
      <link>https://forem.com/dmshvetsov/interview-with-vladimir-dementyev-author-of-anycable-and-ruby-next-2o7</link>
      <guid>https://forem.com/dmshvetsov/interview-with-vladimir-dementyev-author-of-anycable-and-ruby-next-2o7</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/IogvPeyLWxA"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Interview with Vladimir Dementyev, author of many Ruby open-source projects, conference speaker, and member of Evil Martians.&lt;/p&gt;


&lt;div class="ltag__user ltag__user__id__48217"&gt;
  
    .ltag__user__id__48217 .follow-action-button {
      background-color: #D7DEE2 !important;
      color: #FFFFFF !important;
      border-color: #D7DEE2 !important;
    }
  
    &lt;a href="/palkan_tula" class="ltag__user__link profile-image-link"&gt;
      &lt;div class="ltag__user__pic"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nT6mAN_f--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--2KOdJPra--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/48217/7985e690-6765-41f5-ad5a-74c44393c25c.jpg" alt="palkan_tula image"&gt;
      &lt;/div&gt;
    &lt;/a&gt;
  &lt;div class="ltag__user__content"&gt;
    &lt;h2&gt;
&lt;a class="ltag__user__link" href="/palkan_tula"&gt;Vladimir Dementyev&lt;/a&gt;Follow
&lt;/h2&gt;
    &lt;div class="ltag__user__summary"&gt;
      &lt;a class="ltag__user__link" href="/palkan_tula"&gt;A mathematician found his happiness in programming Ruby and Erlang, contributing to open source and being an Evil Martian.&lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;





&lt;p&gt;This is the second video interview with exceptional developers where we speak about programming wisdom and how we can become better in our craftsmanship.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=IogvPeyLWxA&amp;amp;list=PLAqVLnEIlSbtkqdEcSc5YIIQoHJ36WiAe"&gt;Watch more videos&lt;/a&gt;&lt;/p&gt;

</description>
      <category>video</category>
      <category>ruby</category>
      <category>betterprogrammer</category>
    </item>
    <item>
      <title>[Interview] Daragh Byrne – Debugging Coding Minds</title>
      <dc:creator>Dmitry Shvetsov</dc:creator>
      <pubDate>Sat, 13 Jun 2020 06:31:06 +0000</pubDate>
      <link>https://forem.com/dmshvetsov/interview-daragh-byrne-debugging-coding-minds-1131</link>
      <guid>https://forem.com/dmshvetsov/interview-daragh-byrne-debugging-coding-minds-1131</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/L27BWy5HPB4"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Interview with Daragh Byrne on how to become a better developer and how meditation and mindfulness can help. Interview with Delivery Lead (Tech) and Meditation Teacher at &lt;a href="https://codingmindfully.com/"&gt;https://codingmindfully.com/&lt;/a&gt;.&lt;/p&gt;


&lt;div class="ltag__user ltag__user__id__"&gt;
  
    .ltag__user__id__ .follow-action-button {
      background-color: #19063A !important;
      color: #DCE9F3 !important;
      border-color: #19063A !important;
    }
  
    &lt;div class="ltag__user__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--b_Q_OnuL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--diPD5F8K--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://thepracticaldev.s3.amazonaws.com/i/99mvlsfu5tfj9m7ku25d.png" alt="[deleted user] image"&gt;
    &lt;/div&gt;
  &lt;div class="ltag__user__content"&gt;
    &lt;h2&gt;[Deleted User]&lt;/h2&gt;
    &lt;div class="ltag__user__summary"&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;





&lt;p&gt;This is the first video interview with exceptional developers where we speak about programming wisdom and how we can become better in our craftmanship.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=IogvPeyLWxA&amp;amp;list=PLAqVLnEIlSbtkqdEcSc5YIIQoHJ36WiAe"&gt;Watch more videos&lt;/a&gt;&lt;/p&gt;

</description>
      <category>video</category>
      <category>interview</category>
      <category>betterprogrammer</category>
    </item>
    <item>
      <title>Essential Books That Every Programmer Should Read—Lists by Andy Hunt, Eric Freeman, and Cory Althoff</title>
      <dc:creator>Dmitry Shvetsov</dc:creator>
      <pubDate>Wed, 10 Jun 2020 12:00:41 +0000</pubDate>
      <link>https://forem.com/dmshvetsov/essential-books-that-every-programmer-should-read-lists-by-andy-hunt-eric-freeman-and-cory-althoff-3k1e</link>
      <guid>https://forem.com/dmshvetsov/essential-books-that-every-programmer-should-read-lists-by-andy-hunt-eric-freeman-and-cory-althoff-3k1e</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Good books are worth re-reading. Great books are worth re-buying.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;― Naval Ravikant, investor, co-founder, chairman and former CEO of AngelList&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I’ve been asking experienced programmers, technical authors, computer science professors, and lecturers to recommend essential books for programmers. This is part 2 of the series, with book recommendations from Andy Hunt, Eric Freeman, and Cory Althof.&lt;/p&gt;

&lt;p&gt;For book recommendations from Kent Beck, Uncle Bob Martin, David Heinemeier Hanson, Jeff Atwood, and Bozhidar Batsov, read &lt;a href="https://iamdi.dev/essential-books-that-every-programmer-should-read/" rel="noopener noreferrer"&gt;the first part of the series&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Photo by &lt;a href="https://unsplash.com/@brookecagle?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Brooke Cagle&lt;/a&gt; on Unsplash&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;I reached out to &lt;a href="https://twitter.com/PragmaticAndy" rel="noopener noreferrer"&gt;Andy Hunt&lt;/a&gt; to share his list of essential books for programmers. He recommended books more angled toward programming leadership:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Pragmatic-Programmer-journey-mastery-Anniversary/dp/0135957052/ref=tmm_hrd_swatch_0?_encoding=UTF8&amp;amp;qid=1591789378&amp;amp;sr=8-1" rel="noopener noreferrer"&gt;The Pragmatic Programmer: your journey to mastery, 20th Anniversary Edition&lt;/a&gt; by David Thomas and Andrew Hunt. &lt;em&gt;“Topics range from personal responsibility and career development to architectural techniques for keeping your code flexible and easy to adapt and reuse.”&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Pragmatic-Thinking-Learning-Refactor-Programmers-ebook/dp/B00A32NYYE/ref=sr_1_1?dchild=1&amp;amp;keywords=Pragmatic+Thinking+%26+Learning&amp;amp;qid=1591789404&amp;amp;sr=8-1" rel="noopener noreferrer"&gt;Pragmatic Thinking &amp;amp; Learning: Refactor Your Wetware&lt;/a&gt; by Andrew Hunt. &lt;em&gt;“Learn new tricks and tips to learn more, faster, and retain more of what you learn.”&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Accelerate-Software-Performing-Technology-Organizations-ebook/dp/B07B9F83WM/ref=sr_1_1?dchild=1&amp;amp;keywords=Accelerate%3A+The+Science+of+Lean+Software+and+DevOps&amp;amp;qid=1591789480&amp;amp;sr=8-1" rel="noopener noreferrer"&gt;Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations&lt;/a&gt; by Nicole Forsgren PhD, Jez Humble, Gene Kim. &lt;em&gt;“Readers will discover how to measure the performance of their teams, and what capabilities they should invest in to drive higher performance. This book is ideal for management at every level.”&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Extreme-Ownership-U-S-Navy-SEALs/dp/1250183863/ref=tmm_hrd_swatch_0?_encoding=UTF8&amp;amp;qid=1591789547&amp;amp;sr=8-1" rel="noopener noreferrer"&gt;Extreme Ownership&lt;/a&gt; by Jocko Willink, Leif Babin.&lt;em&gt;“Two U.S. Navy SEAL officers who led the most highly decorated special operations unit of the Iraq War demonstrate how to apply powerful leadership principles from the battlefield to business and life.”&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Fearless-Organization-Psychological-Workplace-Innovation/dp/1119477247/ref=sr_1_1?dchild=1&amp;amp;keywords=The+Fearless+Organization&amp;amp;qid=1591789591&amp;amp;sr=8-1" rel="noopener noreferrer"&gt;The Fearless Organization: Creating Psychological Safety in the Workplace for Learning, Innovation, and Growth&lt;/a&gt; by Amy C. Edmondson. &lt;em&gt;“Explore the link between psychological safety and high performance; Create a culture where it’s “safe” to express ideas, ask questions, and admit mistakes; Nurture the level of engagement and candor required in today’s knowledge economy; Follow a step-by-step framework for establishing psychological safety in your team or organization.”&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Andy Hunt is a programmer, consultant, and author of ten books, including one of the most recommended books for programmers, &lt;em&gt;The Pragmatic Programmer&lt;/em&gt;. He was one of the 17 original authors of the Agile Manifesto and founders of the Agile Alliance. He is also the publisher and co-founder of the Pragmatic Bookshelf series for software developers.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://twitter.com/erictfree" rel="noopener noreferrer"&gt;Eric Freeman&lt;/a&gt; shared his view on essential books for programmers in &lt;a href="https://twitter.com/erictfree/status/1247955761659031556?s=20" rel="noopener noreferrer"&gt;this tweet&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/dp/0262560992/ref=sr_1_1?dchild=1&amp;amp;keywords=The+Little+Schemer&amp;amp;qid=1591789653&amp;amp;sr=8-1" rel="noopener noreferrer"&gt;The Little Schemer&lt;/a&gt; by Daniel P. Friedman, Matthias Felleisen, Duane Bibby, Gerald J. Sussman. &lt;em&gt;“The Little Schemer introduces computing as an extension of arithmetic and algebra; things that everyone studies in grade school and high school. It introduces programs as recursive functions and briefly discusses the limits of what computers can do. The authors use the programming language Scheme, and interesting foods to illustrate these abstract ideas.”&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Structure-Interpretation-Computer-Programs-Engineering/dp/0262510871/ref=sr_1_1?dchild=1&amp;amp;keywords=The+Structure+%26+Interpretation+of+Computer+Programs&amp;amp;qid=1591789674&amp;amp;sr=8-1" rel="noopener noreferrer"&gt;The Structure &amp;amp; Interpretation of Computer Programs&lt;/a&gt; by Harold Abelson, Gerald Jay Sussman. &lt;em&gt;“[This book] has had a dramatic impact on computer science curricula over the past decade”.&lt;/em&gt; This book is based on the course that the authors have taught at the Massachusetts Institute of Technology (MIT).&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/How-Design-Programs-Introduction-Programming/dp/0262534800/ref=sr_1_1?dchild=1&amp;amp;keywords=How+to+Design+Programs&amp;amp;qid=1591789696&amp;amp;sr=8-1" rel="noopener noreferrer"&gt;How to Design Programs&lt;/a&gt; by Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi. &lt;em&gt;“Unlike other introductory books, it focuses on the program design process, presenting program design guidelines that show the reader how to analyze a problem statement, how to formulate concise goals, how to make up examples, how to develop an outline of the solution, how to finish the program, and how to test it.”&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628/ref=sr_1_1?dchild=1&amp;amp;keywords=The+C+Programming+Language&amp;amp;qid=1591789715&amp;amp;sr=8-1" rel="noopener noreferrer"&gt;The C Programming Language&lt;/a&gt; by Brian W. Kernighan, Dennis M. Ritchie. &lt;em&gt;“The authors present the complete guide to ANSI standard C language programming. Written by the developers of C.”&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Eric Freeman is a computer science Phd, author of the Head First book series, former CTO of Disney Online, educator, and entrepreneur.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://twitter.com/coryalthoff" rel="noopener noreferrer"&gt;Cory Althoff&lt;/a&gt; shared in &lt;a href="https://twitter.com/coryalthoff/status/1240544295473410049?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed&amp;amp;ref_url=notion%3A%2F%2Fwww.notion.so%2Fshvetsovdm%2FKnowledge-Business-19a582a4b87844f6a8a3be29fcd8891f" rel="noopener noreferrer"&gt;this tweet&lt;/a&gt; an extensive list of the best books for programmers. You can read the original list in &lt;a href="https://selftaught.blog/best-programming-books/" rel="noopener noreferrer"&gt;this article&lt;/a&gt; from his blog.&lt;/p&gt;

&lt;p&gt;Best Programming Books to Learn Coding with Python:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Self-Taught-Programmer-Definitive-Programming-Professionally-ebook/dp/B01M01YDQA/ref=sr_1_1?dchild=1&amp;amp;keywords=The+Self-Taught+Programmer&amp;amp;qid=1591789800&amp;amp;sr=8-1" rel="noopener noreferrer"&gt;The Self-Taught Programmer&lt;/a&gt; by Cory Althoff. &lt;em&gt;“[This book] is a roadmap, a guide to take you from writing your first Python program to passing your first technical interview.”&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Python-Crash-Course-2nd-Edition/dp/1593279280/ref=sr_1_1?dchild=1&amp;amp;keywords=Python+Crash+Course&amp;amp;qid=1591790165&amp;amp;sr=8-1" rel="noopener noreferrer"&gt;Python Crash Course&lt;/a&gt; by Eric Matthes. &lt;em&gt;“The Python Crash Course is the world's best-selling guide to the Python programming language. This fast-paced, thorough introduction to programming with Python will have you writing programs, solving problems, and making things that work in no time.”&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Learning-Python-5th-Mark-Lutz/dp/1449355730/ref=sr_1_1?dchild=1&amp;amp;keywords=Learning+Python&amp;amp;qid=1591789820&amp;amp;sr=8-1" rel="noopener noreferrer"&gt;Learning Python&lt;/a&gt; by Mark Lutz. “&lt;em&gt;Get a comprehensive, in-depth introduction to the core Python language with this hands-on book. Based on author Mark Lutz’s popular training course, this updated fifth edition will help you quickly write efficient, high-quality code with Python.&lt;/em&gt;”&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Learn-Python-Hard-Way-Introduction/dp/0321884914/ref=sr_1_2?dchild=1&amp;amp;keywords=Learn+Python+the+Hard+Way&amp;amp;qid=1591789908&amp;amp;s=books&amp;amp;sr=1-2" rel="noopener noreferrer"&gt;Learn Python the Hard Way&lt;/a&gt; (and &lt;a href="https://www.amazon.com/Learn-Python-Hard-Way-Introduction/dp/0134692888/ref=sr_1_1?dchild=1&amp;amp;keywords=Learn+Python+the+Hard+Way&amp;amp;qid=1591789908&amp;amp;s=books&amp;amp;sr=1-1" rel="noopener noreferrer"&gt;Python 3 edition&lt;/a&gt;) by Zed A. Shaw. &lt;em&gt;“You'll learn Python by working through 52 brilliantly crafted exercises. … You'll learn how software works; what good programs look like; how to read, write, and think about code; and how to find and fix your mistakes using tricks professional programmers use.”&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Python-Cookbook-Third-David-Beazley/dp/1449340377/ref=sr_1_1?dchild=1&amp;amp;keywords=Python+Cookbook&amp;amp;qid=1591789839&amp;amp;sr=8-1" rel="noopener noreferrer"&gt;Python Cookbook&lt;/a&gt; by David Beazley, Brian K. Jones. &lt;em&gt;“If you need help writing programs in Python 3, or want to update older Python 2 code, this book is just the ticket. Packed with practical recipes written and tested with Python 3.3, this unique cookbook is for experienced Python programmers who want to focus on modern tools and idioms.”&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Best Programming Books To Advance Your Skills:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882/ref=sr_1_1?dchild=1&amp;amp;keywords=Clean+Code&amp;amp;qid=1591790003&amp;amp;s=books&amp;amp;sr=1-1" rel="noopener noreferrer"&gt;Clean Code: A Handbook of Agile Software Craftsmanship&lt;/a&gt; by Robert C. Martin. &lt;em&gt;“[The authors] distill their best agile practice of cleaning code ‘on the fly’ into a book that will instill within you the values of a software craftsman and make you a better programmer.”&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880/ref=sr_1_1?dchild=1&amp;amp;keywords=Programming+Pearls&amp;amp;qid=1591790023&amp;amp;s=books&amp;amp;sr=1-1" rel="noopener noreferrer"&gt;Programming Pearls&lt;/a&gt; by Jon Bentley. &lt;em&gt;“With origins beyond solid engineering, in the realm of insight and creativity, Bentley's pearls offer unique and clever solutions to those nagging problems. Illustrated by programs designed as much for fun as for instruction, the book is filled with lucid and witty descriptions of practical programming techniques and fundamental design principles.”&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/0984782850/ref=sr_1_1?dchild=1&amp;amp;keywords=Cracking+the+Coding+Interview&amp;amp;qid=1591790040&amp;amp;s=books&amp;amp;sr=1-1" rel="noopener noreferrer"&gt;Cracking the Coding Interview&lt;/a&gt; by Gayle Laakmann McDowell. &lt;em&gt;“Learn how to uncover the hints and hidden details in a question, discover how to break down a problem into manageable chunks, develop techniques to unstick yourself when stuck, learn (or re-learn) core computer science concepts, and practice on 189 interview questions and solutions.”&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670/ref=sr_1_1?dchild=1&amp;amp;keywords=Code+Complete&amp;amp;qid=1591790056&amp;amp;s=books&amp;amp;sr=1-1" rel="noopener noreferrer"&gt;Code Complete: A Practical Handbook of Software Construction&lt;/a&gt; by Steve McConnell. &lt;em&gt;“Discover the timeless techniques and strategies that help you: Design for minimum complexity and maximum creativity; Reap the benefits of collaborative development; Apply defensive programming techniques to reduce and flush out errors; Exploit opportunities to refactor—or evolve—code, and do it safely; Use construction practices that are right-weight for your project; Debug problems quickly and effectively; Resolve critical construction issues early and correctly; Build quality into the beginning, middle, and end of your project.”&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Pragmatic-Programmer-journey-mastery-Anniversary/dp/0135957052/ref=tmm_hrd_swatch_0?_encoding=UTF8&amp;amp;qid=1591789378&amp;amp;sr=8-1" rel="noopener noreferrer"&gt;The Pragmatic Programmer: your journey to mastery, 20th Anniversary Edition&lt;/a&gt; (see description in the Andy Hunt recommendations)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Best Programming Books for Your Career:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Complete-Software-Developers-Career-Guide/dp/0999081411/ref=tmm_pap_swatch_0?_encoding=UTF8&amp;amp;qid=1591790096&amp;amp;sr=1-1" rel="noopener noreferrer"&gt;The Complete Software Developer’s Career Guide&lt;/a&gt; by John Sonmez. &lt;em&gt;“Technical Knowledge Alone Isn't Enough - Increase Your Income by Leveling Up Your Soft Skills.”&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Soft-Skills-Software-Developers-Manual/dp/B0158SJ3EM/ref=sr_1_2?dchild=1&amp;amp;keywords=vSoft+Skills&amp;amp;qid=1591790119&amp;amp;s=books&amp;amp;sr=1-2-spell" rel="noopener noreferrer"&gt;Soft Skills: The Software Developer’s Life Manual&lt;/a&gt; by John Sonmez. &lt;em&gt;“[This book offers] techniques and practices for a more satisfying life as a professional software developer.”&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Code-Language-Computer-Developer-Practices-ebook/dp/B00JDMPOK2/ref=sr_1_1?dchild=1&amp;amp;keywords=Code%3A+The+Hidden+Language&amp;amp;qid=1591790136&amp;amp;s=audible&amp;amp;sr=1-1-catcorr" rel="noopener noreferrer"&gt;Code: The Hidden Language of Computer Hardware and Software&lt;/a&gt; by Charles Petzold. &lt;em&gt;“It’s a cleverly illustrated and eminently comprehensible story—and along the way, you’ll discover you’ve gained a real context for understanding today’s world of PCs, digital media, and the Internet. No matter what your level of technical savvy, CODE will charm you—and perhaps even awaken the technophile within.”&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cory Althoff is the author of &lt;em&gt;The Self-Taught Programmer&lt;/em&gt;, a book that has sold over 100,000 copies and is available in eight languages. He is also the founder of &lt;a href="https://codinglist.com/" rel="noopener noreferrer"&gt;Coding List&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;I also want to recommend a great book I read recently called &lt;a href="https://www.amazon.com/Essentialism-Disciplined-Pursuit-Greg-McKeown/dp/0753555166/ref=tmm_pap_swatch_0?_encoding=UTF8&amp;amp;qid=1591790181&amp;amp;sr=8-1" rel="noopener noreferrer"&gt;Essentialism&lt;/a&gt; by Greg McKeown. It’s about how to achieve more meaningful results by doing less and concentrating on the truly vital parts of our lives.&lt;/p&gt;

&lt;h1&gt;
  
  
  Call to Action
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Respond to the tweet below&lt;/strong&gt;. Which programmer would you ask for advice on which books you should read?&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1270676263305465859-24" src="https://platform.twitter.com/embed/Tweet.html?id=1270676263305465859"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1270676263305465859-24');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1270676263305465859&amp;amp;theme=dark"
  }



&lt;/p&gt;




&lt;p&gt;&lt;a href="https://twitter.com/iamdidev" rel="noopener noreferrer"&gt;&lt;strong&gt;Follow me on Twitter&lt;/strong&gt;&lt;/a&gt;. I tweet daily on how to write clean code, grow soft skills, and be a successful developer.&lt;/p&gt;




&lt;p&gt;If you like this write-up, &lt;strong&gt;share it with friends and colleagues&lt;/strong&gt; so more programmers can benefit from these recommendations. Another way to spread the word is to retweet the tweet below.&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1270680029102563335-765" src="https://platform.twitter.com/embed/Tweet.html?id=1270680029102563335"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1270680029102563335-765');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1270680029102563335&amp;amp;theme=dark"
  }



&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://iamdi.dev/essential-books-that-every-programmer-should-read-lists-by-andy-hunt-eric-freeman-cory-althoff/" rel="noopener noreferrer"&gt;iamdi.dev&lt;/a&gt; on June 10, 2020.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>books</category>
      <category>learning</category>
      <category>programming</category>
      <category>betterprogrammer</category>
    </item>
    <item>
      <title>22 Things You Should Give Up If You Want To Be A Successful Developer</title>
      <dc:creator>Dmitry Shvetsov</dc:creator>
      <pubDate>Mon, 08 Jun 2020 21:36:32 +0000</pubDate>
      <link>https://forem.com/dmshvetsov/22-things-you-should-give-up-if-you-want-to-be-a-successful-developer-2f0o</link>
      <guid>https://forem.com/dmshvetsov/22-things-you-should-give-up-if-you-want-to-be-a-successful-developer-2f0o</guid>
      <description>&lt;p&gt;When you become good at something, you can hit a wall in your development. No matter how hard you try, you feel like you can't break through it. Pushing harder doesn't pay off as much as before.&lt;/p&gt;

&lt;p&gt;In this case, the solution might be not to &lt;em&gt;add&lt;/em&gt; something but actually to &lt;em&gt;remove&lt;/em&gt; something.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“It’s only by saying NO that you can concentrate on the things that are really important.”&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;&lt;em&gt;— Steve Jobs&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Our habits and what we believe in determine 90% of our actions. To be a successful developer, we must become successful first in thoughts and then in actions.&lt;/p&gt;

&lt;p&gt;By giving up certain habits and beliefs, you create space and time for the better.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Give Up The Fixed Mindset
&lt;/h2&gt;

&lt;p&gt;Stop thinking that there is no other way that you know.&lt;/p&gt;

&lt;p&gt;Be open to new ideas. If you are a rigid fanatic of your beliefs, then you voluntarily put yourself in a prison closed to new and exciting ideas and knowledge.&lt;/p&gt;

&lt;p&gt;Stop thinking that you were not born to be good at something. Your brain is flexible and it’s designed to adapt. So you can change.&lt;/p&gt;

&lt;p&gt;You can become great at math, algorithm complexity, system architecture, dev ops, focusing, communications, discipline, and anything else you can imagine. But you have to put in enough effort to make it happen.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Give Up The Unhealthy Lifestyle
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“To keep the body in good health is a duty... otherwise we shall not be able to keep our mind strong and clear.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;— Buddha&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Our body needs good input to produce good output.&lt;/p&gt;

&lt;p&gt;Exercise—whether that’s jogging, biking, going to the gym, cross-country walking, doing pull-ups, or yoga. All of this improves memory and thinking skills and also reduces stress.&lt;/p&gt;

&lt;p&gt;Avoid health issues. Very few people can enjoy their day and produce great results when they have the flu, not to mention more serious diseases.&lt;/p&gt;

&lt;p&gt;Your thoughts affect your health, and your health affects your thoughts. Because they are so connected, you should take care of your health and protect this precious asset.&lt;/p&gt;

&lt;p&gt;Exercising regularly, getting proper nutrition, sleeping for 7-9 hours a night, and taking time for meditation will help you uncover your true potential as a person and a developer.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Give Up The Desire To Assert Yourself At The Expense Of Others
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“An arrogant person considers himself perfect. This is the chief harm of arrogance. It interferes with a person's main task in life – becoming a better person.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;— Leo Tolstoy&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It’s easy to criticize someone else’s code. It gives you nothing and can only harm your relationships with your team.&lt;/p&gt;

&lt;p&gt;It’s difficult to understand someone else’s code, but the benefits will exceed your efforts.&lt;/p&gt;

&lt;p&gt;Understanding why the code was written a certain way and not in any other way is more important than the feeling of "I'm smart." Arrogance interferes with learning, teaching, and the ability to be a team player.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Give Up Playing It Safe
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Life begins at the end of your comfort zone.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;— Neale Donald Walsch&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Have a mindset of acting to &lt;em&gt;win&lt;/em&gt;, not to avoid loss.&lt;/p&gt;

&lt;p&gt;Take risks. Take on hard challenges. Get out of your comfort zone. When you play safe, you lose the opportunity to win.&lt;/p&gt;

&lt;p&gt;The world is constantly changing, and you cannot succeed if you protect the status quo.&lt;/p&gt;

&lt;p&gt;In an attempt to preserve what you have, you put yourself under pressure that slowly grows over time. If pressure is unavoidable, wouldn’t it be wiser to put the pressure toward improving and producing something bigger than you were capable of before?&lt;/p&gt;

&lt;p&gt;It is much more fun and rewarding to achieve new results than to protect what you already have. So don’t act because you’re scared to lose—act to win.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Give Up Being A Victim
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Most people do not really want freedom, because freedom involves responsibility, and most people are frightened of responsibility.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;— Sigmund Freud&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Everythings that’s happening to you is the result of your actions or lack of them.&lt;/p&gt;

&lt;p&gt;By thinking, “I am responsible for everythings that happens to me,” you gain the power to change it all. If you refuse to take responsibility for the past, you lose your ability to affect the future.&lt;/p&gt;

&lt;p&gt;No more complaints—complaints rob you of believing that you can change the situation.&lt;/p&gt;

&lt;p&gt;No more blaming others—blaming robs you of the ability to affect the situation.&lt;/p&gt;

&lt;p&gt;Next time when things go wrong because of your actions or inaction, be the first person to admit this. Say to yourself and everyone, “This happened because of me, and I will fix it.”&lt;/p&gt;

&lt;p&gt;Take full responsibility for outcomes and results. Your peers will respect that, and you will empower yourself. You only can be successful if you take full ownership for your results.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Give Up The Idea Of Overnight Success
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"I fear not the man who has practiced 10,000 kicks once, but I fear the man who has practiced one kick 10,000 times.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;— Bruce Lee&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Everything that truly matters doesn’t happen immediately.&lt;/p&gt;

&lt;p&gt;It may seem like success comes to someone after they make some magic move— one action that immediately makes them successful.&lt;/p&gt;

&lt;p&gt;Indeed, one action can change everything overnight. But it’s extremely rare for this single action to be the only one. Instead, &lt;em&gt;many&lt;/em&gt; actions precede the successful one. Even for you, it might not be obvious what chain of events and actions led you to where you are, but it is always like this.&lt;/p&gt;

&lt;p&gt;That is why it’s important to do something that makes you happy and that’s important to you—so the process itself will be a reward. And in the meantime, don’t give up—all of your diligent actions right now are surely leading you to success in the future.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Give Up The Blind Copy-And-Paste Habit
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"The noblest pleasure is the joy of understanding.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;— Leonardo da Vinci&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Understand what you are doing—don't blindly copy-and-paste solutions to get stuff done and fix things quickly.&lt;/p&gt;

&lt;p&gt;Not only will you hurt your reputation by doing this, but you will cause more problems than you fix.&lt;/p&gt;

&lt;p&gt;Search for understanding, not for a solution. Understanding is much more valuable in the long run than a completed task. This is because your understanding will then lead you to many more solutions in the future.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Give Up Hacking Problems
&lt;/h2&gt;

&lt;p&gt;Some programmers approach problems that they don’t understand by spontaneously trying to find a combination that results in “workable” code. Those who do this learn nothing, and code that is produced this way contains more bugs than before.&lt;/p&gt;

&lt;p&gt;Strive to understand the problem and to solve its root cause. Read the source code, dive deeper, and learn what you don’t know. This is the path of craftsmanship that leads to true understanding and mastery.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Give Up Perfectionism
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Done is better than perfect.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;—A popular idea in Silicon Valley&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Which is better—make one perfect app, program, library, or piece of code in the next several years, or be prolific and make hundreds of imperfect results this year? Not to mention that the perfect program will be at just one particular point in time and for a small set of people, and it’s often done only for you.&lt;/p&gt;

&lt;p&gt;Thus, done is better than perfect.&lt;/p&gt;

&lt;p&gt;Write “good enough” code for your fellow developers, not perfect code for yourself. You will always have the time and opportunity to improve code that needs to be improved. In other cases, you will save time by shipping code faster.&lt;/p&gt;

&lt;h2&gt;
  
  
  10. Give Up Writing Smart Code
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;— Brian Kernighan&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Smart code is an attempt to show the world how smart the author is. In the vast majority of cases, people do not appreciate this. Rather, people appreciate when you think about them and try to make their lives easier.&lt;/p&gt;

&lt;p&gt;So write good, clean, and simple code that is easy to read and understand. No one will benefit from the smart code, including you three months later.&lt;/p&gt;

&lt;h2&gt;
  
  
  11. Give Up Writing The Shortest Possible Code
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“I have only made this letter longer because I have not had the time to make it shorter.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;— Blaise Pascal&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Readability first, then everything else.&lt;/p&gt;

&lt;p&gt;A couple decades ago, someone decided that coders can be measured by lines of code they wrote during the time period. That was not a wise idea.&lt;/p&gt;

&lt;p&gt;Now we can see how developers think they are writing good code if they are using the fewest possible lines or the fewest characters on a line. This is not wise either.&lt;/p&gt;

&lt;p&gt;Code written once will be read dozens or hundreds of times, so strive to write readable code regardless of its length.&lt;/p&gt;

&lt;h2&gt;
  
  
  12. Give Up Writing Code That Will Be Helpful “Someday”
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Those who have knowledge, don't predict. Those who predict, don't have knowledge."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;-- Lao Tzu&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Less code means fewers bugs and less time to read, lint, compile, review, ship, maintain, and debug.&lt;/p&gt;

&lt;p&gt;Don’t spend time writing code that is not needed right now.&lt;/p&gt;

&lt;h2&gt;
  
  
  13. Give Up Your Need To Always Be Right
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"A man who has committed a mistake and doesn't correct it is committing another mistake."&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;&lt;em&gt;– Confucius&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There are so many of us who can’t stand the idea of being wrong and want to always be right. This is even at the risk of hurting relationships or causing a great deal of stress and pain, for us and for others.&lt;/p&gt;

&lt;p&gt;What will you gain by proving to someone else that you are right? You will spend tons of effort and will exhaust yourself or your opponent. The cost of feeling right is making everyone else feel wrong. It’s just not worth it.&lt;/p&gt;

&lt;p&gt;You lose more by winning an argument. Instead of winning arguments, strive to solve problems and help people.&lt;/p&gt;

&lt;h2&gt;
  
  
  14. Give Up Fighting For The Past
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“The secret of change is to focus all of your energy, not on fighting the old, but on building the new.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;— Socrates&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There is no way to change what already happened.&lt;/p&gt;

&lt;p&gt;Sure, you can change what people think about the past, but it will cost you a lot and you’ll end up with unreliable benefits.&lt;/p&gt;

&lt;p&gt;So don’t argue about the past. Concentrate on what to do now and how to use what already happened to change the future.&lt;/p&gt;

&lt;h2&gt;
  
  
  15. Give Up Not Believing In Yourself
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“When I look back on all these worries, I remember the story of the old man who said on his deathbed that he had had a lot of trouble in his life, most of which had never happened.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;– Winston Churchill&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We’re really bad at remembering our achievements, and at the same time we’re really good at thinking that we need something else to start being who we want to be.&lt;/p&gt;

&lt;p&gt;Look back and see how much you’ve already accomplished. I’m sure you’ve already done amazing things—you just rarely think about it.&lt;/p&gt;

&lt;p&gt;If you want to take a role, don’t wait for permission—start doing what is expected from a person in that role. If you need a title, eventually you will get it this way. If you really want to do something, you don’t need titles or permission to do it.&lt;/p&gt;

&lt;p&gt;If you’re not sure how to do this, that isn’t a problem either—you will figure it out while you do it. Do not underestimate your ability to figure out the way to achieve your goals.&lt;/p&gt;

&lt;h2&gt;
  
  
  16. Give Up Trusting Only Yourself
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Talent wins games, but teamwork and intelligence wins championships.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;— Michael Jordan&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;At the beginning of their career, Michael Jordan and Kobe Bryan were amazingly talented but selfish individuals. Both thought that only they could win a game because others often drop the ball.&lt;/p&gt;

&lt;p&gt;Phil Jackson, who won a remarkable 11 out of 20 NBA seasons as a head coach of the Chicago Bulls and the Los Angeles Lakers, trusts in the idea that a group of the best individuals can’t achieve success—only &lt;em&gt;teams&lt;/em&gt; can do that.&lt;/p&gt;

&lt;p&gt;He was a coach for both players and nurtured this idea in Jordan and Kobe, transforming them into the greatest players who bonded with their teams and relied on their teams to win games.&lt;/p&gt;

&lt;p&gt;A team is more than a sum of individuals— teams are much stronger than groups of strong individuals.&lt;/p&gt;

&lt;p&gt;We should trust our peers to make their own decisions and their own mistakes. We should allow them to do more important and complex tasks and offer a hand when they need it.&lt;/p&gt;

&lt;h2&gt;
  
  
  17. Give Up Trying to Do Everything
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Essentialism is not about how to get more things done; it’s about how to get the right things done. It doesn’t mean just doing less for the sake of less either. It is about making the wisest possible investment of your time and energy in order to operate at our highest point of contribution by doing only what is essential.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;― Greg Mckeown, Essentialism: The Disciplined Pursuit of Less&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ideas like “I can do both,” “I can control everything,” and “Everything should be like I want” will harm you at best and harm everyone around you at worst.&lt;/p&gt;

&lt;p&gt;It is easy to lose the ability to determine what is really important in this contemporary, fast-paced world. But by knowing what is important, we can leverage the Pareto principle. We can achieve 80% of results by applying 20% of effort and omit 20% of results that require the remaining 80% of the effort.&lt;/p&gt;

&lt;p&gt;It’s important to stop trying to do everything. The key is not to get more things done—it is about getting the &lt;em&gt;right&lt;/em&gt; things done.&lt;/p&gt;

&lt;p&gt;It doesn’t matter how high you climb a ladder if that ladder is leaning against the wrong building.&lt;/p&gt;

&lt;p&gt;Strive to find your highest point of contribution and put all your effort into it.&lt;/p&gt;

&lt;h2&gt;
  
  
  18. Give Up Negativity
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“No one can create negativity or stress within you. Only you can do that by virtue of how you process your world.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;— Wayne W. Dyer&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Negative emotions attract more negative emotions. Emotions are how we feel, and how we feel is our life. Thus, radiating negativity makes our life unhappier. You will be surrounded by similar negative people who won't be interested to contribute to your success. It turns into a vicious cycle.&lt;/p&gt;

&lt;p&gt;Just think about when you’re involved in something that brings you great joy—you can do it all day long without feeling tired. You feel happiness, not exhaustion. It’s not hard work that takes up our energy—it’s what we feel and think.&lt;/p&gt;

&lt;p&gt;Use gratitude as an antidote to negative thoughts and emotions.&lt;/p&gt;

&lt;p&gt;To be a successful developer, you need to &lt;em&gt;feel&lt;/em&gt; that you are a successful developer. Be positive and attract happiness in your life. Happy people become successful people, not vice versa.&lt;/p&gt;

&lt;h2&gt;
  
  
  19. Give Up Holding Onto Guilt and Resentment
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Our fatigue is often caused not by work, but by worry, frustration and resentment.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;— Dale Carnegie&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Being responsible is a great thing, but please avoid feeling guilty about results that do not satisfy you. Feeling guilty doesn't add anything good. On the contrary, this feeling prevents you from becoming a better version of yourself.&lt;/p&gt;

&lt;p&gt;Resentment is another emotion that sucks your energy. Reach out to the people who you’re frustrated with and explain to them your problem. Solve the issue and free up your energy to achieve great results.&lt;/p&gt;

&lt;p&gt;Be emotionally intelligent, find the issues that are preventing you from using all your effort for creativity, and resolve them proactively.&lt;/p&gt;

&lt;h2&gt;
  
  
  20. Give Up On Believing That Everyone Should Think Like You
&lt;/h2&gt;

&lt;p&gt;It’s not egoism to want something—egoism is expecting that everyone else wants the same thing as you.&lt;/p&gt;

&lt;p&gt;Diversity is a strong tool in achieving great success. A healthy diversity in opinions must be part of products and teams in order for them to be successful.&lt;/p&gt;

&lt;p&gt;It is unhealthy to expect that everyone should think in your “right” way. It is unhealthy to surround yourself with people who only think like you. And it is also unhealthy to struggle because people think differently than you and do not accept your ideas.&lt;/p&gt;

&lt;p&gt;To be successful, embrace diversity and think about what you can learn from every other opinion.&lt;/p&gt;

&lt;h2&gt;
  
  
  21. Give Up Wasting Time
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;I have so much that I want to do. I hate wasting time.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;— Stephen Hawking&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It requires time to hone your skills, practice a new language, learn new technology, and give 110% at your workplace. To gain that time, you need to stop wasting it on things that do not move the needle for you and your goals.&lt;/p&gt;

&lt;p&gt;Stop spending time on relationships that do not make you happy. Stop wasting time on TV shows that do not help you become better. Stop wasting time on activities that do not make you stronger.&lt;/p&gt;

&lt;p&gt;Without time-wasters that do not add anything to your life, you will free up your time for things that really matter to you and your success.&lt;/p&gt;

&lt;h2&gt;
  
  
  22. Give Up Being A Taker
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Givers advance the world. Takers advance themselves and hold the world back.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;— Simon Sinek&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Life gives to givers and takes from takers. This is an axiom of the universe.&lt;/p&gt;

&lt;p&gt;Those who seek for immediate selfish results will be content only with short-term results. Those who sincerely endeavor for others’ success will experience a compound effect many times greater than their own contribution. This is the rule of success.&lt;/p&gt;

&lt;p&gt;To achieve great things, you need to leverage the power of giving.&lt;/p&gt;




&lt;p&gt;Every day, you have the chance to free yourself from things that do not serve you.&lt;/p&gt;

&lt;p&gt;By giving up activities and emotions that are holding you back, you create space for the better. By creating space for good habits, activities, and emotions, we become a better version of ourselves.&lt;/p&gt;

&lt;p&gt;The desire to be better lies in all of us, and we feel amazing when we fulfill this desire. This is the path to be successful—and it’s available to everyone.&lt;/p&gt;

&lt;h2&gt;
  
  
  Call To Action
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://twitter.com/dmshvetsov"&gt;&lt;strong&gt;Follow me on Twitter&lt;/strong&gt;&lt;/a&gt; where I post more frequently about life as a software engineer and how to get better and enjoy the process.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://dmitryshvetsov.com/22-things-you-should-give-up-if-you-want-to-be-a-successful-developer/"&gt;dmitryshvetsov.com&lt;/a&gt; on June 9, 2020.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>motivation</category>
      <category>betterprogrammer</category>
    </item>
    <item>
      <title>How to Get an Awesome Software Developer Job If Everyone Continues to Reject You</title>
      <dc:creator>Dmitry Shvetsov</dc:creator>
      <pubDate>Tue, 26 May 2020 11:59:25 +0000</pubDate>
      <link>https://forem.com/dmshvetsov/how-to-get-an-awesome-software-developer-job-if-everyone-continues-to-reject-you-1h16</link>
      <guid>https://forem.com/dmshvetsov/how-to-get-an-awesome-software-developer-job-if-everyone-continues-to-reject-you-1h16</guid>
      <description>&lt;p&gt;It is extremely hard to seek a job for months and get rejection after rejection in all kinds of forms.&lt;/p&gt;

&lt;p&gt;It is also hard to maintain self-confidence after consequent rejections, numerous letters without an answer, and months without a result.&lt;/p&gt;

&lt;p&gt;I know this because I went through it after I quit my job and started pursuing my dream to work for an awesome company. It took me 3 months to land that dream job and required me to adapt.&lt;/p&gt;

&lt;p&gt;In the next 10 minutes, I’m going to share exactly what I changed—and what &lt;em&gt;you&lt;/em&gt; can change to finally get that dream job you have been daydreaming about for a long time.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Photo by &lt;a href="https://unsplash.com/@priscilladupreez?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Priscilla Du Preez&lt;/a&gt; on &lt;a href="https://unsplash.com/?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1. What a good resume should really look like
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;“&lt;em&gt;Less is more”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;— From the Essentialism book by Greg McKeown&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Throw away your long list of skills and make it small and super relevant to the position you are looking for. If you are a Ruby developer &lt;em&gt;and&lt;/em&gt; a JavaScript/Node.js developer, make two resumes that aim for each position.&lt;/p&gt;

&lt;p&gt;In your resume, focus on what you actually &lt;em&gt;did&lt;/em&gt; and &lt;em&gt;achieved&lt;/em&gt; in your previous jobs and what is relevant to the positions you are seeking. Focus your resume on the details and outcomes of your previous work experience. For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Raised test coverage on the project from 28% to 86%.&lt;/li&gt;
&lt;li&gt;Improved Google PageSpeed score from 69 to 91 for most visited and important pages of the project.&lt;/li&gt;
&lt;li&gt;Optimized database queries p99 latency down to 3121 ms and average latency of 88 ms across DB with 42 tables, where 3 of them have 1+ million records.&lt;/li&gt;
&lt;li&gt;Updated and refactored project from Ruby on Rails version 4.2 to version 6 in about 2 weeks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Keep other parts as short as possible, like education, volunteer work, publications, and open-source contribution. Terse one-sentence references are more than enough.&lt;/p&gt;

&lt;p&gt;The goal is to write a one-page resume packed with relevant and exciting info about the position that you are going to take. Don’t worry if your resume seems small—quality is better than quantity!&lt;/p&gt;

&lt;p&gt;Show off your best qualities without saying “responsible, hardworking, and easily trained.” All of your qualities should be derived from the list of activities, achievements, and results that you’ve gotten in the past.&lt;/p&gt;

&lt;p&gt;Here is the full list of what you should include in your resume, in order:&lt;/p&gt;

&lt;h3&gt;
  
  
  1 Full name, city, country, and email.
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Dmitry Shvetsov&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Vladivostok, Russia&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="//mailto:helloiamdi@gmail.com"&gt;&lt;em&gt;helloiamdi@gmail.com&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2 One sentence describing who you are.
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;An experienced upbeat full-stack developer who enjoys leading teams and sharing knowledge.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3 One sentence of what you are looking for.
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Looking for a remote position as a full-stack Ruby on Rails developer in a fin-tech company that values open-source, constant learning and has a clear vision and culture.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4 Bonus: Put a link to your GitHub account if it’s not empty (or another place where you host your code portfolio).
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/iamdidev"&gt;https://github.com/iamdidev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--51adhjP7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh5.googleusercontent.com/qtNyVC16lx8v9bZesbglXlYfoibHZhKaWl2pm6sCYau6lqzaxwQYiw6PJhKP52-KlwJOVWxIf5ZgNdSq-PoWyIpIeXjrbHZtY4qrITtYuZoO8AY7QjOyfoZ5DNxay3bp0mbrqWwj" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--51adhjP7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh5.googleusercontent.com/qtNyVC16lx8v9bZesbglXlYfoibHZhKaWl2pm6sCYau6lqzaxwQYiw6PJhKP52-KlwJOVWxIf5ZgNdSq-PoWyIpIeXjrbHZtY4qrITtYuZoO8AY7QjOyfoZ5DNxay3bp0mbrqWwj" alt="" width="880" height="488"&gt;&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Make sure you pin the coolest repos that you’ve worked on and gists with parts of code that you’re proud of. The idea is to lead the person who visits your account to places you want them to see.&lt;/p&gt;

&lt;h3&gt;
  
  
  5 Bonus: Put a link to your site/blog if it has relevant and interesting content.
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://iamdi.dev"&gt;https://iamdi.dev&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  6 Bonus: Include a photo if you have a good one.
&lt;/h3&gt;

&lt;p&gt;Avoid shots that look unprofessional (blurry, poor light). Smile genuinely in it. You can test your photo with &lt;a href="https://www.photofeeler.com/"&gt;photofeeler.com&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  7 A list of skills relevant to the position your resume is aimed at.
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Ruby, Ruby on Rails, Active Admin, Administrate, PostgreSQL, Redis, MongoDB, Rspec (TDD, BDD), Javascript ES5-ES7, React, Docker.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  8 Previous experience.
&lt;/h3&gt;

&lt;p&gt;Should include the following: year and month of start and end, name and link to the company website or project, excerpt of your role in the project, and a list of key results and achievements. If your experience is not relevant to the position, like a network engineer or a graphic designer for a full-stack developer position, then no excerpt and achievement list is needed.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Full-stack developer at&lt;/em&gt; &lt;a href="https://farpostdevelopment.ru/"&gt;&lt;em&gt;Farpost Development&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, December 2013 - December 2018&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Development of startups at the initial stage with Ruby on Rails, Portgres, Redis, Active Admin, Administrate.&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Introduced the culture TDD and code review to the team.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Developed a solution to cut off time and cost for producing MVPs.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;In 2014 together with ops team built a proprietary process of deployment Ruby on Rails apps&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  9 Relevant volunteer work, publications, open-source contribution.
&lt;/h4&gt;

&lt;p&gt;&lt;em&gt;[Article]&lt;/em&gt; &lt;a href="https://medium.com/@iamdi/playing-with-ruby-threads-and-queues-52beb6e8613c"&gt;&lt;em&gt;Playing with Ruby Threads and Queues&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;[Open-Source]&lt;/em&gt; &lt;a href="https://github.com/yabeda-rb/yabeda-datadog"&gt;&lt;em&gt;yabeda-rb/yabeda-datadog&lt;/em&gt;&lt;/a&gt; &lt;em&gt;core contributor&lt;/em&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  10 Education. Put the most relevant and recent place of education. Name, years, title. No more.
&lt;/h4&gt;

&lt;p&gt;&lt;em&gt;Yakutsk State University, 2002-2007, Bachelor's Degree in Applied Computer Science&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Keep your resume short, one-page, and aimed at the position you want to get. If you aim for a number of different positions, make a separate resume for each of them.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. How to write cover letters that will be answered
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Life gives to the givers and takes from the takers”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;— Unknown&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Before I learned how to write good cover letters, every job application I sent was politely refused or simply left without an answer. All that changed when I started to really personalize these letters to each company.&lt;/p&gt;

&lt;p&gt;Personalized letters aimed to cover as many bullet points as possible from the “Skills and Requirements” section of the job description.&lt;/p&gt;

&lt;p&gt;It is important to keep your reader interested in reading the rest of the letter, so avoid uninformative intros and polite formalities. Write why they need you, and they will read the rest:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I am a Ruby on Rails full-stack engineer, occasional open-source contributor, and writer. I enjoy producing well-thought-out code with good design using TDD. I can offer a lot in a leadership and mentorship position, something I was recognized for in my previous company.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I’m passionate about open-source and the culture of constant learning. I know that your devs enjoy speaking at conferences and writing helpful articles, which I think is amazing. That is why I’m excited to join [company name] because of how the company culture fits me so well.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Look for companies that will be a great fit for you, and it will be natural to write an intro for the cover letter and express your excitement at the possibility of working with them. All because you are passionate about what they are doing!&lt;/p&gt;

&lt;p&gt;Then try to point out useful things that are happening with you right now that are related to the employer. The example below is a letter for a startup that is using Ruby on Rails and looking for a full-stack developer:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I believe I can add value to the [company name] team because:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;I have 5+ years of experience in back-end and front-end development, including Ruby on Rails, webpacker (I wrote an article on how to use webpack with npm instead of yarn), React, and JavaScript (ES5-ES7).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;I’m familiar and interested in the Elixir and Erlang programming languages that you are using too.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;I’m passionate about designing maintainable, reusable, and testable code (I love TDD). In two previous projects, I grew test coverage from 20-30% to 80-90%.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;I love to refactor code using the principle “for each desired change, make the change easy, then make the easy change.”&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;I have 2 years of experience working in a distributed international team within a small startup.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;I have DevOps and Network Engineering experience, experience with Azure, and I use Docker for my local working environment all the time.&lt;/em&gt; &lt;/li&gt;
&lt;li&gt;&lt;em&gt;I am currently learning GraphQL and Apollo (with a course from Wes Bos) and I’m falling in love with this tech.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Like I mentioned before, I try to hit as many bullet points from a job description as possible.&lt;/p&gt;

&lt;p&gt;One trick is to do research and find what your targeted company might struggle with or need expertise in, then show them how you already solved that problem in the past. Use social accounts of the company members and company blogs to find exactly what problems they are facing at the moment.&lt;/p&gt;

&lt;p&gt;You should absolutely write a personalized cover letter for each position, company, and even person if you know who will read it.&lt;/p&gt;

&lt;p&gt;Your cover letter is the first thing that a CTO, hiring manager, or team lead will read on the other side. You want to put heart and soul into it. Speak with them as if you were friends or partners, explaining how you will make them even more successful if they bring you on board.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. How to overcome nervousness and enjoy interviews
&lt;/h2&gt;

&lt;p&gt;A few points can help you to overcome nervousness in interviews.&lt;/p&gt;

&lt;p&gt;First, remember that you are an interviewer too. There is a possibility that the company you’re interviewing with does not actually suit you. This mental trick will help you to feel psychologically equal with the interviewer.&lt;/p&gt;

&lt;p&gt;Second, 15 minutes before the interview, take out a sheet of paper and write 2–3 affirmative statements 10 times each, such as the following:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“I successfully passed an interview at [name of a company].”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“I successfully passed an interview with [name of a person].”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“I’m a great engineer because I’m always [something great about you].”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Our brain is programmable, so it’s wise to put positive thoughts in it. Otherwise, it will be full of anxiety and fear.&lt;/p&gt;

&lt;p&gt;Have a pen and paper to make notes and write an interview cheat sheet:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Write down the names of the interviewers. Calling people by their names leaves a great impression.&lt;/li&gt;
&lt;li&gt;List your questions. Yes, you should ask questions—I will talk in detail about this later.&lt;/li&gt;
&lt;li&gt;Write down the targeted salary and the minimum salary you can agree to. Interviewees look flimsy when they start thinking about how much they want to get paid, and I myself was in this situation for a while. Thus, one must be prepared to answer this question clearly and confidently.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Smile before and during the interview. It makes you feel and look confident, even if you fake it. Your mood goes up and your stress goes down if you put a big smile on your face.&lt;/p&gt;

&lt;p&gt;Let’s see it on a concrete example. Here is me talking with you:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9Eg7Esg1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://iamdi.dev/wp-content/uploads/2020/05/awesome-gloomy-di-1-1024x661.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9Eg7Esg1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://iamdi.dev/wp-content/uploads/2020/05/awesome-gloomy-di-1-1024x661.png" alt="" width="880" height="568"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I didn’t do specific poses, especially in the second, dull photo. And now I feel sorry for my loved ones because they see this concentrated and detached face on a daily basis when I’m solving problems! Too often I think.&lt;/p&gt;

&lt;p&gt;My bet is that you would hire a cheerful person rather than a gloomy one.&lt;/p&gt;

&lt;p&gt;You can learn one more thing from the happy and gloomy photos of me: to leave a great impression, it’s important to look into the camera or into a person’s eyes when you speak with them. In one photo, I'm looking into the camera, and in the other, I’m looking at my screen. The difference is huge.&lt;/p&gt;

&lt;p&gt;If it’s natural for you to have a neutral or sad face and look to the side during conversations, then practice conscious smiling and eye contact with your friends and family. After the conversation, ask for feedback. You will be surprised how much a genuine smile and eye contact can change things.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. How question help leave a great impression
&lt;/h2&gt;

&lt;p&gt;You definitely want to know as much as possible about your next place of employment. Prepare about five questions to ask—not too many and not too few.&lt;/p&gt;

&lt;p&gt;By asking good questions, you will leave a great impression, and you will show your interest in the company and not just in paychecks.&lt;/p&gt;

&lt;p&gt;Here are some questions I usually ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What does a typical [company name] programmer’s day look like?&lt;/li&gt;
&lt;li&gt;What is the most challenging part about being a developer at [company name] or developing [company name]’s product?&lt;/li&gt;
&lt;li&gt;What is most exciting about working at [company name] or developing [company name]’s product?&lt;/li&gt;
&lt;li&gt;Tell me about the key engineers in the development team. &lt;em&gt;(Here I want to know if I will work alongside great engineers.)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;In which direction does [company name] expect me to develop in the next 2–3 years? &lt;em&gt;(Here I want to know if my interest is aligned with the opportunities to grow and learn within the company. It also shows the company that you care about contributing to them long-term.)&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  5. How failures actually help you succeed
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Failure is only the opportunity to begin again, only this time more wisely.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;— Henry Ford&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Although the feeling of failure is unpleasant and can be demotivating, you have to learn from it. The most valuable thing about making mistakes is that you have a chance to learn from them. Learning transforms failures into a path to success.&lt;/p&gt;

&lt;h3&gt;
  
  
  Don’t take it personally
&lt;/h3&gt;

&lt;p&gt;If you've been rejected, don’t take it personally. You just sent your application at the wrong time and to the wrong place.&lt;/p&gt;

&lt;p&gt;This is a numbers game—you need to send enough applications to finally find the right one and get your dream job.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ask, “Why not me?”
&lt;/h3&gt;

&lt;p&gt;In case of rejection, ask an interviewer in a respectful way why you are not the person for the job.&lt;/p&gt;

&lt;p&gt;Make it clear that you are not going to complain and dispute the reasons behind the refusal—you just want to know so you can learn from it.&lt;/p&gt;

&lt;p&gt;You won’t always get an answer, but this question is totally worth asking because it is very valuable in applying my next piece of advice.&lt;/p&gt;

&lt;h3&gt;
  
  
  Improve after each attempt
&lt;/h3&gt;

&lt;p&gt;After each interview, whether successful or not, hold a personal retrospective.&lt;/p&gt;

&lt;p&gt;What went well and what didn’t? What questions were you not prepared to answer, what didn’t you know, and what should you do to be prepared for the next interview?&lt;/p&gt;

&lt;p&gt;Consider eliminating gaps in your skills and knowledge. Think about how not to repeat mistakes in the next interview.&lt;/p&gt;

&lt;p&gt;Improve your resume and cover letter based on the valuable knowledge that you get from your last interview or job application.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bonus: List of skills that companies are looking for
&lt;/h2&gt;

&lt;p&gt;When I struggled to get a job a year ago, I asked myself probably the most important question at that time: “What do employers actually need?”&lt;/p&gt;

&lt;p&gt;I started scanning through descriptions of awesome companies and job posts of those companies. My goal was to identify what type of person they were looking for.&lt;/p&gt;

&lt;p&gt;The result of my research was a list of desired skills, which I used to change myself and write cover letters and resumes that  show I have what they need. Here’s the list:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Be proactive, have a strong sense of ownership, take responsibility for the success of the engineering teams, and care deeply about building great products that affect people’s lives.&lt;/li&gt;
&lt;li&gt;Have a commitment to quality, and take pride in everything you deliver as a reflection of yourself.&lt;/li&gt;
&lt;li&gt;Have strong analytical skills and creative problem-solving skills.&lt;/li&gt;
&lt;li&gt;Be fluent in English and be able to communicate clearly and consistently both verbally and in writing.&lt;/li&gt;
&lt;li&gt;Be a nice person—friendly, patient, welcoming, considerate, and respectful.&lt;/li&gt;
&lt;li&gt;Be positive and solution-oriented.&lt;/li&gt;
&lt;li&gt;Have a collaborative spirit.&lt;/li&gt;
&lt;li&gt;Be excited about exploring and learning constantly, and be able to learn new things quickly.&lt;/li&gt;
&lt;li&gt;Have experience with, or the ability to learn, the technologies the company uses.&lt;/li&gt;
&lt;li&gt;Don’t be afraid of legacy code, and be able to understand other programmers’ code.&lt;/li&gt;
&lt;li&gt;Be self-motivated, with strong organizational skills and the ability to work in a distributed remote team. You should know how to effectively allocate your time when solving hard problems.&lt;/li&gt;
&lt;li&gt;Be passionate about open source.&lt;/li&gt;
&lt;li&gt;Have experience with Agile methodology.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Grab a list of job descriptions of your favorite companies you want to work for, and compile this list for yourself. That way, you can see who you should become to be a good fit for a job and also how you should speak to them in order to be heard.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bonus: Open-source shortcut
&lt;/h2&gt;

&lt;p&gt;Working on open-source is a fun, rewarding way to get a job. And the chances are high that the job would be amazing.&lt;/p&gt;

&lt;p&gt;It’s fun because you have a chance to pick from more than 28 million projects on &lt;a href="https://github.com/explore"&gt;github.com&lt;/a&gt; alone, develop in almost any programming language, work with amazing developers, and learn from them today!&lt;/p&gt;

&lt;p&gt;If your dream company has an open-source project, it is a perfect chance to build credibility. It is incredibly powerful if you already contributed to what the company is building. That creates solid proof that you are a good fit for the job.&lt;/p&gt;

&lt;p&gt;Also, it’s rewarding because you will work on a portfolio that will serve you for years. I’m still getting job offers with messages like “We came across your GitHub account...” This was after I worked on the &lt;a href="https://github.com/yabeda-rb/yabeda-datadog"&gt;yabeda-datadog&lt;/a&gt; library with amazing devs from Evil Martians.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summarizing
&lt;/h2&gt;

&lt;p&gt;Remember that your resume should convince employers that they need you. Instead of a long list of skills, put a list of how you have helped your previous organizations succeed. Emphasize what you actually did and what result the organization had with your contribution. Avoid anything that would distract from that. Make sure you know what they are looking for, and speak in those terms.&lt;/p&gt;

&lt;p&gt;Cover letters give you a chance to paint a picture of how you can add value to your future employer. List cases of how you will help them get better results with you on board. Use their requirements bullet list to match what you can do with what they need.&lt;/p&gt;

&lt;p&gt;Program your brain for a successful outcome. Keep smiling in the interview. It will allow you to feel and look ten times better. And don’t forget to keep eye contact often.&lt;/p&gt;

&lt;p&gt;Ask questions—it will leave a good impression. Remember that you are the interviewer of your next employer—you want to know if the company is a good fit for you.&lt;/p&gt;

&lt;p&gt;Get feedback and analyze every failure. Failure is the best source of information and inspiration to get better. Turn failures into learning experiences.&lt;/p&gt;

&lt;p&gt;Thus, learn constantly. Make learning your second nature. It’s fun and it’s rewarding.&lt;/p&gt;

&lt;p&gt;Consider working on an open-source project. That’s fun and rewarding too.&lt;/p&gt;

&lt;p&gt;Lastly, enjoy the process! Remember—it is our perspective that makes applying for jobs and attending interviews stressful. With the right attitude, interacting and solving technical problems with your future colleagues can be a lot of fun! Bonus—if they enjoy interviewing you, they will be much more likely to hire you.&lt;/p&gt;

&lt;p&gt;It is absolutely not hard when you know what to do. Reread this article, determine what you need to improve, crush your next interview, and get that dream job. It is absolutely possible!&lt;/p&gt;

&lt;h2&gt;
  
  
  Call To Action
&lt;/h2&gt;

&lt;p&gt;With my job checklist, get the exact steps on how to escape a mediocre job, find an awesome company, apply for a job, and prepare for a successful interview.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://give.iamdi.dev/get-next-level-job-checklist"&gt;&lt;strong&gt;Click here to get the checklist right now!&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>interview</category>
      <category>tips</category>
      <category>jobsearch</category>
    </item>
    <item>
      <title>Add an Image to a PDF file using Node.JS (script)</title>
      <dc:creator>Dmitry Shvetsov</dc:creator>
      <pubDate>Sun, 24 May 2020 13:54:34 +0000</pubDate>
      <link>https://forem.com/dmshvetsov/append-an-image-to-a-pdf-file-with-node-js-script-5bfj</link>
      <guid>https://forem.com/dmshvetsov/append-an-image-to-a-pdf-file-with-node-js-script-5bfj</guid>
      <description>&lt;p&gt;I needed to add a cover for the PDF book. And I did not want to install a huge Acrobat or buy PDF editors for such a simple task. Therefore, I wrote a simple Node.JS script to add an image to the beginning of a PDF file.&lt;/p&gt;

&lt;p&gt;To do this, we need the following packages and modules:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;fs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;fs&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;path&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;assert&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;assert&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;PDFDocument&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;pdf-lib&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Prepare PDF and Image instance with &lt;code&gt;PDFDocument&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;run&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;pathToPDF&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;pathToImage&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;pdfDoc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;PDFDocument&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;load&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;fs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;readFileSync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;pathToPDF&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;img&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;pdfDoc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;embedPng&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;fs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;readFileSync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;pathToImage&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="c1"&gt;// ...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Append a new page to the file and insert an image in full width and height.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;  &lt;span class="c1"&gt;// ...&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;imagePage&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;pdfDoc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;insertPage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;imagePage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;drawImage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;img&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;y&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;imagePage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getWidth&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
    &lt;span class="na"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;imagePage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getHeight&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="c1"&gt;// ...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Save result in a new PDF file in the current directory.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;  &lt;span class="c1"&gt;// ...&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;pdfBytes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;pdfDoc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;save&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;newFilePath&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;basename&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;pathToPDF&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;.pdf&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;&lt;span class="s2"&gt;-result.pdf`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;fs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;writeFileSync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newFilePath&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;pdfBytes&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And the code for running the main function and check that all required arguments are passed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ERRORS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;ARGUMENTS&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Please provide a path to the PDF file as a first argument and path to an image as the second argument&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;pathToPDF&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="nx"&gt;assert&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;notEqual&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;pathToPDF&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ERRORS&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ARGUMENTS&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;pathToImage&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="nx"&gt;assert&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;notEqual&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;pathToImage&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ERRORS&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ARGUMENTS&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;run&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;pathToPDF&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;pathToImage&lt;/span&gt; &lt;span class="p"&gt;}).&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Altogether:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;fs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;fs&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;path&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;assert&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;assert&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;PDFDocument&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;pdf-lib&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;run&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;pathToPDF&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;pathToImage&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;pdfDoc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;PDFDocument&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;load&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;fs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;readFileSync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;pathToPDF&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;img&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;pdfDoc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;embedPng&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;fs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;readFileSync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;pathToImage&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;imagePage&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;pdfDoc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;insertPage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="nx"&gt;imagePage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;drawImage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;img&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;y&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;imagePage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getWidth&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
    &lt;span class="na"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;imagePage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getHeight&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;pdfBytes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;pdfDoc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;save&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;newFilePath&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;basename&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;pathToPDF&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;.pdf&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;&lt;span class="s2"&gt;-result.pdf`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;fs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;writeFileSync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newFilePath&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;pdfBytes&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ERRORS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;ARGUMENTS&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Please provide a path to the PDF file as a first argument and path to an image as the second argument&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;pathToPDF&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="nx"&gt;assert&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;notEqual&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;pathToPDF&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ERRORS&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ARGUMENTS&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;pathToImage&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="nx"&gt;assert&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;notEqual&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;pathToImage&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ERRORS&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ARGUMENTS&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;run&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;pathToPDF&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;pathToImage&lt;/span&gt; &lt;span class="p"&gt;}).&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Usage:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ npm start ../checklist.pdf ~/Downloads/cover.png
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;If you need to append an image to a PDF file quickly get &lt;a href="https://github.com/iamdidev/pdf-append-image"&gt;this script&lt;/a&gt; run &lt;code&gt;npm i&lt;/code&gt; and &lt;code&gt;npm path/to/file.pdf path/to/image.png&lt;/code&gt;.&lt;/p&gt;




&lt;p&gt;Check out &lt;a href="https://twitter.com/iamdidev"&gt;my twitter profile&lt;/a&gt; where every day I share helpful stuff about soft-skills and how to write clean code with good design.&lt;/p&gt;

</description>
      <category>node</category>
    </item>
    <item>
      <title>What would you ask a very experienced software engineer?</title>
      <dc:creator>Dmitry Shvetsov</dc:creator>
      <pubDate>Mon, 11 May 2020 00:38:38 +0000</pubDate>
      <link>https://forem.com/dmshvetsov/what-would-you-ask-a-very-experienced-software-engineer-50i</link>
      <guid>https://forem.com/dmshvetsov/what-would-you-ask-a-very-experienced-software-engineer-50i</guid>
      <description>&lt;p&gt;If you could ask a very experienced Software Engineer any question related to programming, a career in computer science, and professional growth, what would you ask?&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>watercooler</category>
    </item>
    <item>
      <title>Change These 3 Things to Immediately Improve Your Results</title>
      <dc:creator>Dmitry Shvetsov</dc:creator>
      <pubDate>Tue, 05 May 2020 15:30:38 +0000</pubDate>
      <link>https://forem.com/dmshvetsov/change-these-3-things-to-immediately-improve-your-results-38bn</link>
      <guid>https://forem.com/dmshvetsov/change-these-3-things-to-immediately-improve-your-results-38bn</guid>
      <description>&lt;p&gt;What we consume and hold in our minds is essentially our life.&lt;/p&gt;

&lt;h4&gt;
  
  
  Our input is vital.
&lt;/h4&gt;

&lt;p&gt;If we consume garbage, chances are high that our life will be garbage, and as a consequence our output is garbage.&lt;/p&gt;

&lt;p&gt;By just changing input that goes into our minds, we can transform the output that we are bringing to the world.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Photo by &lt;a href="https://unsplash.com/@nineteen?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Andrew Ly&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/action?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Developers Around You Determine Your Level
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Surround yourself only with people who are going to take you higher.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;― Oprah Winfrey&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you are a sole freelancer, or a developer who works with equally strong developers, then you miss out on the possibility of learning from peers. And if you are surrounded by like-minded engineers, then you miss out on the ability to see problems from a different perspective.&lt;/p&gt;

&lt;p&gt;Ichak Adizes, the creator of the Corporate Life Cycle Model, said that if you neglect diversity of ideas and surround yourself with like-minded people, you will drastically reduce the possibility of achieving great results in your group.&lt;/p&gt;

&lt;p&gt;Working on an open-source project or reading other people's code can remedy this issue.&lt;/p&gt;

&lt;p&gt;Be picky about the open-source projects and codebase to read. Choose projects that are challenging and force you to think hard to understand their codebase. Obviously, avoid codebases with poorly written code.&lt;/p&gt;

&lt;p&gt;Watch for your attitude while you work with other people’s code because your perspective reframes the input.&lt;/p&gt;

&lt;p&gt;For example, when you find a piece of code that generates strong negative emotion, your first reaction might be, “Who wrote this ...?” Instead, replace this thought with, “Interesting—why did the programmer write it this way?”&lt;/p&gt;

&lt;p&gt;If that developer is around, you have an amazing opportunity to ask them about it. That person might see and admit the mistake they made. This will benefit you both—our nature is to learn from our mistakes, or even better, from others’ mistakes.&lt;/p&gt;

&lt;p&gt;Another scenario is that the developer will actually give you another perspective on the code that will change your mind, and you will learn from this too.&lt;/p&gt;

&lt;p&gt;Be ready if the other person is defensive and starts to argue with you. This is a waste of time and beneficial to no one.&lt;/p&gt;

&lt;p&gt;So don’t be offensive. Instead of using a “you did” statement (“Why did you write this way? It’s weird.”), use an “I feel” statement (“I feel confused and don’t understand. Can you explain this piece of code to me?”)&lt;/p&gt;

&lt;h2&gt;
  
  
  Garbage In, Garbage Out
&lt;/h2&gt;

&lt;p&gt;Our brain can’t magically produce great ideas from plastic bottles, banana peels, or beer cans. When our input is garbage, our output will be garbage too.&lt;/p&gt;

&lt;p&gt;Most popular content on social media, the radio, and TV can be considered garbage—it’s negative, toxic, or at best just hollow.&lt;/p&gt;

&lt;p&gt;Of course, not every TV show produces low-quality output for your input. The point is to be aware of what you consume.&lt;/p&gt;

&lt;p&gt;This is the case for all sorts of media, including books, podcasts, newspapers, and magazines.&lt;/p&gt;

&lt;h4&gt;
  
  
  Be picky.
&lt;/h4&gt;

&lt;p&gt;Consume content that feeds your brain with great ideas, techniques, and insights. Consume content that helps you hone important skills.&lt;/p&gt;

&lt;p&gt;By consuming useful content, you will gradually build your knowledge base and most likely have fun along the way.&lt;/p&gt;

&lt;p&gt;Next time you pick up an article or search for a TV show, ask yourself, “Will this content add value to what I know, or is it just hollow content that will waste my time?” Ignore everything that doesn’t add value to your life.&lt;/p&gt;

&lt;h2&gt;
  
  
  Knowledge is Not Power—Here's What Actually is
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Knowledge isn’t power until it is applied”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;— Dale Carnegie&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Knowledge is a potential—real power is action.&lt;/p&gt;

&lt;p&gt;After one day, people forget more than 70 percent of what was taught.&lt;/p&gt;

&lt;p&gt;By actually &lt;em&gt;doing&lt;/em&gt;, we anchor what we just learned and start forming a skill.&lt;/p&gt;

&lt;p&gt;Consider an analogy with the human body. If we consume food but don’t exercise, the best we can expect is that our body will be relatively okay and not overweight.&lt;/p&gt;

&lt;p&gt;It’s the same with knowledge. Without applying knowledge to practicing, the best we can expect is that we’ll say, “Oh yeah, I read about this a couple of weeks ago, but can’t remember the details.”&lt;/p&gt;

&lt;p&gt;In her amazing course &lt;a href="https://www.coursera.org/learn/learning-how-to-learn"&gt;“Learning How to Learn”&lt;/a&gt;, Dr. Barbara Oakley teaches how to learn efficiently.&lt;/p&gt;

&lt;p&gt;Our brain operates in two modes: focus mode and diffuse mode. In focus mode, we can think hard about a particular idea. In diffuse mode, our brain is best at finding new ways of solving problems.&lt;/p&gt;

&lt;h4&gt;
  
  
  Use focus mode to solve a problem and diffuse mode to get unstuck.
&lt;/h4&gt;

&lt;p&gt;To anchor some knowledge and create a skill from it, you need to repeat the knowledge over time. Dr. Oakley says that tests work great for this. But we as developers can also apply what we learn by practicing daily when we code. In my opinion, this is even better than tests.&lt;/p&gt;

&lt;p&gt;The best method to anchor knowledge is to apply what you learn &lt;em&gt;right&lt;/em&gt; after you learn it. Then apply it later the same day, then the next day, then in a few days, the next week, and the week after that.&lt;/p&gt;

&lt;p&gt;The best way to master some skill or knowledge it is by using it daily.&lt;/p&gt;

&lt;p&gt;One trick that I found for myself is that I can remember something after one mistake. I can anchor the knowledge if I try to recall it and do it wrong. A single wrong recall is enough for me to remember something, like the path to a file, a password, or a function name and arguments.&lt;/p&gt;

&lt;p&gt;Dr. Oakley emphasizes that a simple understanding is not enough. Understanding in addition to practice, recall, and repetition is the key to mastering knowledge. And the best knowledge is applied knowledge.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Be aware of what information you consume—our input determines the quality of our output.&lt;/li&gt;
&lt;li&gt;Surround yourself with people from whom you can learn. Consider working on an open-source project.&lt;/li&gt;
&lt;li&gt;The attitude with which you consume information affects how it will be perceived.&lt;/li&gt;
&lt;li&gt;Do not lose what you have learned—apply immediately.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Ready to Upgrade?
&lt;/h2&gt;

&lt;p&gt;I've created a framework to help you eliminate unproductive activities, reduce decision fatigue, and plan your weeks for effortless execution. If you want to take your productivity to the next level, check out my &lt;strong&gt;Productivity Framework&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://give.iamdi.dev/productivity-framework-for-programmers"&gt;Get the Productivity Framework here!&lt;/a&gt;&lt;/p&gt;

</description>
      <category>motivation</category>
      <category>career</category>
      <category>learning</category>
      <category>betterprogrammer</category>
    </item>
    <item>
      <title>🎵 Productivity / Focus / Brain Music and It's Effect</title>
      <dc:creator>Dmitry Shvetsov</dc:creator>
      <pubDate>Sat, 02 May 2020 04:28:53 +0000</pubDate>
      <link>https://forem.com/dmshvetsov/productivity-focus-brain-music-and-it-s-effect-2om6</link>
      <guid>https://forem.com/dmshvetsov/productivity-focus-brain-music-and-it-s-effect-2om6</guid>
      <description>&lt;p&gt;Dev community!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How many of you listen to music for productivity, focus, brain stimulation? Share your experiences and opinions on this subject.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here are some services that I know.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. &lt;a href="https://listenonrepeat.com/"&gt;Listen on repeat&lt;/a&gt;
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;In her book, On Repeat: How Music Plays the Mind, psychologist Elizabeth Hellmuth Margulis explains why listening to music on repeat improves focus. When you're listening to a song on repeat, you tend to dissolve into the song, which blocks out mind wandering (let your mind wander while you're away from work!).&lt;br&gt;
&lt;a href="https://www.inc.com/benjamin-p-hardy/this-music-is-incredible-for-focus-creativity.html"&gt;source&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  2. &lt;a href="https://www.brain.fm/"&gt;brain.fm&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;They are using &lt;a href="https://www.brain.fm/science"&gt;science approach&lt;/a&gt; to create different music that affects the brain in the way you need.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. &lt;a href="https://www.youtube.com/playlist?list=PLnOC9rlyvdSkWQt5YqEsVJKzrsvfnid_-"&gt;Focus music for productivity and concentration&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;One of many channels on YouTube that claim that their music affects creativity, productivity, focus, and mental state.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;What your thoughts on this?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>music</category>
      <category>productivity</category>
      <category>focus</category>
    </item>
    <item>
      <title>Do you hate mornings? Here’s how I learned to love them</title>
      <dc:creator>Dmitry Shvetsov</dc:creator>
      <pubDate>Thu, 30 Apr 2020 23:31:55 +0000</pubDate>
      <link>https://forem.com/dmshvetsov/do-you-hate-mornings-here-s-how-i-learned-to-love-them-l26</link>
      <guid>https://forem.com/dmshvetsov/do-you-hate-mornings-here-s-how-i-learned-to-love-them-l26</guid>
      <description>&lt;p&gt;If your mornings begin with the thought "I don't want to get up,” then I’ve got a perfect recipe for you to get rid of this feeling and finally start to love your mornings.&lt;/p&gt;

&lt;p&gt;You may have noticed that how your morning is affects how your entire day goes.&lt;/p&gt;

&lt;p&gt;There are two things that have the greatest effect on your mornings: first, what you do before bed, and second, what you do right after hearing the alarm.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Photo by &lt;a href="https://unsplash.com/@entersge?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Vladislav Muslakov&lt;/a&gt; on &lt;a href="https://unsplash.com/?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Before Going To Bed
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Your future depends on what you do today.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;– Mahatma Gandhi&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Here’s the recipe for a perfect end to your day and preparation for the next day:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;60 minutes before bed, put your phone on airplane mode.&lt;/li&gt;
&lt;li&gt;Avoid TV, monitors, and other screens for 60 minutes before bed.&lt;/li&gt;
&lt;li&gt;Stop thinking about work—one of the best ways to do this is to spend quality time with your loved ones.&lt;/li&gt;
&lt;li&gt;Reflect on your day—notice what worked and what didn’t.&lt;/li&gt;
&lt;li&gt;Write down your thoughts, insights, and worries in a physical journal. (Remember, no screens before bed.)&lt;/li&gt;
&lt;li&gt;Ask yourself questions to find the answers to the next day.&lt;/li&gt;
&lt;li&gt;Before you close your eyes, tell yourself: “I will wake up at ____ and will get ____ hours of sleep. This is plenty of sleep and exactly what I need to feel great and perform at peak level tomorrow.”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let’s face it—we programmers spend an enormous amount of time in front of monitors.&lt;/p&gt;

&lt;p&gt;The blue light that's emitted from screens delays the release of sleep-inducing melatonin, increases alertness, and resets the body's internal clock—all making it harder to fall asleep.&lt;/p&gt;

&lt;p&gt;A lack of 7+ quality hours of sleep will lower your ability to learn the next day. Learning is crucial for programmers because we are required to learn new things almost on a daily basis.&lt;/p&gt;

&lt;p&gt;The time before bed is best for reflecting on what's happened during the day. By putting your thoughts on paper, you are detaching yourself from them, which will prevent the thoughts from churning in your head when you go to bed.&lt;/p&gt;

&lt;p&gt;Writing down ideas will also ensure that you won’t lose them. I reread all my writings at the end of the week or month, and often I’ll run across an interesting idea and wonder why I haven’t tried to implement it yet.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Never go to sleep without a request to your subconscious”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;―  Thomas Edison&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There is something within you that can work even when you sleep, relax, or take a shower. It is your subconscious mind.&lt;/p&gt;

&lt;p&gt;Use your subconscious mind to find the answers to your most important questions. Each night, you have this opportunity.&lt;/p&gt;

&lt;p&gt;Take time to write down questions just before going to bed. Again, you can use your journal for this. Questions must be as specific as possible and related to a single thing that you want your subconscious to work on. This is important because it directly affects the quality of the answers that you will get the next day.&lt;/p&gt;

&lt;p&gt;Once I asked my subconscious to recall the password for an account that I rarely used. I had tried some passwords that I thought would work but without any luck. I was on a trip and didn’t have any of the tools that I usually use to recover my passwords. So I gave my subconscious the task to recall that password. The first thing the next morning, I took a moment to think about the forgotten password, and boom! I immediately knew the answer, and the password worked.&lt;/p&gt;

&lt;h2&gt;
  
  
  First Thing In The Morning
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Your eyes can only see and your ears can only hear what your brain is looking for."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;–  Dan Sullivan&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Here is the recipe for the perfect beginning to each morning:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Avoid checking your phone. You put it on airplane mode yesterday, right?&lt;/li&gt;
&lt;li&gt;Avoid social media and news. They put you in reactive mode.&lt;/li&gt;
&lt;li&gt;Write down the ideas that your subconscious mind developed during sleep.&lt;/li&gt;
&lt;li&gt;Speak out loud or write down the affirmation of what life you want or what person you want to become. Do it in the present tense, as if it had already happened.&lt;/li&gt;
&lt;li&gt;Visualize in detail what you do and feel in your ideal life.&lt;/li&gt;
&lt;li&gt;Read or listen to a great book.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Don’t snooze your alarm. This habit will make the above points impossible to do. You will lose time, you will feel guilty, and will put yourself in procrastination mode.&lt;/p&gt;

&lt;p&gt;Instead, get straight out of bed, go to the kitchen, and drink a big glass of water. You will change your environment and give your body what it needs the most—a lot of water.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“How you do anything is how you do everything”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;– Multiple successful people&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Morning is a precious time because it’s the most creative time. Write down your thoughts and ideas.&lt;/p&gt;

&lt;p&gt;If you love to meditate or pray, then combine these activities with writing down your thoughts. Another option is to just sit and enjoy the silence for 5-10 minutes, waiting for ideas to come.&lt;/p&gt;

&lt;p&gt;After you are done putting your output onto paper, speak out loud or write down your ultimate desire. It can be a goal, outcome, aim, or affirmation describing the life you want.&lt;/p&gt;

&lt;p&gt;Do it in the present tense like it already happened. Then visualize what you will do and feel when your desire comes true. This will deeply anchor in your subconscious what you truly want.&lt;/p&gt;

&lt;p&gt;It’s rare to find things on social media and in the news that are inspiring, uplifting, useful for your mind, and that help you crush your day. So the best thing is to avoid these completely.&lt;/p&gt;

&lt;p&gt;Also, taking a cold shower is an amazing way to put you in an “unstoppable” mode. I am far from considering myself a superhero or a person who enjoys the cold. I am always asking myself “Ready?” before turning the cold water faucet, and the answer is always “No!” But right after I spend 15-30 seconds in the freezing cold, I feel the heat of the body and the fact that nothing can stop me.&lt;/p&gt;

&lt;p&gt;While you commute to work, listen to or read a good book that helps you level up. If you are a remote worker, then you’ve already saved your commute time and can invest in valuable information by consuming books often.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“A well spent day brings happy sleep.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;– Leonardo da Vinci&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I began to love mornings because it is the most creative time for me. The time when I am charged and full of enthusiasm. Everyone can achieve that by following the process.&lt;/p&gt;

&lt;p&gt;Before bed, summarize and wrap up your day:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reflect on what worked well and what didn’t.&lt;/li&gt;
&lt;li&gt;Put your thoughts and problems on paper.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then prepare your springboard for the next day:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Avoid screens before bed.&lt;/li&gt;
&lt;li&gt;Detach from your work.&lt;/li&gt;
&lt;li&gt;Put your phone in airplane mode.&lt;/li&gt;
&lt;li&gt;Ask questions to your subconscious mind.&lt;/li&gt;
&lt;li&gt;Make an affirmation that you will wake up tomorrow with plenty of energy.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Finally, start your day right first thing in morning:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Don’t snooze the alarm and start the day with procrastination—get out of bed right away.&lt;/li&gt;
&lt;li&gt;Avoid checking your phone, social media, and news that put you in reactive mode—you want to be proactive.&lt;/li&gt;
&lt;li&gt;Write down answers and ideas from your subconscious mind—you are the most creative in the morning.&lt;/li&gt;
&lt;li&gt;Write down desirable outcomes and visualize in detail how they’ll happen, acting as if they already happened.&lt;/li&gt;
&lt;li&gt;Read or listen to a great book.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then repeat this process! A great morning leads to a great day, a great day leads to good sleep, and this becomes a springboard to jumpstart the next day.&lt;/p&gt;

&lt;h2&gt;
  
  
  Call To Action
&lt;/h2&gt;

&lt;p&gt;I’ve created a productivity framework for eliminating unproductive activities, reducing decision fatigue, and planning weeks for effortless execution.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://give.iamdi.dev/productivity-framework-for-programmers"&gt;Get the Productivity Framework here!&lt;/a&gt;&lt;/p&gt;

</description>
      <category>motivation</category>
      <category>mentalhealth</category>
      <category>watercooler</category>
      <category>betterprogrammer</category>
    </item>
    <item>
      <title>3 Smart Ways To Increase Learnability, Confidence, and Results</title>
      <dc:creator>Dmitry Shvetsov</dc:creator>
      <pubDate>Wed, 29 Apr 2020 00:52:06 +0000</pubDate>
      <link>https://forem.com/dmshvetsov/3-smart-ways-to-increase-learnability-confidence-and-results-c1e</link>
      <guid>https://forem.com/dmshvetsov/3-smart-ways-to-increase-learnability-confidence-and-results-c1e</guid>
      <description>&lt;p&gt;You can master skills faster, be in control of your mind, and boost your brain activity by changing how you use your body. Because our bodies are our greatest assets, we should view it as a tool and use it wisely.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sleep: The Brain’s Commit Button
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;“Sleep is the best meditation.”&lt;/p&gt;

&lt;p&gt;– Dalai Lama&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A study of violinists, led by K. Anders Ericsson, found that it is sleep that separates the good violinists from the best ones. The best performers sleep an average of one hour more than the others. They also rest more and tend to take a nap in the middle of the day.&lt;/p&gt;

&lt;p&gt;Sleep helps greatly with the ability to problem-solve. Sleep is a source of peak performance. And sleep is a necessity for being able to learn new things. All three of these are crucial for software engineers.&lt;/p&gt;

&lt;p&gt;Sleep is a vital part of getting smarter. This is because when we sleep, our brain transports information from short-term memory to long-term memory and creates a connection between learned concepts and what we already know.&lt;/p&gt;

&lt;p&gt;This process flushes the hippocampus, which in turn allows you to absorb new information. Without sleep, the hippocampus would be overloaded and unable to accommodate new information.&lt;/p&gt;

&lt;p&gt;In a &lt;a href="https://www.ted.com/talks/matt_walker_sleep_is_your_superpower?language=en"&gt;TED talk about sleep&lt;/a&gt;, Matt Walker talks about an “experiment” that our governments perform on us. We undergo this experiment twice a year—1.6 billion people across 70 countries—and it is called Daylight Savings Time.&lt;/p&gt;

&lt;p&gt;In spring, when we lose one hour of sleep, there is a 24% increase in heart attacks the following day. In autumn, when we gain one hour of sleep, a 21% reduction in heart attacks is observed. Similar data is found for car crashes, traffic accidents, and suicide rates.&lt;/p&gt;

&lt;p&gt;Matt continues by stating that there is a 70% drop in the immune system after a single night of only 4 hours of sleep instead of the required 7-9 hours. You become literally unprotected just after one sleepless night.&lt;br&gt;
He also shares secrets for improving the quality of sleep, which is just as important as quantity:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reduce alcohol and caffeine consumption.&lt;/li&gt;
&lt;li&gt;Go to bed at the same time and wake up at the same time every day.&lt;/li&gt;
&lt;li&gt;Cool down the room to fall asleep.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Lack of sleep robs you of your ability to learn and operate at a high level. So next time you consider sacrificing a couple hours of sleep to do more today, stop and think how much it will take away from tomorrow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Body And Mind: Two-Way Binding
&lt;/h2&gt;

&lt;p&gt;You can change the way you feel by changing your body language.&lt;/p&gt;

&lt;p&gt;Amy Cuddy did a research study in the Department of Psychology at Harvard University that revealed that people who sat in power poses for a couple of minutes felt more powerful afterward.&lt;/p&gt;

&lt;p&gt;Another study, by Jessica Tracy from the University of British Columbia and David Matsumoto from San Francisco State University, analyzed the 2004 Judo Olympic and Paralympic competitions.&lt;/p&gt;

&lt;p&gt;They looked at 12 blind athletes who were blind from birth and who had therefore never seen people celebrating victory or handling loss. &lt;/p&gt;

&lt;p&gt;Surprisingly, when these blind athletes won, they made gestures of pride similar to the sighted athletes, and when they lost, they slumped their shoulders and narrowed their chests in shame just like the sighted athletes.&lt;/p&gt;

&lt;p&gt;Bidirectional connection between our mind and body can allow us to manipulate our mind by replicating body postures and movements to achieve a desirable state of mind.&lt;/p&gt;

&lt;p&gt;Another bit of research comes from my wife. When she is under pressure and wants to have fun, she starts dancing. This works for her as a stress-reducing activity—proven by multiple experiments in our home!&lt;/p&gt;

&lt;p&gt;Another body motion that benefits the mind is walking. Studies in Stanford University revealed the positive effect of walking on creative thinking.&lt;/p&gt;

&lt;p&gt;Harvard University studies have suggested that the parts of the brain that control thinking and memory have greater volume in people who exercise versus people who don’t. Aerobic exercise that gets your heart beating faster and makes you sweat affects the brain in ways that improve memory and thinking skills.&lt;/p&gt;

&lt;p&gt;Next time when you need a spark of creativity or are searching for a solution, try to get away from your desk and take a walk.&lt;/p&gt;

&lt;p&gt;Key takeaway: our body is a tool. So use it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Make movements of joy when you want to overcome stressful situations.&lt;/li&gt;
&lt;li&gt;Stand in a powerful, confident pose when you lack confidence.&lt;/li&gt;
&lt;li&gt;Take a walk when stuck on a problem.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Brain Fuel
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;“You don’t need a silver fork to eat good food.”&lt;/p&gt;

&lt;p&gt;– Paul Prudhomme&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;What we eat affects how our brain operates, how we feel physically, and our mood.&lt;/p&gt;

&lt;p&gt;Studies have shown that students' dietary habits affect their grades.&lt;br&gt;
Football manager Arsène Wenger changed the English Football Premier League with his diet regimens that revitalized Arsenal and led the football club to “the invincible” season without a single game lost—the only case in modern English football.&lt;/p&gt;

&lt;p&gt;Food has a direct impact on our performance, including our cognitive performance, which is why the wrong choice at breakfast or lunch can ruin your day.&lt;/p&gt;

&lt;p&gt;Avoid foods with high glycemic indexes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Doughnuts&lt;/li&gt;
&lt;li&gt;Pancakes&lt;/li&gt;
&lt;li&gt;Soda&lt;/li&gt;
&lt;li&gt;Dates&lt;/li&gt;
&lt;li&gt;White bread&lt;/li&gt;
&lt;li&gt;Potatoes&lt;/li&gt;
&lt;li&gt;Sugar candies&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This kind of food creates peaks of glucose and dips right after the peak. This results in a bad mood and shortens our attention span. We are definitely not the best developers when we are in a bad mood and can’t focus on the task at hand.&lt;/p&gt;

&lt;p&gt;Replace high-glycemic food with oats, grains, and legumes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Barley&lt;/li&gt;
&lt;li&gt;Black Rice and Wild Rice&lt;/li&gt;
&lt;li&gt;Buckwheat&lt;/li&gt;
&lt;li&gt;Bulgur&lt;/li&gt;
&lt;li&gt;Oats&lt;/li&gt;
&lt;li&gt;Quinoa&lt;/li&gt;
&lt;li&gt;Rye&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Drinking water is also very important for your brain and its activity. Drink 8-ounce glasses (or 250 ml) of water 8 times a day.&lt;br&gt;
Some foods can take away from our brains, but some can give.&lt;/p&gt;

&lt;p&gt;Here is the list of superfoods to supercharge your brain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Blueberries&lt;/li&gt;
&lt;li&gt;Avocados&lt;/li&gt;
&lt;li&gt;Broccoli&lt;/li&gt;
&lt;li&gt;Coconut Oil&lt;/li&gt;
&lt;li&gt;Eggs&lt;/li&gt;
&lt;li&gt;Kale&lt;/li&gt;
&lt;li&gt;Salmon&lt;/li&gt;
&lt;li&gt;Turmeric&lt;/li&gt;
&lt;li&gt;Walnuts&lt;/li&gt;
&lt;li&gt;Soy Products&lt;/li&gt;
&lt;li&gt;Dark Chocolate.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Master skills faster with 7-8 hours sleep and include rest during the day.&lt;/p&gt;

&lt;p&gt;Be in control of your mind. When negative emotions overwhelm you, use your body to fight your state of mind:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Make movements of joy when you want to overcome stressful situations.&lt;/li&gt;
&lt;li&gt;Stand in a powerful, confident pose when you lack confidence.&lt;/li&gt;
&lt;li&gt;Take a walk when stuck on a problem.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Give your brain what it needs to get better results:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Drink 8-ounce (or 250 ml) glasses of water 8 times a day.&lt;/li&gt;
&lt;li&gt;Avoid dips in your mood and ability to focus by including in your daily diet more low-glycemic foods like oats, grains, and legumes.&lt;/li&gt;
&lt;li&gt;Supercharge your brain with superfood.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Ready to Upgrade Your Productivity to the Next Level?
&lt;/h2&gt;

&lt;p&gt;I've created a productivity framework for eliminating unproductive activities, reducing decision fatigue, and planning weeks for effortless execution.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://give.iamdi.dev/productivity-framework-for-programmers"&gt;Get the Productivity Framework here!&lt;/a&gt;&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>learning</category>
      <category>mentalhealth</category>
      <category>betterprogrammer</category>
    </item>
  </channel>
</rss>
