<?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: Jason Shelley</title>
    <description>The latest articles on DEV Community by Jason Shelley (@kinjiru09).</description>
    <link>https://dev.to/kinjiru09</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%2F747981%2Fc363092d-c921-4fd1-b0b5-955c816c13b3.jpg</url>
      <title>DEV Community: Jason Shelley</title>
      <link>https://dev.to/kinjiru09</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kinjiru09"/>
    <language>en</language>
    <item>
      <title>3 Reason Why Javascript Should be your First Language</title>
      <dc:creator>Jason Shelley</dc:creator>
      <pubDate>Mon, 13 Dec 2021 16:32:28 +0000</pubDate>
      <link>https://dev.to/kinjiru09/3-reason-why-javascript-should-be-your-first-language-22jo</link>
      <guid>https://dev.to/kinjiru09/3-reason-why-javascript-should-be-your-first-language-22jo</guid>
      <description>&lt;p&gt;There are many languages to choose as your first language, i.e. Python, JavaScript, Go, and Ruby. All these languages have been heralded as easy languages to learn. There are good reasons to call these languages “easy”.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;They are easy to set up and relatively easy to start creating projects.&lt;/li&gt;
&lt;li&gt;They have easy syntax and concepts that a beginner would find easy to understand right away.&lt;/li&gt;
&lt;li&gt;They have vibrant communities around them.&lt;/li&gt;
&lt;li&gt;There are a ton of libraries to help you build robust programs.&lt;/li&gt;
&lt;li&gt;There are many tutorials, books, videos, courses and other resources to learn these languages.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Another reason to learn one of these languages is there are many companies looking for developers who know these languages and they are willing to pay a decent wage. For example, &lt;a href="https://www.ziprecruiter.com/Salaries/Javascript-Developer-Salary"&gt;the average JavaScript developer with experience can make over $100,000.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But which one of these languages should be your first language?&lt;/p&gt;

&lt;p&gt;There are three reasons why Javascript should be your first language.&lt;/p&gt;

&lt;h2&gt;
  
  
  1) Language
&lt;/h2&gt;

&lt;p&gt;The actual Javascript language, ignoring the platform i.e. browser or Nodejs, has been a matter of controversy for years. Many people love it, others hate it. It is a widely used language with a long history. But the language has gone through so many revisions, that now we are stuck in this hybrid state, where some developers write JavaScript one way and other developers write it another way. This could be very intimidating and down right annoying at times. But in reality, it created a world where a developer can learn how to code in different mindsets.&lt;/p&gt;

&lt;p&gt;JavaScript is a multi-paradigm scripting language. It supports object-oriented, imperative, and functional programming styles. Even though it’s a dynamic language, you can use strongly typed languages that are built on top of JavaScript, like Typescript.&lt;/p&gt;

&lt;p&gt;The flexibility of the language allows you to write in all these different paradigms. Mastering these paradigms can benefit you later on when you want to learn another language that emphasizes one of these paradigms, i.e. an object oriented language.&lt;/p&gt;

&lt;h2&gt;
  
  
  2) Platform
&lt;/h2&gt;

&lt;p&gt;JavaScript started in the web browser. It’s one of the core technologies of the web. Learning JavaScript allows you to understand how the web works. The amazing thing about Javascript is you literally have access to thousands and thousands of websites at your fingertips. That means you have access to all these websites’ Javascript code. You can read other people’s code, learn, and practice.&lt;/p&gt;

&lt;p&gt;Getting started with JavaScript is relatively easy. Open a browser and start playing with code in the console, or open up any text editor and start writing some code inside of html tags and then open the file in your browser, no setup required.&lt;/p&gt;

&lt;p&gt;Now, JavaScript engines are common components of both server-side website deployments and non-browser applications. With the creation of Nodejs, React Native, Cordova, Electron and other application frameworks, you can build mobile applications, desktop applications, games and server side applications and services.&lt;/p&gt;

&lt;p&gt;JavaScript has even appeared in some embedded systems.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;To be honest though, depending on your requirements and needs, JavaScript may not always be the best solution for non website apps.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The fact that you can learn JavaScript and transfer that knowledge to a different platform is very powerful and a great incentive for learning the language.&lt;/p&gt;

&lt;p&gt;Even though many languages, like Python, can be used across different platforms, Javascript still dominates the web.&lt;/p&gt;

&lt;h2&gt;
  
  
  3) Concepts &amp;amp; Design Patterns
&lt;/h2&gt;

