<?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>DEV Community: Tanaka Mutakwa</title>
    <description>The latest articles on DEV Community by Tanaka Mutakwa (@tanakamutakwa).</description>
    <link>https://dev.to/tanakamutakwa</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%2F572019%2F5796c902-2731-4c21-bc5f-9ec9c886338d.jpg</url>
      <title>DEV Community: Tanaka Mutakwa</title>
      <link>https://dev.to/tanakamutakwa</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tanakamutakwa"/>
    <language>en</language>
    <item>
      <title>Improving your communication skills as a software developer</title>
      <dc:creator>Tanaka Mutakwa</dc:creator>
      <pubDate>Tue, 23 Nov 2021 20:43:42 +0000</pubDate>
      <link>https://dev.to/tanakamutakwa/improving-your-communication-skills-as-a-software-developer-3hh0</link>
      <guid>https://dev.to/tanakamutakwa/improving-your-communication-skills-as-a-software-developer-3hh0</guid>
      <description>&lt;p&gt;Communication with other people is an important part of a software developer’s career. As a software developer, you will often communicate with other developers on your team, non-technical people on your team, stakeholders, and users of your software.&lt;/p&gt;

&lt;p&gt;Having good communication skills will help you work well with your team and others through communicating your messages across effectively.&lt;/p&gt;

&lt;p&gt;Software development is a technical field and developing your technical skills often takes priority over other skills. However, it can be argued that communication skills are equally as important as technical skills. Failures in software teams result more often from communication issues than from technical problems.&lt;/p&gt;

&lt;p&gt;Software developers are often expected to naturally have good communication skills. However, this is not the case in reality. Most software developers have poor or underdeveloped communication skills. Similar to technical skills, you have to work on improving your communication skills. Both written and spoken communication skills are important to develop.&lt;/p&gt;

&lt;p&gt;In this article you will learn different approaches you can use to improve your communication skills as a software developer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Learn to listen
&lt;/h2&gt;

&lt;p&gt;Listening is the most important skill to develop if you want to become a good communicator. This is because great communication happens when all parties reach a point of mutual understanding.&lt;/p&gt;

&lt;p&gt;In a highly technical job such as software development, reaching a mutual understanding is even more important. Differences in understanding of an implementation can lead to errors and bugs, extended project timelines, and disappointment from unmet expectations.&lt;/p&gt;

&lt;p&gt;As human beings we often rush to express our thoughts and opinions without allowing the person we are communicating with to finish speaking. We stop listening the moment we think of an opposing point or what is we believe is a better idea. This leads to bad communication habits.&lt;/p&gt;

&lt;p&gt;To improve your communication, you must learn to not interrupt others when they speak to you. Listen carefully to what the other person is saying. Give them time to say everything they want to say before you add to the conversation. When you are ready to add your own thoughts to the conversation, one thoughtful technique is to quickly rephrase what the other person just said so it is clear that you have understood what they are communicating.&lt;/p&gt;

&lt;p&gt;Your body language also plays an important role when you are listening to someone else speaking to you. Being engaged in the conversation shows you are interested in what the other person has to say and is also a sign of respect. Have a comfortable amount of eye contact, stand/sit with a good posture, focus on the conversation (don’t look elsewhere or use your phone).&lt;/p&gt;

&lt;p&gt;Listening is fundamental to good communication and should be the first skill you work on improving as a software developer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Present your work to others
&lt;/h2&gt;

&lt;p&gt;As a software developer it is important to be good at communicating about your work and ideas with others. This is how good collaboration starts. You have to be able to express yourself clearly when talking about what you built, why you built it, and how you built it.&lt;/p&gt;

&lt;p&gt;You have to be able to determine how to communicate appropriately depending on context. Most of the time you will be communicating with other developers and you can communicate in a very technical way. Other times you will be communicating with a non-technical audience and you will need to communicate in a way people understand what you are saying without using technical jargon.&lt;/p&gt;

&lt;p&gt;One of the best ways to practice improving spoken communication is through presenting your work to others. Present your work to your team and other people. Volunteer to be the presenter at team demos, code reviews, stand-ups, and any other opportunities that are available in your workplace.&lt;/p&gt;

&lt;p&gt;Always ask for feedback from a few people after you have presented your work.  &lt;a href="https://thenewdeveloper.substack.com/p/feedback"&gt;Use the feedback&lt;/a&gt;  to help you improve your future presentations. Over time you will become better at expressing your ideas and talking about your work. It will also become less stressful when you have to present your work to others.&lt;/p&gt;

&lt;h2&gt;
  
  
  Speak at meetups and conferences
&lt;/h2&gt;

&lt;p&gt;Public speaking can be a nerve wrecking experience for software developers. One of the best ways to improve your public speaking skills is by committing to speak at a software meetup or conference.&lt;/p&gt;

&lt;p&gt;Identify some meetups of conferences in your area and apply to speak about a topic you are passionate about. Once you are selected as a speaker for a meetup or conference you will have to practice so you can deliver a great talk. This is where all the learning happens.&lt;/p&gt;

&lt;p&gt;You will need to develop skills such as making good eye contact with the audience, speaking at a volume everyone can hear you, using good body language and posture, and speaking with clarity. All these skills that are useful for delivering a great talk will improve your general communication skills as a side-effect.&lt;/p&gt;

&lt;p&gt;If you constantly practice public speaking you will improve your spoken communication skills.&lt;/p&gt;

&lt;h2&gt;
  
  
  Write documentation
&lt;/h2&gt;

&lt;p&gt;Writing some documentation will provide you with an excellent and free written communication exercise. As a software developer working in a team there will be many opportunities to write some required documentation.&lt;/p&gt;

&lt;p&gt;Examples of documentation written by software developers includes, deploy notes, code review notes, user instructions, API documentation, incident reports, product / project proposals and many others. All these documents need to be written with clear communication for their audience.&lt;/p&gt;

&lt;p&gt;To improve your written communication skills, volunteer to write some documentation when the opportunities present themselves. Always  &lt;a href="https://thenewdeveloper.substack.com/p/feedback"&gt;ask for feedback&lt;/a&gt;  from the audience of the documentation that you write. This will help you improve any future documents that your write.&lt;/p&gt;

&lt;p&gt;The documentation that you write can be technical or non-technical. Both are important aspects of day-to-day software developer communication.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start a blog
&lt;/h2&gt;

&lt;p&gt;Starting your own blog is also another great way to practice and improve your written communication skills. Having your own blog will give you a public audience and you will need to learn how to write your blog posts so they communicate topics in a simple way with clarity.&lt;/p&gt;

&lt;p&gt;On your blog you can write about any topics that you are passionate about. This will help with your motivation for starting a blog and publishing blog posts consistently. Remember writing consistently is the best form of practice and over time your writing skills will improve.&lt;/p&gt;

&lt;p&gt;If you keep comments from the audience open on your blog you will also be able to receive feedback from your audience. Use the feedback to improve future posts and improve how you communicate back-and-forth with the audience.&lt;/p&gt;

&lt;p&gt;Over time you will become more confident about how you express your thoughts publicly which is a skill all software developers require as they work in teams over their careers.&lt;/p&gt;

&lt;h2&gt;
  
  
  The New Developer
&lt;/h2&gt;

&lt;p&gt;This article was originally published on  &lt;a href="https://thenewdeveloper.substack.com/"&gt;The New Developer&lt;/a&gt;. Head over there if you like this post and want to read others like it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;As a software developer, being able to communicate in a clear and concise way is fundamental to having a successful career. Software developers rarely work in isolation. There are other parties involved, other developers, stakeholders, users and many others.&lt;/p&gt;

