DEV Community

Cover image for What skills are good to have as a junior developer?
Marinsborg
Marinsborg

Posted on • Originally published at marinsborg.com

What skills are good to have as a junior developer?

Table of contents


Intro

During my last year of university, I got my first programming job. I was pretty confident in my programming skills and I could not wait to apply my knowledge in the real world. However, working there I had to learn some new tools and terms that I never heard about before. For example git, SonarQube, Jira, etc.

In this post, I will list some useful things that I recommend every beginner developer should get familiar with. Of course, when you are a beginner, nobody expects you to know about this but if you know something it can give you extra points in interviews.

Imagine you need to move to some foreign country where people do not use English at all so you would need to learn the language. Then before moving you would probably try to learn some common phrases and words that you could use every day. In that way, you are building a foundation in that language and make your life easier a bit.

The same thing is with jobs that are beginner level. You will learn all about these tools and terms at the job but it will be easier for you if you read about them before.

I will leave you some useful links that will explain to you some stuff better than me.

So let's start.

How to use Google

How to use Google is a skill that every programmer should have. It is a skill that makes you find solutions for your problems fast and efficiently. This is a skill you usually get while working.

Some tips for better Googling:

  • When you are searching for a solution to some problem, it would be best to add the name of the tool or programming language that you are going to use in resolving that problem. For example "How to get top 10 records SQL" or "How to get top 10 records Entity Framework".
  • When you get Google search results, always try to find the most recent results. This is useful because tools and programming languages always get updates so some older solutions are not relevant today or they will not work with current versions of tools. You can set Google settings that returns you only results from last year by going to settings → tools → past year.
  • When searching for a comparison between two things then use the "vs" word. For example "Java vs C#".
  • If you want to exclude some term in your results then use "-". For example "Python -snake" will not return anything about snakes, you will get results about programming language mostly.
  • If you want to make sure results contain some phrase or word then you need to surround that with quotes.
  • If you copy an error message it is a good idea to remove everything that is not relevant for an error like file paths, file names, name of classes, etc.
  • Google has a set of tools that are available through the search bar. For example calculator (search "3+5"), weather ("Paris weather"), time zone and current time ("Tokyo time now"), unit conversion ("10 miles to km").

Most programming-related searches will give you results from StackOverflow. It is a page where developers ask programming-related questions or ask for help in solving programming issues. Solutions to that are posted by other programmers. You can search on that website too.

If you find a solution for your problem do not just copy and paste code snippet, first try to understand what it does. If you do not understand then ask some of your colleagues for help. That way you will actually learn something new instead of only copying and pasting. Sometimes when I search for solutions for some complex problem I like to paste the URL of the solution in code comments. That way it is easy for me or any colleague to see why I did something that way.

Another useful page that you will see in your search results is Wikipedia. I use it a lot for this blog because it describes terms very well. It is a useful page when you need to read about some theory from math, physics, computer science, medicine, etc. Let's say that in your code you need to use the Pythagorean theorem and you forgot what it is. Search for it on Wikipedia and you will find the definition and formula there.

Git

Git is the most popular source control tool and there is a big chance you will need to use it on a daily basis.

According to Wikipedia: Git (/ɡɪt/) is software for tracking changes in any set of files, usually used for coordinating work among programmers collaboratively developing source code during software development.

The best way to learn git is "learn by doing". You just need to install git on your PC and start with tutorials.

Once you are done with tutorials, try to use git on your PC with regular text files. Create a folder where you will initialize the repository and add some files there. Do some changes to files.

First, install git on your PC, then you can go through the tutorial and in the end, you can go through this beautiful interactive tutorial. After you finish these two tutorials you will be able to use git at work on a daily basis.

It is also worth mentioning that there are two ways of working with git. One way is the command-line interface and the other is GUI clients. Both ways accomplish the same things, it is up to the developer to decide what he like the most.

Gitflow

Once you are familiar with git, it would be a good idea to learn a bit about gitflow workflow. Gitflow is just an abstract idea of using git in everyday work. It is the unwritten set of rules that every software developer team follows during continuous software development.