&lt;p&gt;The third reason why you should learn JavaScript is that there are concepts and design patterns that are openly exposed to you while learning the language on different platforms.&lt;br&gt;
For example, if you write server side JavaScript using Nodejs, you are introduced to principles and design patterns that are at the core of the Nodejs ecosystem. For example, you will learn the following concepts and design patterns:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Modules&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Event Loop&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Callbacks&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Event Emitter&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;1) Modules&lt;/strong&gt;&lt;br&gt;
The concept of modules teaches you how to structure your code in small well defined components. Each module should focus on one thing and it should do it well. This helps you keep your code simple and understandable. This also helps with testing. This concept is seen throughout all of Nodejs APIs. This is good training for new developers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2) Event Loop&lt;/strong&gt;&lt;br&gt;
When you learn about Nodejs asynchronous nature and it’s Event Loop, you are actually seeing the reactor pattern in use. This design pattern is an event handling pattern. Each I/O operation/event, i.e. file access, network operation, etc, is associated with a handler (see callbacks below). When an operation is done, its result is passed to the handler and the handler is invoked. The event loop handles all of this.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3) Callbacks&lt;/strong&gt;&lt;br&gt;
Because of Nodejs asynchronous nature, it uses a unique design pattern at its core called the callback pattern.When an operation is done, it sends the result to another function. &lt;/p&gt;

&lt;p&gt;This pattern has pros and cons. But you are exposed to another design pattern, so it is still good for new developers to see how design patterns are used.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4) Event Emitter&lt;/strong&gt;&lt;br&gt;
The event emitter class is at the core of Nodejs. This shows the observer pattern in use. An object can notify listeners when its state changes, i.e. when a button is clicked, when user input text in a text box, etc. This is a common design pattern used in many programming frameworks and platforms. &lt;/p&gt;

&lt;p&gt;Seeing how it is used in a production grade framework like Nodejs is good training for new developers.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Every platform has its own pros and cons and design principles. These are just a few I wanted to mention that are associated with Nodejs.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;;TLDR;&lt;br&gt;
Javascript is used in many places and it can be fun to write and use in personal projects as well as professional projects. After learning JavaScript you can definitely find a developer job to get experience as a developer. Then you can learn other languages to advance your career.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>node</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
    <item>
      <title>5 More Books for Full Stack Developers</title>
      <dc:creator>Jason Shelley</dc:creator>
      <pubDate>Sun, 05 Dec 2021 18:38:39 +0000</pubDate>
      <link>https://dev.to/kinjiru09/5-more-books-for-full-stack-developers-86n</link>
      <guid>https://dev.to/kinjiru09/5-more-books-for-full-stack-developers-86n</guid>
      <description>&lt;p&gt;The below books are not typical books you may see on reading lists for full stack developers, which is a pity since these books are extremely valuable.&lt;br&gt;
I tried to stay away from “programming cookbooks” and focus more on books that focus more on concepts and implementations. For example, these five books are around security, databases, system architecture and general software development.&lt;br&gt;
I hope you enjoy them as much as I do!&lt;/p&gt;

&lt;h2&gt;
  
  
  Security
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---tM3ipEO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zfodtqwngyadpuzkb21i.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---tM3ipEO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zfodtqwngyadpuzkb21i.jpg" alt="Hackable: How to Do Application Security Right&amp;lt;br&amp;gt;
" width="333" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ted Harrington brings it home with this excellence read on application security. You may not be in security, but after reading this book, you will definitely have a different outlook on the importance of security in your own applications. It may even motivate you to get into the security field.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ooMOkkxl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f77f2c94kw7p4kasdhxb.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ooMOkkxl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f77f2c94kw7p4kasdhxb.jpg" alt="The Web Application Hacker’s Handbook: Finding and Exploiting Security Flaws&amp;lt;br&amp;gt;
" width="406" height="500"&gt;&lt;/a&gt;This one book is one I don’t see mentioned a lot. Maybe because it was published in 2011. But don’t let that date fool you. This is a must read for any serious full stack developer. Majority of the book is still extremely relevant for today. One of the creators of burpsuite (application security testing tool) is the author of the book. The sheer amount of detailed information that you will learn by reading it is amazing. You don’t have to be in security or be a pentester to understand it. It talks about real features that we build or use everyday on the web and their vulnerabilities. Guarantee after reading this book, you will definitely look at your own web applications differently.&lt;/p&gt;

