I presume this to be the final and the most important chapter in this blog series – Road To Programmer.
This is also the starting point from where you actually begin your own journey into the world of programming.
Here, We will focus more on the tools that programmers generally use, the approaches and practices they follow and the steps they take while writing any kind of program.
Programmers toolbox generally consists of certain special tools which help them accomplish any kind of programming task successfully. In addition to that, tools help programmers maintain flexibility, track history and above all – be more productive.
Approaches and practices are what a programmer follows starting from day 0 in order to structure, plan and control the process of development. It is one of the major contributing factor that determines the success or failure of a project or a company.
Lets go through these tools and approaches one by one …
Source Code Editors & IDEs
Once you have chosen a programming language to begin with, the first thing you will need is a source code editor. Unlike simple text editors such as notepad, source code editors are specially designed tools that are built for writing and managing source code. They have certain unique attributes like syntax highlighting, error checking, debugging features etc.
The piece of code written in a programing language generally needs to be compiled using a compiler if you wish to see the output. Compilers needs to be separately installed and run every time which is quite time consuming.
Hence, most programmers often prefer to use an IDE (Integrated development environment) which is a combination of many such tools like compilers, debuggers, revision control, source code editor all packaged into one.
Go ahead and pick one which is best suited for your programming language.
Some popular code editors are :
- Sublime Text
- Microsoft Visual Studio
- Android Studio
Software development methodology is a process that a programmer or his/her team follows in order to structure, plan and control the process of software development. The type of methodology chosen might vary depending on the available timeline, budget, business requirements etc.
Some of them are :
- Agile etc.
If you ever wish to become a good programmer, you must be familiar with these methodologies and learn to adapt with them as you will be working with different set of scenarios and requirements in the long term.
Software development is generally a long and iterative process. Requirements change overtime, new requirements keep emerging, old features might need upgrades or should be made obsolete. The code that once was a couple of lines ⇒ will evolve to a coupe of files ⇒ to folders ⇒ and eventually to different versions. Different people will collaborate overtime and the job becomes more complex.
Keeping track of all these things is a headache, time consuming and tedious. That is where source control comes in. Source control tools are some of the widely used tools throughout the world to manage code, maintain versions and track history.
In today’s world, every software developer must be familiar and learn to use source control. Some of the most popular ones are :
Project Management Tools
Project management tools are designed and built in order to guide a person or a team from the initial planning phases till the product release. It helps to keep track of individual users progress, manage issues , create and assign tasks.
Some of the most widely used tools are :
- Office Timeline
People often interact with computers visually via keyboards, mouse, touch and gesture recognition devices. But, some of the most powerful features of a computer can only be accessed via certain lesser used commands using a ‘Command line interfaces (CLI)‘. The CLI is often called – a terminal. It will be of great advantage to become familiar with the basics of terminal.
Two well-known terminals are :
Software development principles are rules and recommendations made by very well known software engineers. They simply are a list of approaches, best practices and philosophies that will help to develop quality software.
Some of the most famous ones are :
SOLID is a meta acronym which consists of 5 design principles:
- S – SRP (Single Responsibility Principle)
- O – OCP (Open Closed Principle)
- L – LSP (Liskov Substitution Principle)
- I – ISP (Interface Segregation Principle)
- D – DIP (Dependency Inversion Principle)
It intends to make software designs more understandable, flexible and maintainable.
KISS (Keep It Simple Stupid)
Software systems work best when they are kept simple. Avoiding unnecessary complexity will make your system more robust, easier to understand, easier to reason about, and easier to extend.
DRY (Don't Repeat Yourself)
It simply means that writing the same code in multiple places will impact code maintainability. It will be difficult to keep them in sync; and any changes to the code at one place will require changes at other places as well.
DRY principle simply promotes re-usability and helps to make the code more maintainable, extensible, and less buggy.
Some concepts based on the DRY principle are
- Inheritance and Composition
- Database Normalization
YAGNI (You Aren’t Gonna Need It)
YAGNI similar to KISS, aims at avoiding complexity. Complexity in case of YAGNI arises from adding functionality that you think you may need in the future.
It states that you should not introduce things in order to solve a future problem that you don’t have right now.
SQL (Structured Query Language) is an essential tool or programming language that every programmer must learn. It is used to communicate with a database and manipulate data by perform various operations like select, insert, update and delete.
Besides learning to read and write data in a database, a programmer must also learn to write complex queries using joins, aggregate functions and other advanced functionalities.
Welcome to the world of programming !!!!