What is Programming ?
I think we should first get to know who a programmer is, or what is programming before we explore steps required to become a programmer. Programming is writing a set a instructions to make computer carry out certain task. That task can be something as simple as printing " Hello World" to a computer screen or as advance as handle the flight schedules for an airline. So you are a programmer if you know how to write these instructions. A programmer is also called a developer, software developer or software engineer.
To many, programming is reserved for special people with the brain of rocket scientists, but in reality programming is nothing that complex, at least not always. If you are comfortable with general mathematics(not calculus or engineering mathematics), you will be very fine. My reference to mathematics here does not mean programming is all about mathematics, no. If you are comfortable with basic logical thinking, then you are good to go!
Choose your field of play
Every software system is composed of the frontend(also called the client) and backend(also called the server). The frontend is what users see and interact with, the backend is the engine side of the application that makes all the interactions possible. This is where all the logical processing take place. You can specialize as either a frontend or backend developer; or a 'full stack' developer. Full stack developers combine the skill sets of both frontend and backend engineers.
Even if you plan to eventually become a full stack developer, start with one first. This is my recommendation: If you think you are bad at design, color blind or just not interested in user-experience(UX) development, then go for backend. If on the other hand you love visuals, great at color inter-play, love animations and like to create button-click effects, then you belong to frontend! Both are fun to work with and are equally rewarding.
Frontend development falls into 3 main categories:
WEB: web is the most popular of all the frontend clients. Mobile has been getting the buzz lately though, i still think web remains the king.
To become a well-rounded web developer, some of the tools to learn includes:
MOBILE: There are 2 main kinds of mobile apps. They are:
native and hybrid mobile apps.
Native apps are usually developed with the language/platforms recommended by the creators of the mobile operating system (os) platform for building apps. Meaning to build Android app, you will have to learn java or kotlin, and to build iOS apps you have to learn swift or objective c. But you can also build fully native mobile apps with third party tools like React Native and Xamarin. Instagram, for instance, is built with React Native.
GUI(also called desktop apps or rich client): These are apps that can be installed from disk like Ms Office suite or Photoshop. GUI apps are no longer very popular in the enterprise as they used to be. A lot of business apps are now web based. GUI apps can be developed with tools like electron, WPF, JavaFx etc.
Backend development is all about building an API (Application Programming Interface). APIs are also called web services. An API is a piece of software with no visual user interface that sends data and related functionalities to the client on request. Building an API requires knowing one or more server side languages/platforms. It is possible to build an entire application(frontend and backend) using a server side technology; but a cleaner and more modern approach is build a backend whose sole responsibility is data and nothing more! This data can be in json or xml format depending on the requirement of the system. This data service can now be used to power any frontend client.
Popular server side platforms includes Node, Python, PHP, .NET, Java etc With any of these, you can create APIs as the backend for any frontend client.
Anchorsoft Academy has courses for both frontend and backend technologies. Our courses are suitable for both beginners and fairly experienced candidates seeking deeper and more industry-relevant capacity development.