&lt;h2&gt;
  
  
  Database
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EyPhkUev--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w2sjmmmp29lhh894ugql.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EyPhkUev--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w2sjmmmp29lhh894ugql.PNG" alt="Database Internals: A Deep Dive into How Distributed Data Systems Work&amp;lt;br&amp;gt;
" width="257" height="335"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Great book for developers who work with databases. It doesn’t matter if you write SQL for applications to consume, or if you use ORMs to do it. If you work with databases, you should read this book. It’s more of a “deep dive” into databases. It explains things at a high level but well enough for you to understand how databases are structured and how they access data. You will definitely look at your SQL differently after reading this one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Software Development
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--S0loWSej--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/88e4j9vt172m2mpzu0rh.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--S0loWSej--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/88e4j9vt172m2mpzu0rh.PNG" alt="The Missing README: A Guide for the New Software Engineer&amp;lt;br&amp;gt;
" width="225" height="334"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you are a bootcamp grad, CS grad, new developer with less than 3 years, you mentor junior developers, or IT department manager this book is a must read. It’s a handbook for everything you need to know starting out that you didn’t learn in your bootcamp course, CS course, or in your first few years without a mentor.&lt;br&gt;
It gives great advice on how to improve your programming skills, tech debt, working with legacy code, version control best practices, coding best practices, how to use config files and logs in your projects, testing, code reviews and much much more.&lt;br&gt;
Great book!&lt;/p&gt;

&lt;h2&gt;
  
  
  System Architecture
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jJfBg2XB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/djj912o1svmedyr4ian5.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jJfBg2XB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/djj912o1svmedyr4ian5.PNG" alt="Building Microservices" width="256" height="323"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you work in an environment that uses the microservice architecture, or your team is considering it, this book is a great read. It takes you from foundation to implementation. It talks in detail about testing, monitoring and security. All three are things you may get wrong if it’s your first time working with microservices.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>security</category>
      <category>codenewbie</category>
      <category>webdev</category>
    </item>
    <item>
      <title>The Death Trap for the Solo Developer</title>
      <dc:creator>Jason Shelley</dc:creator>
      <pubDate>Tue, 30 Nov 2021 17:31:51 +0000</pubDate>
      <link>https://dev.to/kinjiru09/the-death-trap-for-the-solo-developer-4d6p</link>
      <guid>https://dev.to/kinjiru09/the-death-trap-for-the-solo-developer-4d6p</guid>
      <description>&lt;p&gt;Software development is a skill, an art that can only be mastered through years of hard work and practice. Learning from others can help the journey greatly. In work environments that have developers of different skill levels, pair programming, code review, etc. all contribute to a developer’s growth. Even experienced developers can learn from their peers.&lt;/p&gt;

&lt;p&gt;However, sometimes if you are a solo developer at a company or on a project, it’s very easy to miss out on the advantages of working with others. It’s really easy to push code without having a formal process. After a while your project will develop tech debt, but you as a developer will also suffer too. Your motivation will suffer and more importantly, your skills will suffer. If you are a solo developer at a company for several years and you don’t challenge yourself, your skills will suffer the consequences. &lt;em&gt;This is the death trap and it’s hard to escape from it.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I was a solo developer for several years at different companies at different points in my career. Focusing on the below four things helped me to stay motivated to constantly improve myself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Refactor Code
&lt;/h2&gt;

&lt;p&gt;Do not be happy just because you finished a particular feature and pushed it out to your users successfully. After a month or two (if you do not have any bugs already), go back and see if you can read your code. If you are having trouble reading it, imagine how another developer would feel reading it. Try to refactor your code. See if you can improve the performance and security of the feature.&lt;/p&gt;

&lt;p&gt;Are you using third party libraries? Do you need to use them? Sometimes, especially in the JavaScript world, we import libraries just for one feature. (Ever imported momentjs just to use the format method?) See if you can eliminate that library by implementing the feature yourself. Obviously, you have to have balance here. Use your discretion.&lt;/p&gt;

&lt;p&gt;Can you see a better algorithm, design pattern, or data structure to use to improve the code? Can you remove unnecessary comments, i.e. dead code? Can you add better comments to explain certain business logic?&lt;/p&gt;

&lt;p&gt;The point is, code is never perfect the first time it’s written. Code reviews can help us to improve our code. But solo developers will have to implement their own code review process in order to reap the benefits. Having a set time to refactor code after every release can help you with that.&lt;/p&gt;

&lt;h2&gt;
  
  
  Test, Test, Test
&lt;/h2&gt;

&lt;p&gt;You should always test your code before giving it to the end user. That’s programming 101. But as a solo developer, you might not have a tester to rely on. That means you have to be the tester. You might have to perform functional, integration, system testing and user acceptance testing.&lt;/p&gt;