&lt;p&gt;Technical skills development is often given priority by software developers, however, improving communication skills is also very important. In this article you learned about different approaches you can use to improve your communication skills as a software developer.&lt;/p&gt;

&lt;p&gt;I am interested to hear what other approaches you are using to improve your communication skills? Let me know in the comments.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>programming</category>
      <category>codenewbie</category>
      <category>career</category>
    </item>
    <item>
      <title>What is Code Coverage?</title>
      <dc:creator>Tanaka Mutakwa</dc:creator>
      <pubDate>Mon, 15 Nov 2021 06:20:38 +0000</pubDate>
      <link>https://dev.to/tanakamutakwa/what-is-code-coverage-438a</link>
      <guid>https://dev.to/tanakamutakwa/what-is-code-coverage-438a</guid>
      <description>&lt;p&gt;Testing is an important part of the software development cycle. It gives you confidence that the code you have written works as expected. &lt;/p&gt;

&lt;p&gt;You may be thinking about how you can measure if you have done enough testing on your code. Are you confident your tests cover all the different scenarios your code will run? This is where code coverage comes in.&lt;/p&gt;

&lt;p&gt;You may have heard the term code coverage mentioned already in your workplace and you are not quite sure what it means or where it fits in.&lt;/p&gt;

&lt;p&gt;In this article you will learn what code coverage is, how code coverage is calculated, and how much code coverage to aim for in your tests.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Code Coverage?
&lt;/h2&gt;

&lt;p&gt;Code coverage is a metric that can help you understand how much of your source code is tested.&lt;/p&gt;

&lt;p&gt;A program with high code coverage, measured as a percentage, has more of its source code executed when you run its test suite, which suggests it has a lower chance of containing undetected software bugs compared to a program with low code coverage.&lt;/p&gt;

&lt;p&gt;Code coverage is a very useful metric that can help you assess the quality of your test suite.&lt;/p&gt;

&lt;h2&gt;
  
  
  How is Code Coverage Calculated?
&lt;/h2&gt;

&lt;p&gt;To measure what percentage of your code is tested, one or more coverage criteria are used. Coverage criteria are usually defined as rules or requirements, which a test suite needs to satisfy.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://cdn.substack.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F82760312-7bbd-48ea-87e8-306008395ce7_1200x676.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9cV6KJHe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.substack.com/image/fetch/w_1456%2Cc_limit%2Cf_auto%2Cq_auto:good%2Cfl_progressive:steep/https%253A%252F%252Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%252Fpublic%252Fimages%252F82760312-7bbd-48ea-87e8-306008395ce7_1200x676.png" alt="A code coverage report for one file" width="880" height="496"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A code coverage report for one file (source: &lt;a href="https://www.atlassian.com/continuous-delivery/software-testing/code-coverage"&gt;https://www.atlassian.com/continuous-delivery/software-testing/code-coverage&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Code coverage tools will use one or more criteria to determine how your code was exercised or not during the execution of your test suite. The common metrics that you might see mentioned in your coverage reports include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Function coverage: how many of the functions defined in your source code have been called.&lt;/li&gt;
&lt;li&gt;  Statement coverage: how many of the statements in the source code have been executed.
&lt;/li&gt;
&lt;li&gt;  Branches coverage: how many of the branches of the control structures (if statements for instance) have been executed.
&lt;/li&gt;
&lt;li&gt;  Condition coverage: how many of the boolean sub-expressions have been tested for a true and a false value.
&lt;/li&gt;
&lt;li&gt;  Line coverage: how many lines of your source code have been tested.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These metrics are usually represented as a coverage percentage - the number of items actually tested divided by the total items found in your source code (items tested / items found).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://cdn.substack.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8059fdd-d5d2-4007-a89e-5bbfdf18055e_1200x676.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mlU6rIlj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.substack.com/image/fetch/w_1456%2Cc_limit%2Cf_auto%2Cq_auto:good%2Cfl_progressive:steep/https%253A%252F%252Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%252Fpublic%252Fimages%252Fc8059fdd-d5d2-4007-a89e-5bbfdf18055e_1200x676.png" alt="A code coverage report for a full source code" width="880" height="496"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A code coverage report for a full source code (source: &lt;a href="https://www.atlassian.com/continuous-delivery/software-testing/code-coverage"&gt;https://www.atlassian.com/continuous-delivery/software-testing/code-coverage&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;A good code coverage tool will give you the percentage of the source code that is tested, and also allow you to dig into the coverage reports to see the actual items that weren't covered by tests and then use that to identify critical parts of your application that still need to be tested.&lt;/p&gt;

&lt;p&gt;There are many code coverage reporting tools. Examples such as  &lt;a href="https://istanbul.js.org/"&gt;Istanbul&lt;/a&gt;  for the Javascript programming language and  &lt;a href="https://about.codecov.io/tool/simplecov/"&gt;SimpleCov&lt;/a&gt;  for the Ruby programming language.&lt;/p&gt;

&lt;p&gt;A simple search for your “&lt;em&gt;[programming language/framework] code coverage&lt;/em&gt;” will present you with options. You might find several options to create coverage reports depending on the programming language/framework you use. Select your preferred option for your project.&lt;/p&gt;

&lt;p&gt;You can then integrate code coverage into your daily development workflow - when you run your tests locally, and in your Continuous Integration (CI) reports on pull requests or merge requests.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is 100% Code Coverage the Goal?
&lt;/h2&gt;

&lt;p&gt;Having a high code coverage means most of your source code is tested. This is a good thing, however, you need to be careful about only looking at code coverage in isolation. A high percentage of code coverage could still be problematic if critical parts of your application are not being tested, or if the existing tests are not robust enough to properly capture failures upfront.&lt;/p&gt;

&lt;p&gt;It is generally accepted that having 80% code coverage is a good goal to aim for. Trying to reach a higher coverage might turn out to be costly, while not necessarily producing enough benefit.&lt;/p&gt;

&lt;p&gt;If you are just starting with testing and you run your code coverage tool you will likely find that you have a low percentage of code coverage. This is normal and you can gradually increase the coverage over time. As you add new features or are refactoring existing code, make sure you are adding tests to cover your code and increase your code coverage.&lt;/p&gt;

&lt;p&gt;While code coverage is a good metric of how much testing you are doing, it is not necessarily a good metric of how well you are testing your product. Achieving great coverage is an excellent goal, but it should be paired with having a robust and high-quality test suite that can ensure that the source code behaves as expected.&lt;/p&gt;

&lt;h3&gt;
  
  
  The New Developer
&lt;/h3&gt;

&lt;p&gt;This article was originally published on  &lt;a href="https://thenewdeveloper.substack.com/"&gt;The New Developer&lt;/a&gt;. Head over there if you like this post and want to read others like it.&lt;/p&gt;

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

&lt;p&gt;To recap - In this article, you learned that code coverage is a measure that tells you how much of your source code is tested. It helps you measure the efficiency of your test implementation.&lt;/p&gt;

&lt;p&gt;The five code coverage methods are - Function coverage, Statement coverage, Branches coverage, Condition coverage, and Line coverage.&lt;/p&gt;

&lt;p&gt;You should aim to have a high code coverage, however, 100% coverage may not be realistic or necessary. You should also ensure that your tests are good quality tests that give you confidence about your source code.&lt;/p&gt;

&lt;p&gt;Are you measuring code coverage in your day-to-day work? How is that working for you?&lt;/p&gt;

