February 4, 2021

Tools for Software Development

This article will cover the top five different tools to optimize software development. These five tools will surely improve any software developer’s productivity. The technology or language you are working with may evolve, but if you can understand these five tools you are good to go.

1. A Good Editor or IDE

The first one is a good editor.  A good editing tool might be generic or specific. It can be an editor or it can be an editor tool within an IDE (integrated development environment). If you are a web developer, notepad might not be the best tool. Many web developers prefer Atom or Sublime. If you are working as a backend developer you may prefer Visual Studio. For Java there are many tools like Eclipse, Netbeans, IntelliJ.

Choosing a proper IDE is an important way to increase your productivity. There are different IDEs available for technologies like PHP or Ruby.

Atom: https://atom.io/

Sublime: https://www.sublimetext.com/

Visual Studio: https://visualstudio.microsoft.com/

NetBeans: https://netbeans.org/downloads/6.1/index.html

IntelliJ: https://www.jetbrains.com/idea/

Why focus on a good editor?

Writing code in the right tool is significantly important. Using a good editor, like sublime text, will surely improve your productivity. Using IDEs increases the speed of development tasks, reduces setup time, keeps developers updated and standardizes the development process.

Comparison Between IDEs:

image

2. A code sharing platform

Back in the day, people used to share their code via email when working on a project. Then came SVN and now we have moved to GIT. In GIT we specifically use GitHub, BitBucket, or Gitlab. It is very important to learn GIT as most software developers use it. GIT may be a public or private repository.

Learn GIT : https://www.tutorialspoint.com/git/index.htm

Comparison between Bitbucket and GitHub:

The most basic and fundamental difference between Bitbucket andGitHub is that GitHub is focused around public code, and Bitbucket is mostly used for private repositories. In a nutshell, GitHub has a huge open-source community while Bitbucket tends to have mostly enterprise and business users.

3. Shell / Terminal

Linux and Mac users are familiar with shell. Most of the open-source programs are written in shell programming. Shell is also required for configuration. Learning shell, how to use command prompt and Powershell will surely help any developer.

Why Shell?

Working with terminal/shell in Linux or command prompt/PowerShell in Windows provides an efficient interface to access the true power of a computer system more than any other graphical user interface.

4. Communication tools for teams

Consider a team of developers working on a project who need to utilize peer to peer communication. Possible ways to facilitate this are via calls, email or discussion in a WhatsApp group. However, there is a special, helpful messenger service known as Slack. Initially it may not be that easy to move to Slack from other tools but once you start using it you’ll find it is very versatile. Once you get comfortable working with Slack it will improve teamwork and productivity which will make your clients happy.

Slack: https://slack.com/intl/en-in/

Why Slack?

Slack is an instant messaging system with lots of additional workspace features and an easy to use interface. The main functionality is team collaboration so the add-ins may not be necessary, though there are many different ways to cooperate and interact through the platform. Slack supports different types of communication methods:

Channels, or group chat, or direct message (DM) (person to person).

5. Continuous Integration (CI) and Continuous Deployment (CD) Tools

In earlier days we used to build a project and then deploy the entire project on the server. But now most developers follow the agile concept using CI - continuous integration. Consider you are part of a team in which multiple developers are working on the same modules. As a team you develop the project and after completion, combine the entire project and deploy it. If anything goes wrong it will be very difficult to find out what it is, where the bug is, and who made the mistake.

With CI, you can build the project and push it to the server continuously. If you are using an IDE you can just right click and push the data onto the server, which is responsible for CD. So we have:

CI (continuous integration): pushing the code to the server.

CD (continuous deployment): delivery/deployment of code.

The most recommended CI tool is Jenkins.

Jenkins:

https://www.jenkins.io/

Why choose Jenkins over other tools?

Jenkins is an excellent free and open-source CI tool written in Java.  Jenkins is platform independent and available for all operating systems: OS X, Linux, and Windows. Jenkins can also transfer and share test loads to several computers with different OS so there is no need to keep the same OS on all machines.

GitLab CI/CD

  • GitLab CI is an open-source service included with GitLab. To configure GitLab CI, owner/maintainer permission is required.