&lt;p&gt;Why is testing especially important for solo developers?&lt;br&gt;
Testing helps you to stay focused on the quality of your code. It’s really easy to feel overwhelmed as a solo developer. You might have to wear several hats. This could easily affect the quality of our code. For example, we might have so many things to do in a short time. Then, we get a request to make some minor tweaks to our code to meet some change to business requirements. After we make the tweaks what should we do? Remember, we still have so many other things to do. But we still have to test, test, and test our code.&lt;/p&gt;

&lt;p&gt;Testing holds us accountable to our code. When you test, and you see a bug, you have to fix it before giving it to the user. If we were on a team of developers, we would be held accountable for our code by other developers. Solo developers should hold the same standard if we are working alone on a project. It’s for our best interest. It keeps our skills sharp.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Testing helps you to stay focused on the quality of your code.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Documentation
&lt;/h2&gt;

&lt;p&gt;Documentation is probably the least favorite part of software development. But writing documentation for our software helps us in two ways. &lt;/p&gt;

&lt;p&gt;The first way is it helps us to think like a user. When we write code, we are thinking like a developer, but documentation is for the user. This means, we have to take our code and express it in a way that a non-technical person can understand. It gives us a different perspective and this ultimately helps us to be better developers.&lt;/p&gt;

&lt;p&gt;The second way is it helps us to stay honest as developers. &lt;br&gt;
Documentation is like a binding contract between the user requirements and our code. When we have to explain how to use the new features we implemented, we know if it really works or not. It’s really easy to push a new feature that’s half built and to tell the end user it works. But when we have to create documentation on how to actually use the new feature, especially if we include screenshots, it will help us to be honest about our code. It’s also proof that our code meets the user requirements.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Documentation is like a binding contract between the user requirements and our code.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Challenge Yourself
&lt;/h2&gt;

&lt;p&gt;There are so many other things we can do to avoid the death trap of working as a solo developer in a company or on a project. These were just a few points. The point is we have to keep challenging ourselves. We have to keep improving our skills. We have to keep moving forward. Remember, if we don’t challenge ourselves, no one else will.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Developers Remember This Before Your Interview!</title>
      <dc:creator>Jason Shelley</dc:creator>
      <pubDate>Sat, 20 Nov 2021 17:51:59 +0000</pubDate>
      <link>https://dev.to/kinjiru09/developers-remember-this-before-your-interview-558i</link>
      <guid>https://dev.to/kinjiru09/developers-remember-this-before-your-interview-558i</guid>
      <description>&lt;p&gt;Interviewing can be very stressful. You may worry if you will make a good impression, or what type of test they will give you. But there are a few things to remember when you go to an interview.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Employer’s Interview
&lt;/h2&gt;

&lt;p&gt;Employers typically have a particular mindset when interviewing developers, &lt;em&gt;“I am going to spend &lt;strong&gt;my money&lt;/strong&gt; to pay you to render a service for me. So I want to make sure I am getting my money’s worth.”&lt;/em&gt; In other words, they want to make sure you are a worthwhile investment, or that you bring value to the company. Because many employers (not all) think like this, they typically use the interview process as a way to determine a developer’s value. You will meet with various people, answer questions both personal and technical, take coding challenges, and build an app. Some companies even have personality tests. A company has the right to have all these things in the interview. After all, it is their money.&lt;/p&gt;

&lt;p&gt;But the exact opposite is true too! Developers should have a similar mindset when going to any interview. &lt;em&gt;“I am going to spend &lt;strong&gt;my time&lt;/strong&gt; rendering a service to you. I want to make sure my time is well spent and well compensated.”&lt;/em&gt; Here is why developers should think this way.&lt;/p&gt;

&lt;h2&gt;
  
  
  Time vs Money
&lt;/h2&gt;

&lt;p&gt;Time is more valuable than money. You can have all the money in the world, but if you don’t have time to spend it or enjoy it with your loved ones, then the money is pointless.&lt;/p&gt;

&lt;p&gt;As a developer, our time is valuable. We spend our time with our families, our friends, learning new skills, enjoying hobbies, and handling our responsibilities. Our time only becomes more valuable as we get older.&lt;/p&gt;

&lt;p&gt;We don’t have the time to waste on pointless interviews. When you go to an interview, the employer is being interviewed just as much as you are. You need to make sure that the job will compensate you for your skills and that it will allow you to grow as a developer.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Employers are checking to see if we have the right skills for the job. Developers should check if the employer has the right environment for us to grow.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Thus, developers should interview the employer.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Developer’s Interview
&lt;/h2&gt;