In very short description - gitflow defines five "types" of git branches and when each type is used:

Main (master) - usually only contains the release history of the project and it is always a stable branch which means that you can make a new deployment of a project from that branch at any point in time.

Development - branch that contains the whole git history of a project. It is a branch from which developers create their feature branches. All features of the projects are integrated into this branch-

Feature - this is a branch that every developer creates for every feature he/she develops. You should always create a feature branch from the development branch and merge it back to the development. You must not use the main branch for this.

Release - this branch is used for releasing a new version of the application. It is created from the development branch. This branch is created so new features are can be added and the development team can use the development branch without any interruptions.

Hotfix - most of the time hotfix branch is used for bug fixing code that is on some production. It is created from the main branch and after you add a fix it is merged back to the main branch and to the development branch.

If you want to know more about gitflow you can read here.

Git vs GitHub

There is common confusion between these two terms. GitHub is a Git repository hosting service that also contains some own features. It means that you can store your code on the cloud and it will help you collaborate with other people.

There are also some other providers of the same service like Bitbucket, Gitlab, etc.

SQL and relational database

Today, most modern applications work in a way that they process user inputs, save results to the database, and present the output to the user. Some tech giants make a lot of money by saving, analyzing, processing, and selling user data (Facebook and Google for example).

Because of that, it would be good to know some general things about relational databases and about SQL.

There are a lot of definitions and terms you need to understand when learning about relational databases so I think it would be best to give you some useful links so you can read about them. Don't worry, learning about that is not complicated at all, I think you can learn the basics in one afternoon.

Terms that would be good to learn are

After that, you can start with the SQL tutorial and learn about select, insert, update and delete commands, where condition and joins. Don't go too much into details, it is important to know and understand only the basics.

You can even install some database servers and clients to your PC and create your own database to practice on.

It is worth mentioning that there are some other database types like document databases and graphs databases but let's stick with relational databases for now.

HTTP

We live in a world where there is an increasing number of devices that can connect to the internet - smartphones, cars, televisions, fridges, etc. Even though you maybe don't want to work as a web developer there is still a chance that in your application you might need to get some data from the server. That is why it would be good for you to learn about HTTP.

According to Wiki: "The Hypertext Transfer Protocol (HTTP) is an application layer protocol for distributed, collaborative, hypermedia information systems. HTTP is the foundation of data communication for the World Wide Web, where hypertext documents include hyperlinks to other resources that the user can easily access, for example by a mouse click or by tapping the screen in a web browser.

HTTP functions as a request-response protocol in the client-server computing model. A web browser, for example, may be the client and an application running on a computer hosting a website may be the server. The client submits an HTTP request message to the server. The server, which provides resources such as HTML files and other content, or performs other functions on behalf of the client, returns a response message to the client. The response contains completion status information about the request and may also contain requested content in its message body."

There are four most used HTTP methods that client uses when interacting with the server: POST, GET, PUT and DELETE.

POST request method requests that a web server accepts the data enclosed in the body of the request message, most likely for storing it. It is often used when uploading a file or when submitting a completed web form.

GET requests should only retrieve data and should have no other effect. For example, downloading a file or opening some blog post.

PUT request method requests that the target resource creates or updates its state. It means that we create a resource if it does not exist or update the resource if it exists on the server. For example, updating email on social media.

DELETE request method requests that the target resource deletes its state. For example, deleting a profile's image on social media.

Like we already learned, HTTP functions as a request-response protocol. Every time we send a request to the server with one of the HTTP methods we should get a response. After receiving and interpreting a request message, a server responds with an HTTP response message

I won't get into details of the response message but I will just list the response status code classes and their meaning. The response status code is a three-digit integer code representing the result of the server's attempt to understand and satisfy the client's corresponding request. There are five classes and the first digit defines the class.

  • 1XX (informational)The request was received, continuing process.
  • 2XX (successful)The request was successfully received, understood, and accepted.
  • 3XX (redirection)Further action needs to be taken in order to complete the request.
  • 4XX (client error)The request contains bad syntax or cannot be fulfilled.
  • 5XX (server error)The server failed to fulfill an apparently valid request.

