<?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: Afeez Aderemi</title>
    <description>The latest articles on DEV Community by Afeez Aderemi (@kingswhale).</description>
    <link>https://dev.to/kingswhale</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%2F279946%2F78d3e3fa-127a-43ea-a527-d471eadd53e6.jpeg</url>
      <title>DEV Community: Afeez Aderemi</title>
      <link>https://dev.to/kingswhale</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kingswhale"/>
    <language>en</language>
    <item>
      <title>What I learned in my first year as a Software Engineer</title>
      <dc:creator>Afeez Aderemi</dc:creator>
      <pubDate>Thu, 08 Jul 2021 11:00:06 +0000</pubDate>
      <link>https://dev.to/kingswhale/what-i-learned-in-my-first-year-as-a-software-engineer-213b</link>
      <guid>https://dev.to/kingswhale/what-i-learned-in-my-first-year-as-a-software-engineer-213b</guid>
      <description>&lt;p&gt;I started a year few years ago as a software engineer at nhub Nigeria, a Nigeria tech workspace and startup. I previously had 2 experiences as a project manager in IT departments so I had an idea on how to make software. But I learned many new things becoming a developer myself. Here are some.&lt;/p&gt;

&lt;p&gt;&lt;b&gt; Writing code that works is easy &lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Before applying to software engineering jobs for the first time I made some online trainings (mostly freecodecamp, that I recommend). I wanted to show my motivation, and what I could learn in a couple of weeks.&lt;/p&gt;

&lt;p&gt;When I started my new job, my first challenge was to write code that works. Which means code that actually does what the specifications say. Almost everything was new. I learned about JWTs, how to connect to a database with Node.js, how Vue.js framework works and technical elements like these.&lt;/p&gt;

&lt;p&gt;But after a couple of months writing code that works I realized that this was not the most difficult part. &lt;b&gt;The hardest part is to write code that other people can understand.&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Writing good code is harder&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;So, how do you write good code that doesn’t just work but follow good practices?&lt;/p&gt;

&lt;p&gt;First what is good code? Some elements that help considering good code to me.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;It’s understandable&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Good code is understandable by your co-workers (present and future) and your future self. Everything will be easier if more than one person at a given time can understand what the program does.&lt;/p&gt;

&lt;p&gt;For instance, you can start by taking time to name variables, functions or errors the most clearly you can. It sounds easy but a huge amount of time will be saved if functions are well named (get, data, id should be banned). Worse than too generic, the function does something different than the name suggests. A function getSomething that also sets something inside it and thus has a side effect: not cool.&lt;/p&gt;

&lt;p&gt;Another aspect is an effective code architecture, split by files and by function. So that people can retrieve what they are looking for. It also helps unit tests if you have functions that are well separated and can be tested in isolation.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Errors are caught&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Your code is good if it doesn’t break each time there is an error. Which means there is good error handling. Indeed, errors are part of the software, it could come from many different elements. A user using the software in a way you didn’t design for. Data that don’t have the same format as you expected (via user input, API changes, etc). The number of concurrent users that you did not have in development mode or even network errors.&lt;/p&gt;

&lt;p&gt;Even if you can’t plan for every error that will appear, you can have a more generic error handling strategy for each case it doesn’t go as expected. For example, for every route of your API, you can encapsulate all the things done in a try catch that will log the errors and send a generic error message to the client.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;It’s documented&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Because you won’t be here forever. Plus you want to save your time answering the same questions again and again. It’s easier to take the time to write how things work. A good start is having a readme up to date, an architecture diagram and comments in the code when something is not clear (a common advice is to explain why and not how).&lt;/p&gt;

&lt;p&gt;&lt;b&gt;It’s maintainable&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Which means the product can evolve, you can add features, or enhance part of the product without breaking everything and taking too much time to refactor. It’s a subtle art of going fast to iterate (which introduces technical debt) and developing thinking about the future to be generic enough for evolution.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;How to write good code?&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Once we have an idea on what good code looks like, how to help people applying those principles?&lt;br&gt;
To me there are 2 main mechanisms (other than the good will and the knowledge of the developers): the conception and the code reviews.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Conception&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;As a project manager, my first responsibility was to define the scope of the project I was working on. You need everyone aligned on the scope, because the rest will depend on that. You can’t discuss the budget, the planning, the risks, the resources of the project if you are not clear on the scope.&lt;/p&gt;

&lt;p&gt;As a developer it’s the same: the first thing to do before even thinking about the technical conception is to define the scope of the feature. You usually do it with the product owner/manager in an agile organization.&lt;/p&gt;

&lt;p&gt;Is this part included in the sprint or not? Can we reduce the scope to have something working (even not perfectly) at the end of the sprint? Is this part core to the feature or a nice-to-have?&lt;/p&gt;

&lt;p&gt;Once you have a clear scope, you can start to do the technical conception. You can discuss: the name of your components, your API routes, the data format and what part of the codebase will be affected for instance. You don’t need to discuss every implementation detail or spend hours discussing a function name. But think about the overall architecture and how &lt;br&gt;
different parts of you application will be connected. It will reduce the subjective decisions one person will have to make and thus improve the readability and the quality of the code.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Code reviews&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;In the classic git flow, every new feature is developed on a feature branch and a pull request is made before merging the work into one of the main branches. The code review is the process of checking every change made to the code (called git diffs). People can then discuss if something is not clear, or not optimized (for the readability). It‘s hard at the beginning and it takes time but it will save way more time in the long run.&lt;/p&gt;