&lt;p&gt;Developers should have a list of questions ready to ask the employer. Some examples are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;How many developers are on the team?&lt;/li&gt;
&lt;li&gt;What is the personality of the team, are they fun and laid back or serious?&lt;/li&gt;
&lt;li&gt;What type of source control do you use?&lt;/li&gt;
&lt;li&gt;Do you have a code review process?&lt;/li&gt;
&lt;li&gt;Do you have peer programming?&lt;/li&gt;
&lt;li&gt;How do you encourage or help your developers to continue to grow?&lt;/li&gt;
&lt;li&gt;How do you help your developers have a healthy work-life balance?&lt;/li&gt;
&lt;li&gt;Walk me through a typical day at the office&lt;/li&gt;
&lt;li&gt;Can I see an example of user requirements?&lt;/li&gt;
&lt;li&gt;How many sprints do you cover in a quarter?&lt;/li&gt;
&lt;li&gt;Does the IT department have its own budget?&lt;/li&gt;
&lt;li&gt;How do you track bugs?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;There’s nothing wrong with asking questions like these in an interview. You are investing your time in this company. Invest wisely!&lt;/p&gt;

&lt;p&gt;New developers definitely have to learn this way of thinking. Just because you are new in the field doesn’t mean you have to accept any job. Find a job that will compensate you and will allow you to grow. If the job doesn’t meet these two criteria, do not waste your precious time.&lt;/p&gt;

&lt;p&gt;Our time only becomes more valuable as we get older. We have to invest it wisely. Invest it in learning and improving yourself. Improve your programming skills. Improve your thinking ability. Improve your personality. These are skills that make us more valuable. Do not waste your time on a company with a toxic environment or an environment where you cannot learn and grow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Signs of a Pointless Interview
&lt;/h2&gt;

&lt;p&gt;If you see a job that lists every skill under the sun, beware this interview will most likely waste your time. If you see a job posting like the below for a front end position but it lists NON front end skills, it’s probably not worth your time.&lt;/p&gt;

&lt;p&gt;What You Bring to the Team&lt;br&gt;
SQL&lt;br&gt;
DevOps&lt;br&gt;
Building APIs&lt;br&gt;
React&lt;br&gt;
Typescript&lt;br&gt;
CSS&lt;/p&gt;

&lt;p&gt;BS in Computer Science or equivalent and 5 years of experience&lt;br&gt;
Accredited Full Stack Web Certification and 6 years of experience&lt;br&gt;
This is from a real job posting for a front end position. This company wants you to know DevOps?! And what is Full Stack Web Certification, isn’t this position for a front end developer? Is a full stack developer stronger than a front end developer? Not necessarily. A full stack developer could be stronger on the backend but suffer on the front end. They didn’t even list HTML and JavaScript (knowing React doesn’t mean you know JavaScript). Job descriptions like this give you a view into the company. A company like this doesn’t know what their developers do, or they expect too much out of their developers. Front end is front end, backend is backend. The job description should be clearer. If they want someone who knows both, they should ask for a full stack developer. Companies that do not have clear job postings are an indication of communication issues.&lt;/p&gt;

&lt;p&gt;;TLDR;&lt;br&gt;
Going to an interview certainly can be stressful. But remembering that you can also interview the employer will help alleviate some of the stress. During your interview process make sure to see if the company can bring value to your career. If not, find a company that will. Invest in your future!&lt;/p&gt;

</description>
      <category>programming</category>
      <category>interview</category>
      <category>beginners</category>
    </item>
    <item>
      <title>How to Improve Your Coding Skills for Free</title>
      <dc:creator>Jason Shelley</dc:creator>
      <pubDate>Sun, 14 Nov 2021 20:00:29 +0000</pubDate>
      <link>https://dev.to/kinjiru09/how-to-improve-your-coding-skills-for-free-5525</link>
      <guid>https://dev.to/kinjiru09/how-to-improve-your-coding-skills-for-free-5525</guid>
      <description>

&lt;p&gt;It is amazing how many people have join the ranks of coders over the last few years. Whether you are a professional coder or just code for fun, learning this skill will definitely change your outlook on life and how you think.&lt;/p&gt;

&lt;p&gt;With the advent of online tutorials, bootcamps, YouTube videos and blogs, learning the basics of coding is extremely easy.&lt;/p&gt;

&lt;p&gt;However, some of these resources are limited in what they offer. Sure, you can learn theory, algorithms, data structures, etc. But if new developers would like to improve certain skills, for example, how to structure a large application, how to create performant and secure code, how to create test cases, log and fix bugs, documentation, communication with other team members, etc they need to get their hands wet. One of the best ways to do this is to join an open source project.&lt;/p&gt;