Agile software development

Software developers are usually organized into teams that work together on some project. I already mentioned above that teams are using git to collaborate on the same code repository.

Now let's talk about how teams can be organized for day-to-day work.

Agile software development is a type of development methodology that is based on iterative development and flexibility. That means that cross-functional teams are focused on small incremental deliveries of the software so stakeholders can give feedback very often. This reduces risks and errors and allows the product to adapt to market changes.

Agile teams are mostly self-organized, focused on development, collaboration, adaptability and they don't need to follow some strict business processes.

Agile software development was popularized by the 2001 Manifesto for Agile Software Development.

It is a base for software development frameworks like Scrum and Kanban.

SCRUM

Scrum is the most popular framework that is derived from Agile software development. I will try to explain what is Scrum by defining Scrum-related terms. Scrum uses 3 artifacts and 6 ceremonies.

Artifacts that are used in Scrum:

  • Product backlog - it is a list of all things that need to be done for the product. It is similar to any TODO list. Tasks are ordered by priority and can be changed. The product backlog can always grow and evolve.
  • Sprint backlog - this is a fixed list of tasks that the development team will do in a period of one sprint (I will mention what sprint is later). Once sprint backlog is created nobody but the development team can add new tasks to it. Also, if some task is not planned well or its scope is bigger than realized then the development team can request to exclude that task from the sprint backlog. In that case, the team should first try to do that task with smaller scope instead of completely excluding the task.
  • Product increment - at the end of each sprint, the development team should have a product that can be released and all tasks from that sprint should be done.

Sprint ceremonies:

  • Backlog grooming - The product owner is responsible for this. That is a person who is a 'bridge' between the development team and customers. The product owner takes customer requests and wishes about the product and puts that into a product backlog in form of user stories.
  • Sprint planning - every sprint starts with sprint planning. That is a meeting where the development team with the Scrum master decides what is a sprint goal. This is done by taking tasks from the product backlog to the sprint backlog. A number of tasks depend on team performance speed. This is a meeting where all questions about tasks should be cleared so the development team can start working.
  • Sprint - Sprint is nothing more than a time period in which one increment must be delivered. The most common sprint length is 2 weeks but there are teams that use length anywhere between one and four weeks for one sprint.
  • Daily standup meeting - this is a short meeting that occurs every day and usually in the morning. The goal of the meeting is to update everybody with their progress. Also, to keep the meeting short it is recommended that everybody say answers to these questions: "What I did yesterday? What I am going to do today? Is there any problem or obstacle?"
  • Sprint review - At the end of each sprint, the development team presents their increment to all stakeholders. It is done by going through each task in the sprint backlog and demonstrating that it works as intended. They will get feedback for that and that feedback will be used for future sprint planning.
  • Sprint retrospective - this should be a casual meeting where the team should discuss what went well and what went bad in the sprint that just finished. They should discuss if the tools they are using ok, is communication inside the team ok, and what can be improved from the next sprint.

Command-line interface

Command-line interface (CLI) is a program that allows users to write commands that make the computer do tasks. Even we use a graphical user interface most of the time it is still good to know a few CLI commands.

CLI is used mostly when we need to connect to some remote server. Servers usually do not have GUI installed because it is saving resources that way. CLI is also useful when you need to do some repetitive tasks - with few commands you can do the same thing that you would need to do with hundred of mouse clicks.

Most commands that are used are for copying, deleting, or moving files, executing and stopping scripts and programs.

Conclusion

When you are working as a programmer there is some stuff you need to know about which are not related to programming languages. You do not need to be an expert for any of these things, it is enough just to read about them. You will get more knowledge and experience in everyday work. I listed most of the things that I encountered in the first year as a software developer and knowing about them helped me in everyday work and job interviews.

If you have questions or suggestions feel free to post on Reddit or Tweet at me.

Discussion (0)