&lt;p&gt;This quest for readable, clean and maintainable code is never finished. I don’t think that even the most senior developer writes perfect code 24/7. But reviewing and letting your code being reviewed greatly helps at the beginning of your career.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>GitHub Copilot for VS Code</title>
      <dc:creator>Afeez Aderemi</dc:creator>
      <pubDate>Thu, 08 Jul 2021 10:19:38 +0000</pubDate>
      <link>https://dev.to/kingswhale/github-copilot-for-vs-code-4dgd</link>
      <guid>https://dev.to/kingswhale/github-copilot-for-vs-code-4dgd</guid>
      <description>&lt;p&gt;A new "AI pair programmer" represents a breakthrough in the third revolution of software development: the use of AI in coding.&lt;/p&gt;

&lt;p&gt;Microsoft and OpenAI have collaborated to build an AI pair-programming system called GitHub Copilot. Copilot, now available in preview as a Visual Studio Code extension, is meant to help programmers write code faster and with less work, Microsoft officials said on June 29.&lt;/p&gt;

&lt;p&gt;Copilot is powered by OpenAI Codex, a new AI system. Microsoft and OpenAI have been working together for the past few years on various projects; Copilot is their latest collaboration.&lt;/p&gt;

&lt;p&gt;"If the technical preview is successful, our plan is to build a commercial version of GitHub Copilot in the future. We want to use the preview to learn how people use GitHub Copilot and what it takes to operate it at scale," GitHub officials said in a frequently asked questions (FAQ) document published today.&lt;/p&gt;

&lt;p&gt;Since GitHub Copilot is available as a Visual Studio Code extension, working wherever Visual Studio Code works, on the developer’s machine or in the cloud on GitHub Codespaces. With access currently limited to a small group of testers, persons interested in trying Copilot can sign up for the Copilot waiting list.&lt;/p&gt;

&lt;p&gt;While GitHub Copilot works with a broad set of frameworks and languages, the technical preview works “particularly well” with JavaScript, Python, TypeScript, Ruby, and Go, GitHub said. GitHub cautioned that Copilot does not always write “perfect” code, and that sometimes the suggested code will not work. Code suggested by the tool should be tested, reviewed, and vetted, like any other code, GitHub said.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EGGIm0On--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/398byf9142u64go3p6ky.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EGGIm0On--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/398byf9142u64go3p6ky.jpeg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Codex was trained on billions of publicly available source code lines -- including code in public repositories on GitHub -- and on natural language, which means it can understand both programming and human languages. The Copilot editor extension sends comments and code to the Copilot service. The service uses OpenAI Codex to synthesize and then suggest both individual lines of code and whole functions, Microsoft officials explained in the FAQ.&lt;/p&gt;

&lt;p&gt;Copilot is meant to try to discern intent and generate the best code it can. However, it doesn't test the code it suggests, and Microsoft cautions that it may suggest old or deprecated uses of libraries and languages.&lt;/p&gt;

&lt;p&gt;Copilot is meant to improve with time and use. Microsoft advises developers to divide their code into small functions, use meaningful names for functions parameters and write good docstrings and comments as they go. They also said Copilot "seems to do best when it's helping you navigate unfamiliar libraries or frameworks."&lt;/p&gt;

</description>
      <category>githubcopilot</category>
      <category>vscode</category>
      <category>pairprogrammer</category>
    </item>
    <item>
      <title>How junior dev Can Find Mobile App Jobs</title>
      <dc:creator>Afeez Aderemi</dc:creator>
      <pubDate>Mon, 07 Sep 2020 10:33:37 +0000</pubDate>
      <link>https://dev.to/kingswhale/how-junior-dev-can-find-mobile-app-jobs-1dg1</link>
      <guid>https://dev.to/kingswhale/how-junior-dev-can-find-mobile-app-jobs-1dg1</guid>
      <description>&lt;p&gt;It's very clear that software developer increases on a daily bases with majority looking for job.&lt;/p&gt;

&lt;p&gt;More over, graduates looking to develop apps, there’s plenty to be excited about. There are still plenty of companies developing mobile apps — either in house or through an external partner. Likewise, as app development becomes increasingly complicated, what was once a one-person job is quickly requiring a team.&lt;br&gt;
If you’re graduating college this year, here’s some advice for getting a job in mobile app creation.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Adapt Your Mobile App Job Search (and Expectations)&lt;/li&gt;
&lt;li&gt;Find Out Who is Currently Hiring&lt;/li&gt;
&lt;li&gt;Make Your Own List&lt;/li&gt;
&lt;li&gt;Don’t Overlook Traditional Companies and Industries&lt;/li&gt;
&lt;li&gt;Consider Freelance Work While You Search for a Permanent Job&lt;/li&gt;
&lt;li&gt;Keep Your Skills Sharp&lt;/li&gt;
&lt;li&gt;Show, Don’t Tell&lt;/li&gt;
&lt;li&gt;Sharpen Your Remote Working Skills&lt;/li&gt;
&lt;li&gt;Solve a Problem&lt;/li&gt;
&lt;li&gt;Most importantly "Don’t Settle"&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>mobileapp</category>
      <category>job</category>
      <category>software</category>
      <category>developer</category>
    </item>
  </channel>
</rss>