&lt;p&gt;For many new developers though, joining an open source project seems daunting. They may feel they do not have the skills to contribute, and such fears are understandable. I could spend the rest of this article explaining why they shouldn't let fear stop them from joining an open source project, but instead I will offer another solution.&lt;/p&gt;

&lt;h2&gt;
  
  
  Another Free Alternative
&lt;/h2&gt;

&lt;p&gt;Many articles talk about how to use GitHub, Gutbucket, Gitlab, or a similar open source repository to upload your code. Many of these articles fail to help new developers to see the rich and vast amount of information these free repositories have to offer to new developers.&lt;/p&gt;

&lt;p&gt;We will use GitHub as an example. You can create a free account using your email address. You can search, download, read through and play with code that experienced developers have created and uploaded for other people to use.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are the benefits?
&lt;/h2&gt;

&lt;p&gt;Many of these repositories are real, live code that thousands of people use everyday. You will learn valuable lessons on how to structure code, how to use code to tackle a problem, proper documentation, proper testing, logging and resolving bugs, how to commit code with proper commit messages, how to structure branches and releases, how to use CI/CD (if the repo is using it), how to write performant code, how to write secure code, etc.&lt;br&gt;
You can learn so much from these projects. You can learn at your own pace. And this is a free method to improve your coding skills.&lt;br&gt;
The main point is you do not need to join an open source project to improve your coding skills. You are welcome to download the code, read it, run it, play with it, and learn from it.&lt;br&gt;
Build your skills. Build your knowledge. Build your confidence.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to do it?
&lt;/h2&gt;

&lt;p&gt;Most popular projects will have a Readme file, an example folder, a test folder and a src folder. "src" is short for source, and this is where the bulk of the code can be found.&lt;br&gt;
First, read the Readme file to understand the purpose of the project and how to set up everything. Next, take a look at the example folder. Usually the examples are simple so it will be easy to understand the code. Play around with the examples. This will also help you later when you are looking in the src folder. Finally, take a look at the tests. Run them and see if you understand what's happening. See if you can write your own test case following their format. Obviously, a big project will have comprehensive test cases. But still this is good training.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Just as reading books can open your mind to the world around you. Reading open source code will open your mind to the world of software development.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
    </item>
    <item>
      <title>Should You Learn Deno in 2022?</title>
      <dc:creator>Jason Shelley</dc:creator>
      <pubDate>Tue, 09 Nov 2021 05:59:42 +0000</pubDate>
      <link>https://dev.to/kinjiru09/should-you-learn-deno-in-2022-5fbf</link>
      <guid>https://dev.to/kinjiru09/should-you-learn-deno-in-2022-5fbf</guid>
      <description>&lt;p&gt;If you are a JavaScript developer, perhaps you have heard of a new JavaScript runtime called Deno. Like me, you probably thought: &lt;em&gt;“Oh no! Here we go again. Is this going to be another Nodejs vs io.js fiasco or npm vs yarn battle.”&lt;/em&gt; You might even have thought: &lt;em&gt;“Yet another tool in the JavaScript ecosystem to make our lives miserable.”&lt;/em&gt; After all, &lt;a href="https://www.freecodecamp.org/news/javascript-fatigue-fatigue-66ffb619f6ce/"&gt;JavaScript has a history of making developers feel exhausted.&lt;/a&gt; Is Deno going to be another reason for developers to dislike JavaScript?&lt;/p&gt;

&lt;p&gt;The short answer is No. In fact, it’s the exact opposite. You should definitely learn Deno in 2022. If you want to know why, continue to read this article. If you are already convinced, great! Head over to the Deno website and start learning it for 2022.&lt;/p&gt;

&lt;h2&gt;
  
  
  Just Another Shiny Tool?
&lt;/h2&gt;

&lt;p&gt;First off, let’s get this out of the way. Deno &lt;strong&gt;IS NOT&lt;/strong&gt; just a new shiny tool for JavaScript. It solves real problems that JavaScript developers face and it offers real productive tools that can help JavaScript developers in our development process.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Deno?
&lt;/h2&gt;