Creating GitLab CI/CD Pipeline :

  • Add .gitlab-ci.yml in the root folder on project/repository.

  • This file is used to configure the pipeline and defines structure and order of the pipeline.

  • File gist : https://gist.github.com/shubham-dota/64760c6be1f1409bd9fafcece13bde30

  • Commit and push to repository.

  • Create GitLab runner for the project making sure the tags are the same as that provided in the yaml file.

  • Start the runner.

  • Now make any change to the project then commit and push.

https://lh4.googleusercontent.com/kwI94oH0UHLw_588drnok4frEWedxw7tFUh7xWJvBGBT8HH9Ac_Y_wHTbsLaz_6em3H-qJzeL6VgF5GYZV466NC3sSt6CU8Yre_gsUWfhfkvAgVnWjPbVVv0WhK2Q4gapWEHzB3F

The gitlab-ci.yml will check for any commits and push in the project. You can check for CI/CD jobs getting triggered under your project.

https://lh5.googleusercontent.com/iA_MXh2dToCK-sCmyjogbCqSqD-YXb9yg-yc_lGmB7pdGPKaLKZR7cdWz5Guw3S6kea_QqwipSsj39VzZUuQi-HHguKl2sBhEATRn3p0wAqarJnolxRV_wRPKmsPMomtkIZqjvEL

GitHub CI/CD

Setting up CI/CD in GitHub is super easy using GitHub actions. If there exists a process which can be automated after every push or pull request, the GitHub action is an important tool to consider. GitHub actions removes the need for third party CI apps like Jenkins.

Steps to set up simple workflow:

  • Go to your repository.

  • You can fork this simple Python program. Link : https://github.com/shubham-dota/PyGithubActions.git

  • This repository contains a simple Python program to find factorial.

  • Go to the actions tab and select the required workflow template or create your own.

  • This will create a workflow directory with a yaml file. I chose the Python application as my code deals with a small Python program.

https://lh6.googleusercontent.com/2GMVjSd7Twr4B7be487atXzOYZbZFy3sn2Xv89ya050q5BcN0novUOk1FaAJk0xRVe_0BoK6MTGzJOiKPJNxUNdx5szpWGhhE-8ltOCzYr1ONonLkZ2IZbE34ZmFWfSSl7GglBW9

https://lh3.googleusercontent.com/bqdItxxAW6HQSp0OGSypR6zzo-W7G6tuzGRftNa1W_uc9meBho4GhjtwqaJvytiG08Rv0swGnGfDc1_1uvzE7GpfuL_mGYKQTEmHVetuexNotgQYV9_QHu3CVCpPEVq5iDNNy1Gx

  • Understanding the yml file :

  • name – configures the name of whole workflow

  • on – The on field is used to set up workflow triggers. This determines which action will trigger the workflow to run. In the above on field this would trigger the workflow on every pull-request or every push to master branch.

  • jobs – The jobs sections covers the build process, dependency installations, and tests. In the above field it will run a simple command to find the factorial of number 10.

  • Now commit the changes to the master branch and it will trigger the Github action.

https://lh5.googleusercontent.com/nAntDWrCbwidcjGJCpt2l8cXz9jiqGtnB2l81uWqY7--JqeL_qg4qjNFTfS68cwMy1dUKYUJEFvRR2YOSGo5m2uqn7pDJnVdAtjW-T91_ITFGsteaf2l5iCxXimhG6b_34lb8_wAhttps://lh5.googleusercontent.com/F8SLyyRphzgEC0ymfr9OcmDl77Qr9U5de1gGUy54aFgUVM7viIRCrnyM1glwYW0FJYdDn4Kfgv7fJvTGyOeeHEYMmpEIU0K5Z7bucpHIW7dSWF_ec5bRyEpERPB-FG7tYyO9H6gh

https://lh5.googleusercontent.com/InKXbkaFwBHX0iiFlB5xZCKVtOtFlf-TOfP7gXU3dQylbrret1LKy0vkoIfsP_h1J2Wpfp8i_cD3FVb3j5ZCT8lI4fN_Zo8wfCIfoYczVeQvYY0NiMU8csOoZbmAYA-sr8Pwr-ks

This GitHub action will set up a Python 3.9 on Ubuntu-os  on a temporary server managed by GitHub.

This is just a simple and generic method to set up GitHub actions. For setup for different programs please refer to https://docs.github.com/en/free-pro-team@latest/actions.

Group 9
Group 9