</description>
      <category>testing</category>
      <category>beginners</category>
      <category>programming</category>
      <category>webdev</category>
    </item>
    <item>
      <title>What is unit testing?</title>
      <dc:creator>Tanaka Mutakwa</dc:creator>
      <pubDate>Mon, 08 Nov 2021 19:12:45 +0000</pubDate>
      <link>https://dev.to/tanakamutakwa/what-is-unit-testing-2dg7</link>
      <guid>https://dev.to/tanakamutakwa/what-is-unit-testing-2dg7</guid>
      <description>&lt;p&gt;Testing is one of the key parts of your software development workflow when you are building a software system.&lt;/p&gt;

&lt;p&gt;As a software developer, you want the programs you write to work as expected. You want the programs you write to be bug-free so that only the best product reaches the end-user. Testing can help give you confidence that your code works as expected.&lt;/p&gt;

&lt;p&gt;In this article, we are going to discuss a testing approach known as unit testing. What are unit tests? How should you implement them? What are their benefits and limitations?&lt;/p&gt;

&lt;h3&gt;
  
  
  What are unit tests?
&lt;/h3&gt;

&lt;p&gt;The goal of unit testing is to isolate each part of a program and show that the individual parts work as expected.&lt;/p&gt;

&lt;p&gt;Unit tests are automated tests written and run by software developers to ensure that a section of an application (known as the unit) works as expected.&lt;/p&gt;

&lt;p&gt;A unit is the smallest piece of code that can be logically isolated in a system. This may be an individual function, method, procedure, module, class, or object. Generally, a unit has a few inputs and a single output.&lt;/p&gt;

&lt;p&gt;Unit testing is done during the development (coding phase) of an application by the software developers.&lt;/p&gt;

&lt;p&gt;The entire system will only be able to work well if the individual parts are working well. By writing tests for the smallest testable units, software developers build confidence that the entire system will work as expected.&lt;/p&gt;

&lt;p&gt;Once a software developer writes a unit test they can run it on their local machine to check if the test passes. They can also run all the other pre-existing tests to check if they are still passing.&lt;/p&gt;

&lt;p&gt;Software developers generally use a unit test framework to develop automated test cases for unit testing. Unit test frameworks are software tools to support writing and running unit tests, including a foundation on which to build tests and the functionality to execute the tests and report their results.&lt;/p&gt;

&lt;p&gt;There are unit testing frameworks for most popular programming languages. Some examples of popular unit test frameworks are  &lt;a href="https://jestjs.io/"&gt;Jest&lt;/a&gt;  for Javascript,  &lt;a href="https://junit.org/"&gt;JUnit&lt;/a&gt;  for Java, and  &lt;a href="https://nunit.org/"&gt;NUnit&lt;/a&gt;  for all .Net languages.&lt;/p&gt;

&lt;p&gt;During test case execution, frameworks log tests that fail any criterion and report them in a summary. Depending on the severity of a failure, the framework may halt subsequent testing.&lt;/p&gt;

&lt;p&gt;Unit tests can also be set up to be executed on each new build before code is released to a Staging or Production environment. In this way, software developers can ensure only code that passes all the unit tests makes it to a live environment. If any unit tests fail during the build process software developers can fix the issue first before attempting to release again.&lt;/p&gt;

&lt;h3&gt;
  
  
  Unit testing example
&lt;/h3&gt;

&lt;p&gt;Below is a very trivial example of how unit testing could work in Javascript.&lt;/p&gt;

&lt;p&gt;We have a simple  &lt;strong&gt;sum&lt;/strong&gt;  function that receives two numbers as arguments and returns the result of adding the two numbers together.&lt;/p&gt;