&lt;p&gt;The official &lt;a href="https://deno.land/"&gt;Deno website&lt;/a&gt; said:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Deno (/ˈdiːnoʊ/, pronounced dee-no) is a JavaScript/TypeScript runtime with secure defaults and a great developer experience.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For any Nodejs developer, this explanation alone should make us excited. First, Deno is a JavaScript/TypeScript runtime. Let me repeat, Deno is a JavaScript/TypeScript runtime. It supports Typescript right out of the box! There is no need to download another tool or some transpiler to run your code. Deno treats these languages &lt;a href="https://deno.land/manual@v1.15.3/typescript/migration"&gt;“pretty equally”&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The command to run JavaScript files is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;deno run YourFile.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The command to run TypeScript files is also:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;deno run YourFile.ts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can even have files in both languages in your project. This allows developers to be extremely productive. TypeScript is extremely popular and useful in the development process. It helps developers create more clean, efficient and safe code. The Deno runtime offer this feature without any extra work from the developer. This allows developers to focus on building solutions instead of fiddling around with config files.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“…a runtime with secure defaults”.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You have to explicitly set the permissions for your script if you want it to have file, network or environment access. This means when you use a third party package, you will know what that script will access. This is really useful from a security perspective. For example, if you import a third party package named StringValidator and it wants access to the internet, you may want to double check to see what this package is really doing.&lt;/p&gt;

&lt;p&gt;Deno can import modules from any location on the web. You also have the option to import your modules from the Deno hosting service, &lt;a href="https://deno.land/x"&gt;deno.land/x&lt;/a&gt;. If you do, you are guaranteed that the module will be there. Because all uploaded module versions are immutable, to prevent breaking programs that rely on them. If you start using a newer version of the module, and find there are security risks, you can easily revert back to the previous version without worrying.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“..a great developer experience”.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;What would make Deno a better developer experience than Nodejs?&lt;/p&gt;