&lt;p&gt;&lt;code&gt;function sum(a, b) {&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;return a + b;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;module.exports = sum;&lt;/code&gt;&lt;/p&gt;




&lt;p&gt;Our very simple first unit test of the  &lt;strong&gt;sum&lt;/strong&gt;  function could be as follows.&lt;/p&gt;




&lt;p&gt;&lt;code&gt;const sum = require('./sum');&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;test('adds 1 + 2 to equal 3', () =&amp;gt; {&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;expect(sum(1, 2)).toBe(3);&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;});&lt;/code&gt;&lt;/p&gt;




&lt;p&gt;The above unit test documents its expectation (&lt;code&gt;'adds 1 + 2 to equal 3')&lt;/code&gt;, then executes the  &lt;strong&gt;sum&lt;/strong&gt;  function with test input arguments 1 and 2. We expect the result to equal 3 after the function execution.&lt;/p&gt;

&lt;p&gt;If the result is not equal to 3 the test will fail and we will know our implementation of the sum function has a bug somewhere. &lt;code&gt;❌&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;If the result is equal to 3 our test will pass. ✅&lt;/p&gt;

&lt;p&gt;We can then add more unit tests for the  &lt;strong&gt;sum&lt;/strong&gt;  function with other example inputs to cover different cases, such as negative numbers or invalid input arguments to check if errors are handled correctly.&lt;/p&gt;

&lt;p&gt;This is a very trivial example, however, it showcases in practice how unit tests work.&lt;/p&gt;

&lt;h3&gt;
  
  
  Unit testing benefits
&lt;/h3&gt;

&lt;p&gt;Unit testing is a software testing method in which individual units, components, or modules of software are tested to determine if they are fit for use. As a result, it has many benefits. As a software system grows, software developers benefit more from having unit tests in place. If proper unit testing is done in early development, it will save software developers time and money in the end.&lt;/p&gt;

&lt;p&gt;Unit testing finds problems early in the development cycle. This includes bugs in the software developer’s implementation. The cost of finding a bug before coding begins or when the code is first written is considerably lower than the cost of detecting, identifying, and correcting the bug later.&lt;/p&gt;

&lt;p&gt;Unit testing helps software developers create better software designs. Code can be impossible or difficult to unit test if poorly written, thus unit testing can force software developers to structure functions and objects in better ways. The process of writing a thorough set of tests forces the software developer to think through inputs, outputs, and error conditions, and thus more crisply define the unit's desired behavior.&lt;/p&gt;

&lt;p&gt;Due to the modular nature of the unit testing, software developers can test parts of a software system without waiting for others to be completed. This will help software developers create their software in small agile increments.&lt;/p&gt;

&lt;p&gt;Unit testing allows software developers to easily refactor code or upgrade system libraries at a later date, and make sure the existing code still works correctly. Any changes software developers make that cause existing unit tests to fail can be identified quickly and addressed. Unit tests detect changes that may break existing working code.&lt;/p&gt;

&lt;p&gt;Unit testing creates documentation of the system as a positive side-effect. Software developers looking to learn what functionality is provided by a unit, and how to use it, can look at the unit tests to gain a basic understanding of the unit's interface (API).&lt;/p&gt;

&lt;h3&gt;
  
  
  Unit testing limitations
&lt;/h3&gt;

&lt;p&gt;Despite the valuable benefits of unit testing, it has some limitations.&lt;/p&gt;

&lt;p&gt;Unit testing will not catch every error in the software system. It is very difficult to evaluate every execution path in a software system unless it is a very simple system. Unit testing is limited to only testing the functionality of the units themselves. It will not catch other errors such as integration errors or performance errors.&lt;/p&gt;

&lt;p&gt;It can be difficult to set up unit tests if a core function of the unit at test is to interact with something external to the system. Something external such as a database, the file system, or an external API, can present a challenge when unit testing. Software developers will likely have to mock interactions with the external party and this may be challenging and not exhaustive enough as a test.&lt;/p&gt;

&lt;h3&gt;
  
  
  The New Developer
&lt;/h3&gt;

&lt;p&gt;This article was originally published on  &lt;a href="https://thenewdeveloper.substack.com/"&gt;The New Developer&lt;/a&gt;. Head over there if you like this post and want to read others like it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Final thoughts
&lt;/h3&gt;

&lt;p&gt;Writing unit tests as part of the development of a system can often feel costly and slow. More code needs to be written and it takes time and effort to write good unit tests. A common mistake development teams make is to skip unit testing.&lt;/p&gt;

&lt;p&gt;As most software systems grow they will benefit from a wide unit test coverage. Unit tests help make it easier to add new features, refactor existing features, and understand existing individual components of a system.&lt;/p&gt;

&lt;p&gt;Adding unit tests early on will save software developers time and money in the end.&lt;/p&gt;

&lt;p&gt;Are you writing unit tests in your codebase?&lt;/p&gt;

</description>
      <category>codenewbie</category>
      <category>beginners</category>
      <category>programming</category>
      <category>testing</category>
    </item>
    <item>
      <title>Podcasts for new software developers</title>
      <dc:creator>Tanaka Mutakwa</dc:creator>
      <pubDate>Mon, 01 Nov 2021 08:29:08 +0000</pubDate>
      <link>https://dev.to/tanakamutakwa/podcasts-for-new-software-developers-23a8</link>
      <guid>https://dev.to/tanakamutakwa/podcasts-for-new-software-developers-23a8</guid>
      <description>&lt;p&gt;If you want to be a good software developer you have to be constantly learning. One of the best ways to learn is through listening to good podcasts.&lt;/p&gt;

&lt;p&gt;Here is a list with some of the best podcasts new software developers can learn from.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://www.codenewbie.org/podcast"&gt;CodeNewbie podcast&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This is good choice for those who are interested in web development but don't know where to start. The CodeNewbie podcast covers stories and interviews from people on their coding journey. Every week, you can meet new developers and many other experts who work in the tech industry and have built their careers in coding. Each episode will provide newbies with many useful facts that will get them closer to the web development world.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://softskills.audio/"&gt;Soft Skills Engineering podcast&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Soft Skills Engineering is a weekly advice podcast for software developers. The show's hosts are experienced developers who answer your questions about topics like: pay raises, hiring developers, technical leadership, learning new technologies, quitting your job, getting promoted, code review etiquette and more.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://www.codingblocks.net/category/podcast/"&gt;Coding blocks podcast&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Coding Blocks is the podcast and website for learning how to become a better software developer. They cover a wide variety of topics that range from good programming practices which are language agnostic all the way to specifics for particular languages.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://www.podfeet.com/blog/programming-by-stealth/"&gt;Programming by stealth podcast&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Programming By Stealth is a collaborative series created by Bart Busschots and Allison Sheridan. They discuss real programming in small easy steps, using the allure of the web as the carrot to entice people forward.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://frontendhappyhour.com/"&gt;Frontend Happy Hour podcast&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;A podcast featuring a panel of Software Engineers from Netflix, Twitch, &amp;amp; Atlassian talking over drinks about all things Front End development. This podcast will tell you about new tools and libraries that appeared in the web development world. Frontend is a necessary skill for every web developer. It is impossible to create a good website without a proper understanding of frontend.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://cynicaldeveloper.com/"&gt;Cynical Developer podcast&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This is a podcast that helps you to improve your development knowledge and career, through explaining the latest and greatest in development technology and providing you with what you need to succeed as a developer.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://completedeveloperpodcast.com/"&gt;Complete Developer podcast&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Will and BJ first met in college and have been friends ever since. You can tell this through their dynamic conversations. Will brings a wide knowledge base to the conversation through his years of experience as a senior developer and aspiring software architect. Whereas BJ being a journeyman developer is learning as he works in the field. He shares those lessons and more each week. Because of their varied experiences topics range from the technical to the every day life of a software developer. You'll find something useful and informative on Complete Developer Podcast. There are plenty of podcasts out there focused on languages and coding. What they are doing with the Complete Developer Podcast is to also cover the other areas of life as a developer.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://www.freecodecamp.org/news/tag/podcast/"&gt;freeCodeCamp podcast&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;The official podcast of the freeCodeCamp open source community. Learn to code with free online courses, programming projects, and interview preparation for developer jobs.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://learntocodewith.me/podcast/"&gt;Learn to code with me podcast&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Interviews and advice for learning how to code and building your technology career. The Learn to Code With Me podcast, created by Laurence Bradford, is for aspiring techies and self-taught coders looking to transition into the tech industry. Want actionable insights on how you can get paid for your coding skills? Then listen to this podcast.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://www.developingup.com/"&gt;Developing up podcast&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;A podcast focused on the non-technical side of being a developer, because your career is about more than the code you write.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://www.hanselminutes.com/"&gt;Hanselminutes podcast&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;A weekly commute-time podcast that promotes fresh technology and fresh voices. Episodes feature talk and tech for developers, life-long learners, and technologists.&lt;/p&gt;

&lt;h3&gt;
  
  
  The New Developer
&lt;/h3&gt;

&lt;p&gt;This article was originally published on  &lt;a href="https://thenewdeveloper.substack.com/"&gt;The New Developer&lt;/a&gt;. Head over there if you like this post and want to read others like it.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Final thoughts&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Listening to good podcasts is one of the best ways to learn and grow as a software developer. It complements your day to day learning at work.&lt;/p&gt;

&lt;p&gt;Have you listened to any of the podcasts on my list? What did you think?&lt;/p&gt;

&lt;p&gt;If you could recommend one podcast for new software developers, what would it be and why? Let me know in the comments.&lt;/p&gt;

</description>
      <category>codenewbie</category>
      <category>beginners</category>
      <category>podcast</category>
      <category>career</category>
    </item>
    <item>
      <title>Feedback is a gift</title>
      <dc:creator>Tanaka Mutakwa</dc:creator>
      <pubDate>Mon, 25 Oct 2021 09:19:26 +0000</pubDate>
      <link>https://dev.to/tanakamutakwa/feedback-is-a-gift-41h7</link>
      <guid>https://dev.to/tanakamutakwa/feedback-is-a-gift-41h7</guid>
      <description>&lt;p&gt;One of the best ways to grow as a software developer is by frequently asking for feedback from the people you work closely with. Feedback is a gift, don’t resist it.&lt;/p&gt;

&lt;p&gt;Most companies have performance review cycles, however, these may only happen a few times in a year, depending on the cadence. You should aim to receive feedback more frequently than the performance review cycles. Feedback that is more immediate to your day-to-day work and actions is much better.&lt;/p&gt;

&lt;p&gt;Do you find asking for feedback uncomfortable? It may be stressful if you are not used to it, but constant feedback is an eye-opener, it is definitely worth asking for it from people you work closely with.&lt;/p&gt;

&lt;p&gt;In this article, you learn about how to ask for feedback effectively. This involves, what to get feedback about, whom you should ask for feedback, how to ask for feedback, and how to respond to feedback.&lt;/p&gt;

&lt;h3&gt;
  
  
  What to get feedback about
&lt;/h3&gt;

&lt;p&gt;It is important to understand the different things you want to get feedback about. These will help you with identifying whom to ask for feedback and what questions to ask. As a software developer here are some things you should be getting feedback about:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Your technical ability: the code you write and the tools you use.&lt;/li&gt;
&lt;li&gt; How you communicate: written and verbal.&lt;/li&gt;
&lt;li&gt; Your participation in meetings.&lt;/li&gt;
&lt;li&gt; How you present ideas and work.&lt;/li&gt;
&lt;li&gt; How you collaborate with your team.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Getting better in each of these areas will help you become a more accomplished software developer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Whom you should ask for feedback
&lt;/h3&gt;

&lt;p&gt;The best people to ask for feedback from are people you work closely with. They have enough context about your work to give you valuable feedback. As a software developer here are the suggested people to ask for feedback:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Your manager.&lt;/li&gt;
&lt;li&gt; Other software developers on your team.&lt;/li&gt;
&lt;li&gt; Non-software developers, you work with frequently. Such as your team’s Product Owner, Designer, or Scrum Master.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This group of people will be able to give you valuable feedback from different perspectives.&lt;/p&gt;

&lt;h3&gt;
  
  
  How to ask for feedback
&lt;/h3&gt;

&lt;p&gt;After identifying whom you should ask for feedback, your next step is to approach them and ask if they would be happy to give you some feedback. Let them know why you have chosen them and that their feedback will be useful and contextual information to support your growth.&lt;/p&gt;

&lt;p&gt;Give the person you choose to provide your feedback some notice so they can think of concrete things to say.&lt;/p&gt;

&lt;p&gt;Prepare good questions before your feedback session with each person. Try to keep your questions less generic. Ask more narrow questions. Ask short questions that directly address specific aspects of your work or behaviour. As an example, instead of asking “What can I do to become a better software developer?”, you should instead ask “What is one thing I can do differently to improve my backend coding?” or “What is one thing I can do to improve my presentation skills for software demos?”. This will help people give you feedback that is actionable and aligns with your career goals.&lt;/p&gt;

&lt;p&gt;It is helpful to ask for feedback in context and promptly, it can make it easier for the person you've asked for feedback to recall specific behaviours and examples that can facilitate your learning.&lt;/p&gt;

&lt;p&gt;Feedback doesn't always have to be in person, you can use a digital platform to ask for feedback from several people at once and then follow up in person if needed.&lt;/p&gt;

&lt;h3&gt;
  
  
  How to respond to feedback
&lt;/h3&gt;

&lt;p&gt;Positive feedback is awesome, you learn that you are doing well at something.&lt;/p&gt;

&lt;p&gt;The feedback you receive from people will not always be positive. Some of it will be constructive criticism. It is important that you do not get defensive as you are asking for honesty from the people that give you feedback.&lt;/p&gt;

&lt;p&gt;Once you have received feedback from people you should make an effort to apply the learnings from the feedback to get better. Making changes based on the feedback you receive will help others to see that you are not only open to criticism but willing to adapt, to become a better developer.&lt;/p&gt;

&lt;p&gt;Always show your appreciation when others spend time sharing their perspective and providing constructive insights. This also encourages people to give you more feedback in the future.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Asking for feedback is a great way to help you grow professionally and personally. The feedback you receive will help you to take more control of your career development and to get an accurate idea of what is expected of you.&lt;/p&gt;

&lt;p&gt;Proactively asking for feedback will help you learn faster. Avoid relying only on company performance review cycles to receive feedback. Start asking your team for feedback today!&lt;/p&gt;

&lt;h3&gt;
  
  
  The New Developer
&lt;/h3&gt;

&lt;p&gt;This article was originally published on  &lt;a href="https://thenewdeveloper.substack.com/"&gt;The New Developer&lt;/a&gt;. Head over there if you like this post and want to read others like it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Useful resources:&lt;/strong&gt;&lt;br&gt;
Feedback book -  &lt;a href="https://feedback.impraise.com/resources/ebook/how-to-give-effective-feedback/"&gt;https://feedback.impraise.com/resources/ebook/how-to-give-effective-feedback/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>programming</category>
      <category>codenewbie</category>
      <category>career</category>
    </item>
    <item>
      <title>Writing clean code: Naming</title>
      <dc:creator>Tanaka Mutakwa</dc:creator>
      <pubDate>Mon, 18 Oct 2021 05:59:58 +0000</pubDate>
      <link>https://dev.to/tanakamutakwa/writing-clean-code-naming-3a7m</link>
      <guid>https://dev.to/tanakamutakwa/writing-clean-code-naming-3a7m</guid>
      <description>&lt;p&gt;When you start learning how to code your main focus is writing code that works correctly for the problem you are solving. Yes, code needs to work correctly and that is a good place to start learning. However, in a real work environment, you also want to ensure you write clean code.&lt;/p&gt;

&lt;p&gt;Clean code is readable, extensible, changeable, and maintainable. These are all important qualities for code to have.&lt;/p&gt;

&lt;p&gt;In many professional settings, you are not writing code in complete isolation. There are other people you work with on a team. Your teammates need to be able to easily understand the code you write. They need to understand what it does, how it works, and why it was written that way. It may also be your future self coming back to code you wrote in the past and you will also need to easily understand your code.&lt;/p&gt;

&lt;p&gt;Code is read more than it is written. To write code we are constantly reading it. So even if readable code is harder to write we should invest time to do it instead of writing easy unreadable code. Writing clean code is an important skill for any professional developer.&lt;/p&gt;

&lt;p&gt;In this article, we are going to learn about the importance of &lt;strong&gt;Naming&lt;/strong&gt; in writing clean code.&lt;/p&gt;

&lt;p&gt;Naming is a crucial and daily task for developers in any programming language. It can either make code very hard to understand or if done well, easy to understand.&lt;/p&gt;

&lt;p&gt;Names are all over the software developers write. When coding, you should consider naming variables, functions, arguments, classes, packages, source files, and directories that contain those source files, etc.&lt;/p&gt;

&lt;p&gt;Below are some popular quotes on naming in programming.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“There are only two hard things in Computer Science: cache invalidation and naming things.” - Phil Karlton&lt;/p&gt;

&lt;p&gt;“Any fool can write code that a computer can understand. Good programmers write code that humans can understand” — Martin fowler&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Names are the smallest building block of code. Names are the basic building block of clean code. There are some recommended rules for good naming in code. Let us discuss these rules for the rest of this article.&lt;/p&gt;

&lt;h3&gt;
  
  
  Use intention revealing names
&lt;/h3&gt;

&lt;p&gt;The names you use in your code must be clear and understandable. Choose descriptive and unambiguous names. You should focus on the &lt;a href="https://en.wikipedia.org/wiki/Principle_of_least_astonishment"&gt;principle of least surprise&lt;/a&gt;. Aim to write code that other people would expect and try not to surprise them with some clever complexities.&lt;/p&gt;

&lt;p&gt;The name of a variable, function, or class, should answer all the big questions. It should tell you why it exists, what it does, and how it is used. If a name requires a comment, then the name is not intention revealing.&lt;/p&gt;

&lt;p&gt;Below is an example of code that is not intention revealing that requires a description comment and a cleaner version with better naming that does not require a description comment.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;let rf = 5000 //the rental fee paid by the tenant&lt;/code&gt;&lt;/p&gt;

&lt;h6&gt;
  
  
  use the cleaner version below
&lt;/h6&gt;

&lt;p&gt;&lt;code&gt;let rentalFee = 5000&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Classes and objects should have noun or noun phrase names
&lt;/h3&gt;

&lt;p&gt;Classes and objects describe things so their names in code should be a noun or noun phrase. Names such as User, Student, Account, and ErrorLogger are good names for classes and objects. Avoid words like Manager, Processor, Data, or Info in the name of a class. A class name should not be a verb.&lt;/p&gt;

&lt;h3&gt;
  
  
  Methods/Functions should have verb or verb phrase names
&lt;/h3&gt;

&lt;p&gt;Methods/Functions perform an action in the code so their names should be a verb or verb phrase. Names such as deleteApplication, createUser, or save are good names for methods/functions. By design, a function should have only one responsibility. If the name is anything other than a verb, then either you are naming it wrong or there are some problems in the architecture.&lt;/p&gt;

&lt;h3&gt;
  
  
  Make meaningful distinctions
&lt;/h3&gt;

&lt;p&gt;You should try to use the same word for the same purpose across the codebase. Avoid using different but similar words to define the same concepts. The three method/function calls below could mean the same thing as an example.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;FetchResult()&lt;/code&gt; vs &lt;code&gt;GetResult()&lt;/code&gt; vs &lt;code&gt;RetrieveResult()&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;For instance, don’t use fetch, get and retrieve in the same project for the same responsibility.&lt;/p&gt;

&lt;h3&gt;
  
  
  Use pronounceable and searchable names
&lt;/h3&gt;

&lt;p&gt;When naming things in your code use words that can be pronounced rather than using non-pronounceable words.&lt;/p&gt;

&lt;p&gt;Below is an example of a variable name that is not easily pronounceable and a cleaner version with a more pronounceable name.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Date modymdhms;&lt;/code&gt;&lt;/p&gt;

&lt;h6&gt;
  
  
  use the cleaner version below
&lt;/h6&gt;

&lt;p&gt;&lt;code&gt;Date modificationTimestamp;&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Replace magic numbers with named constants
&lt;/h3&gt;

&lt;p&gt;When you are using some constant values define them using searchable words. It makes them more understandable to other developers.&lt;/p&gt;

&lt;p&gt;Instead of writing code like this:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;let totalLoanDays = gracePeriod + 7;&lt;/code&gt;&lt;/p&gt;

&lt;h6&gt;
  
  
  create a named constant and use it like this:
&lt;/h6&gt;

&lt;p&gt;&lt;code&gt;const NUMBER_OF_DAYS_IN_WEEK = 7;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;let totalLoanDays = gracePeriod + NUMBER_OF_DAYS_IN_WEEK;&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Don’t append type information
&lt;/h3&gt;

&lt;p&gt;When you name your variables avoid appending type information to them. It should be clear from the name of the variable what data it stores and developers can infer the type from there. There is no need to mention the data type in the name.&lt;/p&gt;

&lt;p&gt;Instead of writing code like this:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;let firstNameString;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;let lastNameString;&lt;/code&gt;&lt;/p&gt;

&lt;h6&gt;
  
  
  use the cleaner version below
&lt;/h6&gt;

&lt;p&gt;&lt;code&gt;let firstName;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;let lastName;&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Don’t Be Offensive / Don’t Be A Comedian
&lt;/h3&gt;

&lt;p&gt;Remain professional in how you name things in your code. Do not be offensive or try to be a comedian by giving a variable a funny name. Remember you are writing production code that other future software developers will need to understand easily. Your naming conventions should be generic and should not include any cultural slang.&lt;/p&gt;

&lt;p&gt;Avoid writing code like this:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;function killThemAll();&lt;/code&gt;&lt;/p&gt;

&lt;h6&gt;
  
  
  use the cleaner and professional version below
&lt;/h6&gt;

&lt;p&gt;&lt;code&gt;function deleteAllUsers();&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Closing thoughts
&lt;/h3&gt;

&lt;p&gt;In this article, we have explored some of the best practices for naming things in your code, and some things you should avoid doing. Naming may appear a small part of a software developer’s job but it is very important and can be the main difference between having a clean codebase that is a joy to work with or a complex codebase that is difficult to understand and navigate.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"One difference between a smart programmer and a professional programmer is that the professional understands that clarity is king. Professionals use their powers for good and write code that others can understand."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You should never ignore the importance of naming practices in your codebase as bad names will become a big hurdle in future development plans. Changing the codebase at that point is unnecessary overhead and can be avoided in the very beginning by following good practices.&lt;/p&gt;

&lt;h3&gt;
  
  
  The New Developer
&lt;/h3&gt;

&lt;p&gt;This article was originally published on &lt;a href="https://thenewdeveloper.substack.com/"&gt;The New Developer&lt;/a&gt;. Head over there if you like this post and want to read others like it.&lt;/p&gt;

&lt;h4&gt;
  
  
  References/Resources:
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship-ebook/dp/B001GSTOAM/r"&gt;Clean Code: A Handbook of Agile Software Craftsmanship by Robert C Martin.&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>programming</category>
      <category>100daysofcode</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>Books every new software developer should read</title>
      <dc:creator>Tanaka Mutakwa</dc:creator>
      <pubDate>Mon, 01 Mar 2021 19:06:55 +0000</pubDate>
      <link>https://dev.to/tanakamutakwa/books-every-new-software-developer-should-read-4lan</link>
      <guid>https://dev.to/tanakamutakwa/books-every-new-software-developer-should-read-4lan</guid>
      <description>&lt;p&gt;If you want to be a good software developer you have to be constantly learning. One of the best ways to learn is through reading good books.&lt;/p&gt;

&lt;p&gt;Here is a list with some of the best books new software developers can learn from. I’ve selected books with long-lasting advice that will remain relevant many years from now.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://thetechresume.com/" rel="noopener noreferrer"&gt;The Tech Resume Inside Out: What a good developer resume looks like and how to write one&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This book helps you craft a developer resume that represents you fairly, plays to your strengths, and increases your chances of getting hired. A practical guide written by the people who do the resume screening: engineering managers and technical recruiters working at tech companies. Free for developers out of a job.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffeydmpimrzk6zciy6r48.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffeydmpimrzk6zciy6r48.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/0984782850" rel="noopener noreferrer"&gt;Cracking the Coding Interview: 189 Programming Questions and Solutions&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Cracking the Coding Interview gives you the interview preparation you need to get the top software developer jobs. This is a deeply technical book and focuses on the software engineering skills you need to do well your interview. The book is over 500 pages and includes 189 programming interview questions and answers, as well as other advice.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx691e8yd1xo5ju3oc6qv.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx691e8yd1xo5ju3oc6qv.jpeg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://gumroad.com/l/GxwwsI" rel="noopener noreferrer"&gt;Things they don't teach you in software school: Letters from a mentor&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This book contains the top things that any junior developer should know when starting their career in tech. It is a quick and easy read.&lt;/p&gt;

&lt;p&gt;The author spent two years mentoring a young developer, who was just starting their career. After having countless conversations together, he decided to gather all of the advice he ever gave and published it in this eBook.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuubjiadlzpd8s0j560eo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuubjiadlzpd8s0j560eo.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://www.amazon.com/Letters-New-Developer-Starting-Development/dp/1484260732" rel="noopener noreferrer"&gt;Letters to a New Developer: What I Wish I Had Known When Starting My Development Career&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Learn what you need to succeed as a developer beyond the code. The lessons in this book will supercharge your career by sharing lessons and mistakes from real developers.&lt;/p&gt;

&lt;p&gt;Wouldn't it be nice to learn from others' career mistakes? "Soft" skills are crucial to success, but are haphazardly picked up on the job or, worse, never learned. Understanding these competencies and how to improve them will make you a more effective team member and a more attractive hire.&lt;/p&gt;

&lt;p&gt;This book will teach you the key skills you need, including how to ask questions, how and when to use common tools, and how to interact with other team members. Each will be presented in context and from multiple perspectives so you'll be able to integrate them and apply them to your own career quickly.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv9t4d0amnyb9y2qj1agy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv9t4d0amnyb9y2qj1agy.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://www.amazon.com/Soft-Skills-software-developers-manual/dp/1617292397" rel="noopener noreferrer"&gt;Soft Skills: The software developer's life manual&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Soft Skills: The software developer's life manual is a unique guide, offering techniques and practices for a more satisfying life as a professional software developer. In it, developer and life coach John Sonmez addresses a wide range of important "soft" topics, from career and productivity to personal finance and investing, and even fitness and relationships, all from a developer-centric viewpoint.&lt;/p&gt;

&lt;p&gt;For most software developers, coding is the fun part. The hard bits are dealing with clients, peers, and managers, staying productive, achieving financial security, keeping yourself in shape, and finding true love. This book is here to help.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqsnlsrb6ov503fbai2b2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqsnlsrb6ov503fbai2b2.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://14habits.com/" rel="noopener noreferrer"&gt;14 Habits of Highly Productive Developers&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;You can learn the most popular frameworks, use the best programming languages, and work at the biggest tech companies, but if you cultivate bad habits, it will be hard for you to become a top developer.&lt;/p&gt;

&lt;p&gt;This book doesn't offer a straight path or pre-defined formula of success. This book is a result of a quest. A quest to uncover what habits can be cultivated to become a better software engineer.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F17n7y6mqsonoc7j1bg6r.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F17n7y6mqsonoc7j1bg6r.jpeg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://www.amazon.com/Extreme-Programming-Explained-Embrace-Change/dp/0321278658" rel="noopener noreferrer"&gt;Extreme Programming Explained: Embrace Change&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Software development projects can be fun, productive, and even daring. Yet they can consistently deliver value to a business and remain under control.&lt;/p&gt;

&lt;p&gt;Extreme Programming (XP) was conceived and developed to address the specific needs of software development conducted by small teams in the face of vague and changing requirements. This new lightweight methodology challenges many conventional tenets, including the long-held assumption that the cost of changing a piece of software necessarily rises dramatically over the course of time. XP recognizes that projects have to work to achieve this reduction in cost and exploit the savings once they have been earned.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo5wccgmqioyyai1z9plp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo5wccgmqioyyai1z9plp.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882" rel="noopener noreferrer"&gt;Clean Code: A Handbook of Agile Software Craftsmanship&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Even bad code can function. But if code isn't clean, it can bring a development organization to its knees. Every year, countless hours and significant resources are lost because of poorly written code. But it doesn't have to be that way.&lt;/p&gt;

&lt;p&gt;In Clean Code the author has teamed up with his colleagues to distill their best agile practice of cleaning code on the fly into a book that will instil within you the values of a software craftsman and make you a better programmer but only if you work at it.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkz82o4gxr0tfx073owqe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkz82o4gxr0tfx073owqe.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://www.amazon.com/Pragmatic-Programmer-Journeyman-Master/dp/020161622X" rel="noopener noreferrer"&gt;The Pragmatic Programmer: From Journeyman to Master&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;The Pragmatic Programmer cuts through the increasing specialisation and technicalities of modern software development to examine the core process - taking a requirement and producing working, maintainable code that delights its users. It covers topics ranging from personal responsibility and career development to architectural techniques for keeping your code flexible and easy to adapt and reuse.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe4uozq0fmtg1t0abhynl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe4uozq0fmtg1t0abhynl.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://www.amazon.com/Refactoring-Improving-Existing-Addison-Wesley-Signature/dp/0134757599" rel="noopener noreferrer"&gt;Refactoring: Improving the Design of Existing Code&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Refactoring is a controlled technique for improving the design of an existing code base. Its essence is applying a series of small behavior-preserving transformations, each of which "too small to be worth doing". However the cumulative effect of each of these transformations is quite significant. By doing them in small steps you reduce the risk of introducing errors. You also avoid having the system broken while you are carrying out the restructuring - which allows you to gradually refactor a system over an extended period of time.&lt;/p&gt;

&lt;p&gt;This book describes the process of refactoring and spends most of its time explaining how to do the various refactorings - the behavior preserving transformations.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc46pz9hf8qi2ykkc3xc2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc46pz9hf8qi2ykkc3xc2.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://www.amazon.com/Nature-Software-Development-Simple-Valuable/dp/1941222374" rel="noopener noreferrer"&gt;The Nature of Software Development: Keep It Simple, Make It Valuable, Build It Piece by Piece&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This book leads you from the desire for value down to the specific activities that help good Agile projects deliver better software sooner, and at a lower cost. Using simple sketches and a few words, the author invites you to follow his path of learning and understanding from a half century of software development and from his engagement with Agile methods from their very beginning.&lt;/p&gt;

&lt;p&gt;The book describes software development, starting from our natural desire to get something of value. Each topic is described with a picture and a few paragraphs. You're invited to think about each topic; to take it in. You'll think about how each step into the process leads to the next. You'll begin to see why Agile methods ask for what they do, and you'll learn why a shallow implementation of Agile can lead to only limited improvement.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ay493842b49fmksaxys.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ay493842b49fmksaxys.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Final thoughts
&lt;/h3&gt;

&lt;p&gt;Reading good books is one of the best ways to learn and grow as a software developer. It complements your day to day learning at work.&lt;/p&gt;

&lt;p&gt;If you found this post useful and would like to learn more about how to become a better software engineer - subscribe to &lt;a href="https://thenewdeveloper.substack.com/" rel="noopener noreferrer"&gt;The New Developer&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Have you read any of the books on my list? What did you think?&lt;/p&gt;

&lt;p&gt;If you could recommend one book for new software developers, what would it be and why? Let me know in the comments.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>career</category>
      <category>programming</category>
      <category>books</category>
    </item>
    <item>
      <title>Finding A Software Developer Mentor When You're A Newbie</title>
      <dc:creator>Tanaka Mutakwa</dc:creator>
      <pubDate>Tue, 02 Feb 2021 09:55:38 +0000</pubDate>
      <link>https://dev.to/tanakamutakwa/finding-a-software-developer-mentor-when-you-re-a-newbie-5ca2</link>
      <guid>https://dev.to/tanakamutakwa/finding-a-software-developer-mentor-when-you-re-a-newbie-5ca2</guid>
      <description>&lt;p&gt;Your first job as a software developer can be very challenging. There is so much to learn about coding and building a career in the technology industry. Doing it by yourself can be overwhelming.&lt;/p&gt;

&lt;p&gt;When I started my first job, one of the senior developers at the company I worked for, offered to help me learn and grow into a good software developer. He was a more experienced guide who had overcome the same problems I was facing and provided an inspiring example to follow.&lt;/p&gt;

&lt;p&gt;If I needed any useful tips on coding I went to him. If I needed any advice on navigating a career in the technology industry I went to him.&lt;/p&gt;

&lt;p&gt;That senior engineer became my mentor and without him, my software development career would have been difficult at the start.&lt;/p&gt;

&lt;p&gt;Most people have to find a mentor themselves. Most people, however, don't know how to find a mentor. What should you do? Where should you start?&lt;/p&gt;

&lt;h3&gt;
  
  
  What is mentorship?
&lt;/h3&gt;

&lt;p&gt;Before we talk about how to find a mentor let us understand what mentorship is and what role it plays in your career.&lt;/p&gt;

&lt;p&gt;Mentoring is relationship-oriented and occurs when a person who has years of experience in a field provides guidance on career progression to an individual with less experience.&lt;/p&gt;

&lt;p&gt;The needs of the mentee are important in this relationship, and the mentor helps wherever possible in this development-driven relationship.&lt;/p&gt;

&lt;p&gt;It is a long-term relationship as opposed to on-the-spot advice.&lt;/p&gt;

&lt;p&gt;There are many benefits of having a mentor: boosting your confidence, helping you get control of your career, and teaching you important life lessons.&lt;/p&gt;

&lt;h3&gt;
  
  
  Before searching for a mentor
&lt;/h3&gt;

&lt;p&gt;It is helpful to ask yourself what you want from a mentor before starting your search. Identify clearly what you think are the reasons you need a mentor. Write these reasons down as a list. This list will be useful in your early conversations with potential mentors.&lt;/p&gt;

&lt;p&gt;Setting short term and long term career goals for yourself will also be useful. It will help give your mentor an idea of the direction you want your career to go. As an example here is what my list looked like in the early days of my career:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Short term - Learn how to write clean code.&lt;/li&gt;
&lt;li&gt;Short term - Learn how to write good automated tests.&lt;/li&gt;
&lt;li&gt;Short term - Take good ownership of solutions from my machine to production.&lt;/li&gt;
&lt;li&gt;Short term - Develop a deeper understanding of the programming languages and frameworks our company uses.&lt;/li&gt;
&lt;li&gt;Long term - Able to input and drive architectural decisions.&lt;/li&gt;
&lt;li&gt;Long term - Learn about technology leadership.&lt;/li&gt;
&lt;li&gt;Long term - Build a profile external to the company (start a blog, speak at conferences)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Don’t leave things open-ended. As you will learn later in this article you will be responsible for driving the relationship between you and your mentor. They are there as a guide to support you and your career.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where to find mentors?
&lt;/h3&gt;

&lt;p&gt;When you start your search for a mentor look for someone who has been where you want to go. Identify people who are good at teaching and are always keen to share knowledge.&lt;/p&gt;

&lt;p&gt;The first place to look for a mentor is within the circle of people you already know. It's much easier to find a mentor among people you already know than from among total strangers.&lt;/p&gt;

&lt;p&gt;These are the places that I would recommend you try and identify your potential mentor:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Your current company.&lt;/li&gt;
&lt;li&gt;Meetup communities, conferences, and coding workshops.&lt;/li&gt;
&lt;li&gt;Open-source community.&lt;/li&gt;
&lt;li&gt;Contacts of friends.&lt;/li&gt;
&lt;li&gt;Online mentorship platforms.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Your current company&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Your current workplace is usually the most ideal place to look for a mentor. There are likely to be some experienced software developers working there. They already know you, have visibility into your work and will be easier to access when you need help. I highly recommend looking for a mentor within your current company if the situation allows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Meetup communities, conferences, and coding workshops&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Meetup communities, conferences, and coding workshops usually have people who are keen to share their knowledge. Especially people who are speakers at the events or facilitators of the workshops. You should identify groups that align with your goals, join them, attend the sessions frequently and establish good relationships with the members. Eventually, you will be able to identify potential mentors who you could approach.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open-source community&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Getting involved in an open-source project can help in the search for a mentor. Identify an open-source project that you are passionate about and start making contributions to move the project forward. Your contributions to an open-source project do not have to be complicated coding solutions. Most people start at the basics - perhaps contributing to the documentation of the project. Once you are part of the open-source project you will start interacting with other contributors of the project or the project maintainers. Eventually, you will be able to identify potential mentors who you could approach amongst this group.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Contacts of friends&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you cannot identify anyone who could be your potential mentor, your next best approach is to ask your friends if they know any software developer who would be a good mentor for you. Your friends are likely to have contacts that work at their companies that they can connect you with. It may be someone you don’t know but your friends can help with the introductions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Online mentorship platforms&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There are now some online mentorship platforms that exist. This is also another way in which you can find a mentor. Some of these platforms are paid platforms and some of them are free. Examples such as CodeMentor, Coding Coach, and MentorCruise exist. A quick online search for “software developer mentorship” will give you many of these platforms and you can choose the one that suits you.&lt;/p&gt;

&lt;h3&gt;
  
  
  Asking someone to be your mentor
&lt;/h3&gt;

&lt;p&gt;Once you have identified your potential mentor you must ask them to set up a formal mentor/mentee relationship. It is important to first build a relationship with the potential mentor. It will become easier to ask that way. Take it slow, some trust-building may be required before you start. &lt;/p&gt;

&lt;p&gt;To build a relationship with your potential mentor offer to take them out to coffee or find a time to get on a call with them. Make it as easy as possible for them to connect with you. Build rapport. Find something you have in common.&lt;/p&gt;

&lt;p&gt;Once you’ve built up a relationship with your potential mentor you should ask them formally to become your mentor. When you ask you can say something along these lines - &lt;em&gt;“You're someone I look up to. I’m new in this software development journey. I’ve enjoyed the discussions we’ve had in the past and felt your opinions are always really insightful. I would highly appreciate it if you could help me in my software development journey. Can I set up some time to talk about areas I'd like to grow in and how you could potentially help, as a mentor?”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If the response from the potential mentor is positive and they are happy to chat then you can try it out with one or two meetings and see if both of you would want to continue.&lt;/p&gt;

&lt;p&gt;If the response from the potential mentor is negative and they are unavailable don’t give up. You might not succeed on the first try and that is completely understandable, people are busy. Just keep going. Repeat the process and find another potential mentor.&lt;/p&gt;

&lt;h3&gt;
  
  
  I have a mentor now. What next?
&lt;/h3&gt;

&lt;p&gt;Once you have a mentor you must interact with them on a regular cadence. You can discuss and agree on the time commitment with your mentor. As the mentee, you will have to own and drive the scheduling and meetings.&lt;/p&gt;

&lt;p&gt;Set defined goals to work on with your mentor. These are great motivators for constant improvements. Do the work, follow up, commit to it. Give feedback on the advice you receive from your mentor.&lt;/p&gt;

&lt;p&gt;Always come to your mentorship meetings with questions. Part of being a mentee is being energetic and clear about what you are seeking to understand.&lt;/p&gt;

&lt;p&gt;Once someone agrees to be your mentor here are some things they can do for you:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Set time aside to respond when you have questions.&lt;/li&gt;
&lt;li&gt;Do some code reviews of your code.&lt;/li&gt;
&lt;li&gt;Pair program with you. &lt;/li&gt;
&lt;li&gt;Send you resources (books, courses, podcasts) that align with your goals. A mentor can be an incredible resource when it comes to finding the best courses, books, sites, and projects. Instead of having to figure everything out from scratch, you’re getting a competitive advantage by getting the landscape of resources laid out for you.&lt;/li&gt;
&lt;li&gt;Be an accountability buddy for your goals. &lt;/li&gt;
&lt;li&gt;Help you plan your career.&lt;/li&gt;
&lt;li&gt;Going deeper in the discussion of technologies, languages and frameworks, basic concepts, and so on&lt;/li&gt;
&lt;li&gt;Help you stay focussed in the complex world of software.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Be cognisant of your mentor’s time and be as prepared as you can for your meetings. Always be on time for your scheduled meetings with your mentor, offer to pay for coffee if you can, and do anything else you can to say you appreciate their time.&lt;/p&gt;

&lt;p&gt;Over time you will want to review if the mentorship relationship is still working. To constantly check if it is still providing value for both of you.&lt;/p&gt;

&lt;h3&gt;
  
  
  Final thoughts
&lt;/h3&gt;

&lt;p&gt;I've been mentored, been a mentor, and have observed software developers around me grow through mentorship. Having a more formal mentoring relationship can help you grow faster and in a more focused way.&lt;/p&gt;

&lt;p&gt;Whether you're just out of university, just graduated from a coding bootcamp, or self-taught, you'll need all the help you can get to become the best developer you can be.&lt;/p&gt;

&lt;p&gt;Many people want to help and share their knowledge. All you need to do is ask.&lt;/p&gt;

&lt;p&gt;If you enjoyed this article please subscribe to &lt;a href="https://thenewdeveloper.substack.com/"&gt;The New Developer&lt;/a&gt; to receive similar articles when they are released. &lt;/p&gt;

</description>
      <category>beginners</category>
      <category>career</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