&lt;p&gt;It’s web compatible. This means your Javascript knowledge that you learned from writing front end apps on FireFox, Chrome, Edge, etc is transferable to Deno. You can use Fetch, Web Workers, Web Storage, Blob, FormData, WebSocket, even Web Assembly and much much more. That’s less third party modules you have to worry about, bye-bye axios.&lt;br&gt;
It has built-in utilities to make development easier. For example,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Linter (&lt;a href="https://deno.land/manual@v1.15.3/tools/linter"&gt;deno lint&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Bundler (&lt;a href="https://deno.land/manual@v1.15.3/tools/bundler"&gt;deno bundler&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Test runner (&lt;a href="https://deno.land/manual@v1.15.3/testing"&gt;deno test&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Code Formatter (&lt;a href="https://deno.land/manual@v1.15.3/tools/formatter"&gt;deno formatter&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Dependency Inspector (&lt;a href="https://deno.land/manual@v1.15.3/tools/dependency_inspector"&gt;deno info&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Documentation Generator (&lt;a href="https://deno.land/manual@v1.15.3/tools/documentation_generator"&gt;deno doc&lt;/a&gt;)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These are not “nice to have” tools. These are necessary tools. When developers see the runtime they are using provides these tools without any extra crazy annoying configuration, it builds their confidence in the runtime and in their ability to use the language better.&lt;/p&gt;

&lt;p&gt;Deno also provides built-in modules that are supported by the Deno team. These modules are very useful for everyday programming tasks. For example, Collection module has functions to work with collections like groupBy, partition, union. DateTime module has functions to deal with dates. It also has a module to allow us to use Nodejs modules that do not use non-polyfilled Node APIs.&lt;/p&gt;

&lt;p&gt;These are just some of the features that make Deno compelling to learn. But we still haven’t talked about: how Deno handles package management, how Deno handles promises, extending Deno with Rust plugins, Deno Deploy (a serverless solution allowing users to quickly script distributed HTTPS servers) and even compiling your scripts into a self-contained executables!!&lt;br&gt;
Deno looks promising. It has a team of developers and investors to push it to the next level. 2022 is definitely going to be an exciting year for it. Even if it doesn’t replace Nodejs, it will definitely push everyone to a better JavaScript ecosystem.&lt;/p&gt;

</description>
      <category>deno</category>
      <category>javascript</category>
      <category>typescript</category>
      <category>programming</category>
    </item>
    <item>
      <title>3 Skills Developers Must Have</title>
      <dc:creator>Jason Shelley</dc:creator>
      <pubDate>Mon, 08 Nov 2021 15:51:25 +0000</pubDate>
      <link>https://dev.to/kinjiru09/3-skills-developers-must-have-241h</link>
      <guid>https://dev.to/kinjiru09/3-skills-developers-must-have-241h</guid>
      <description>&lt;p&gt;As a developer, there are certain skills that are &lt;em&gt;needed&lt;/em&gt; and then there are certain skills that are a &lt;strong&gt;must&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For example, a developer needs to know essential computer science concepts like algorithms and data structures. They also need to know source control, networking basics, database basics, text editors like Visual Studio Code, VIM, Atom, etc. Of course, developers also needs to know the language they are using and they need to know it well.&lt;/p&gt;

&lt;p&gt;This list is not an exhaustive list. But this list is pretty standard, regardless the programming language you are using and the type of developer you are, i.e. web developer, software engineer, mobile developer, etc.&lt;/p&gt;

&lt;p&gt;But there is a &lt;strong&gt;second list&lt;/strong&gt; of skills that a developer must have. They are debugging, testing and code reading skills.&lt;/p&gt;

&lt;h1&gt;
  
  
  Debugging
&lt;/h1&gt;

&lt;p&gt;Have you ever heard a developer say: &lt;em&gt;“Finally it works! I have been staring at this code for hours and it turned out to be a silly mistake!”&lt;/em&gt; Perhaps you have even said this yourself once or twice. What is the problem here?&lt;/p&gt;

&lt;p&gt;Our code does not always do what we expected it to do. When that happens we need to figure out what is happening. To effectively do this we need to make use of the debugger. For many developers, debugging means writing a bunch of console write lines to see what is being produced. This is not debugging!&lt;/p&gt;

&lt;p&gt;Debugging means to use a debugging tool to run the code step by step in order to find the exact point of the mistake.&lt;/p&gt;

&lt;p&gt;It is a skill to know how to use a debugger correctly, effectively, and efficiently. No one is going to teach you how to debug. In fact, many software courses barely touch on the subject. You have to learn by yourself. Learn what a breakpoint is, a conditional breakpoint, inline breakpoint, how to inspect a variable during debugging, remote debugging, etc. Do not wait until your code has bugs before learning how to use the debugger. Sit down, write some code and step through it to see what happens. Read the debugger documentation. For example, Visual Studio code (VS code) has a built-in debugger for JavaScript. It also has support for debuggers in other languages like Python, C/C++, C# Java, etc. Visit VS code website to learn more about using the debugger.&lt;/p&gt;

&lt;p&gt;Once you becomes proficient in using a debugger, you will save loads of time and become a better developer. You will also be able to help others find and squash their bugs faster.&lt;/p&gt;

&lt;h1&gt;
  
  
  Testing
&lt;/h1&gt;

&lt;p&gt;Testing is an extremely important step to make sure our software is bug free before releasing.&lt;/p&gt;

&lt;p&gt;A developer should be familiar with several different testing methods. For example, unit testing, integration testing, and system testing, to name a few. There are many frameworks out there to help us, we just have to use them.&lt;/p&gt;

&lt;p&gt;It takes time and patience to learn how to test your code. Many developers may feel testing is not important or that it is a waste of time, especially if they are the sole developer at their company. But it is important. A smart developer will take the needed time to learn this skill and become proficient at it.&lt;/p&gt;

&lt;p&gt;Debugging is for the developer. With it, we save our time and reduce stress while we code.&lt;/p&gt;

&lt;p&gt;Testing is for the user. With it, we save them time and reduce their stress while they use our software.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Debugging saves time, testing requires time. But the result is better software.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Increase code reading skills
&lt;/h1&gt;

&lt;p&gt;This is a skill that hardly ever makes the list of needed skills for developers. This skill is a must because we have to read our own code when we debug, but we also have to read other developers’ code.&lt;/p&gt;

&lt;p&gt;If a developer can’t read other developers’ code, they will waste a lot of time and constantly feel frustrated. Eventually they will just give up and decide to “rewrite the whole thing”.&lt;/p&gt;

&lt;p&gt;Take the time to improve your code reading skills. Do coding challenges like &lt;a href="https://www.topcoder.com/challenges"&gt;TopCoder&lt;/a&gt; or &lt;a href="https://www.codewars.com/"&gt;Codewars&lt;/a&gt;. &lt;a href="https://www.freecodecamp.org/news/the-10-most-popular-coding-challenge-websites-of-2016-fb8a5672d22f/"&gt;Here is a list of other coding challenges&lt;/a&gt;. Go to GitHub and read code repos. Actively participate in code reviews at your company.&lt;/p&gt;

&lt;h1&gt;
  
  
  Future benefits
&lt;/h1&gt;

&lt;p&gt;While many job applications will not list these skills (at least not debugging and code reading skills) these skills are definitely required when taking a coding challenge on the job interview. Honing these skills will definitely help you to land the job or at least put you at the top of the list.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>testing</category>
      <category>debugging</category>
      <category>coding</category>
    </item>
  </channel>
</rss>
