Introduction to programming is the first step to learning how to write a code, principles, and practice of programming and tools for programming. At the early stage, some buzz words may sound frightening and confusing, with early familiarization you would learn what they mean and what they do also.
Picking a career path is essential, your programming journey needs to start with basic skills and knowledge that will take you to the top. Hence, the need for an introduction to programming, the essentials.
Ability to use computing skills to solve simple to a complex problem is what makes programming very necessary. Programming is now a means to an end, in some cases an end by itself. At first, programming may seem too ambiguous and complex, it is better starting with the basics and gradually gets acquainted with the process until you go pro.
A program is behind nearly every electronic device we use today, if you are interested in creating, maintaining, solving, or modifying an application then programming is for you.
Some common examples of devices that have programs inside them are the following: Calculator, Mobile Phone, Computers, Websites, Game Console, LED display, Smart TV, and GPS.
Types of Programming Languages
So basically I will list programming Languages by types and give a few example of the languages that fall under that type. There will be instances where a language can belong to multiple types, so note that this is not an error should you encounter such.
- Array Language –MATLAB, Fortran
- Assembly Language – This is a machine-readable language, hard to write
- Authoring Language – TUTOR
- Command Line Interface Language – DOS,
- Compiled Langage – C, C++, Object C, Python, Go, Swift
- Concurrent Language – Clojure, Erlang
- Data-Oriented Language – SQL
- Embeddable Languages – PHP, VBScript
- Educational Languages – Turing, Elan
- Esoteric Language – Chef
- Interpreted Language – Lua, Basic, R, Python
This is for educational purposes only. There are many more programming languages by type. In reality, programming is a simple set of rules, logic, and procedures that are arranged to create an application.
Maths Meet Coding
This emphasizes more on the need to have a good knowledge of Algorithms, Mathematics, and basic coding skills. The maths is not too deep, but essential Math’s skills are needed to solve some coding challenges. The Algorithm exercises will expose you to Recursion, Data Structures, Arrays, Binary Search Tree, Bubble sort, Big O, Functional Programming, and Sorting in different forms.
Understanding these Algorithms will help you solve coding challenges in the most efficient ways, though you may not find it useful or use it in your everyday work. You may not miss it during interviews and test process. It is important you have a very good grasp of the Algorithms, it essentially the maths aspect of programming.
Computer Systems Recommendation
The number one tool for programmers is a computer system, you always need a computer to write your programs, run it, test it and deploy. Recommending a computer to use seems simple but it is actually broad.
- Preferred Operating System – Windows, Mac, or Linux
- Type of Computer – Desktop, Laptop, Tablets or Microcomputers
- Features of the Computer – Processing speed, Memory, Storage, Screen Resolution, Screen Size, Keyboard, and In/Out features.
Brand of a computer is relative as long has it performs the desired function very well. Considering one, two, and three above, the selection is based on personal convenience and efficiency.
The features of a computer are more important, you can always make do with one and two. You need a computer with a very high processing speed, storage is important, this can be done on the cloud, external storage or internal storage. The memory should be 6GB or above for efficiency, having 4GB will do, but you may experience some freezing.
It is nice to have a good keyboard that will make you type faster and conveniently. Screen size should be big enough to see what you are writing.
A browser is at the heart of every development, it helps programmers debug and create a view for their projects. It is used for presentation, transporting information across the web and storage. There is new browser called headless browsers, they do not have a graphical interface, you need to control it from the command line interface. There are other browsers that allow you to view the web, they are called web viewers.
Popular Web Browsers
- Internet Explorer and Microsoft Edge
- Mozilla – Firefox
The browser’s above dominate are the most popular for developers, chrome has more user base than the rest. Internet explorer poses are a challenge to developers due to compatibility issues. Older Internet Explorer breaks codes and applications’, designing for IE compatibility is necessary to serve end users and people with old browsers.
IDEs and Code Editors
IDE also known as Integrated Development Environment is the tool used by developers for making code writing faster and efficient. Code Editors also have similar capabilities; a well-known code editor is a notepad. Modern code editors include Atom, Sublime text, VIM, and Visual Studio Code.
Most have GIT commands integrated, linting tools, debugging tools, autocomplete, an extension for expanding the capabilities, autosave features and much more. They are simple and also some of them even provide hints and suggestions. If you ever have seen programmers in movies or work environment using a dark or white screen like application for writing codes. Then you have seen an IDE or Code Editor in use.
The technologies used for frontend development is constantly evolving, it may be hard to catch up in some instances. It is always advised to understand and be grounded in the basics, learn one or two frameworks that are related to your area of focus.
Backend development is writing a code that runs on a server using a preferred server-side scripting language. These codes are responsible for transmitting and managing data on the server side. There are many backend languages that can do this, it is important you choose the best that suits you development need.
PHP is one of the most popular backend languages to learn, ideal for freelancers, the creation of themes, and plugins for CMS. Other Backend Languages include C, C++, Object C, Golang, R programming among many others.
Full Stack Programmer
This essentially means having the skills and knowledge to do essential frontend and backend programming with a language of choice. Full stack programmers are marketable due to the ability to work on both ends of programming. And they are paid better than the frontend or backend programmers. To become a full stack programmer, it better to start with frontend skills and languages, after you attain a level of proficiency. You can start learning essential backend languages that will transform you to a full stack programmer.
Node.JS is a good place to start for front-end programmers, it allows developers to use the backend capabilities of NodeJS to persist data and develop API’s.
Devops and Server
Server and Server Management is a discipline on its own, server managers are often referred to as Dev OPS. Since all web application is hosted on a server, managing it is also important. There are several issues that may arise during and after deployment to a server. How to optimize server resources, scalability, this also includes recommending the best server.
Cloud storage is very common now, some of the biggest storage and servers services include:
- Microsoft Azure
- Google Cloud
Your web application can be hosted on your on own servers or an external server like AWS. For a smaller application, you can use a hosting account. This can be shared, virtual private server, dedicated server or cloud-based server.
Some of the best hosting companies include:
- Liquid Web
- Midphase Host
- Fast Comet
- Green Geek
They are selected based on the storage size, uptime, security, speed, backup, add-on features like dedicated IP, SSL certificate and Speed Optimization.
HTML is called hypertext markup language, this language is not classified as a programming language. It is often referred to as a markup language. To understand what HTML does you can refer to it has the material necessary for building the webpage. They provide logical structures for the creation and building of web pages and applications.
It does a good job presenting the web page in layers of structure semantically. It is also readable by the browsers. The latest update to the HTML is the new standard called HTML 5. Writing HTML 5 is easier, provides clarity and properly organized than previous versions. Three main parts of the HTML are the Head, Body, and Footer.
The Head contains the invisible attributes, while the body and footer contain optional invisible attribute and visible attributes. Inside there are other elements of the HTML. They are structured to give the web or application a meaningful form and structure.
CSS & Frameworks – Bootstrap, Foundation, Material, SASS, LESS
CSS in full is called Cascading Style Sheet, I often refer to it has the skeleton of the webpage. Without CSS a webpage will not have form, it like deflating a body forming balloon. It is a style sheet that optimizes HTML, XML, XUL and SVG document by translating the DOM (Document Object Module) into visual form. Like HTML, CSS requires writing a set of rules, to identify different parts of a page and make them behave in a particular way.
To make writing CSS easy, frameworks have been developed to make it easier.
- SASS – Syntactically Style Sheet – Needs to be transpiled to CSS. Ends with a prefix .scss
- LESS –
The list above is not a complete list, these are the ones who will likely encounter the most. You can also create your own framework, though you need to understand CSS in depth.
Libraries – Jquery
Frameworks – Node, Angular, React, Vue, Meteor, Ember, Backbone, Socket.
Progressive Web Apps – Ionic, React Native
This is an advanced mobile-friendly development, that allows the application to have offline capabilities. These essentially make an app run in a browser and as an application on your mobile device.
- PWA – Progressive Web App can work online and offline.
- It works on a browser and of the browser like an app.
- It loads very fast and easy to deploy.
- Saving it on the homepage saves as an Icon. Clicking the icon initiates or open the application.
- It can work cross-platform.
- Push Notification can be integrated.
With the help of Node.JS interfacing with MongoDB, data can be persisted and a CRUD (Create, Read, Update and Destroy) functions can be implemented with ease. Node.JS makes this very possible, learning about Node.JS and any NoSQL language can transform you to a full stack if you specialize in frontend development.
PHP Hypertext Preprocessor is the most popular and marketable programming language. It is a server-side language and also ideal for general purpose programming. Popular CMS –Content Management System is built with PHP, among them are WordPress, Joomla, Magneto, and eCommerce. There are several chat forum built on PHP, Wiki pages, and much more.
Freelancers are likely to get more PHP related jobs than other languages. The business side of PHP is quite huge, the market for WordPress themes and plugins is constantly growing. Learning PHP as your first backend program is not a bad idea. Once you are proficient in PHP you can learn the PHP frameworks.
PHP based CMS is popular for building websites for bloggers, small to a medium scale business website, e-commerce stores, forums, wikis, and Learning Modules.
WordPress is a Content Management System built on PHP, it is open source and managed by Automatic. It is the most used content management system in the world. More than half of the websites running in the world today uses WordPress. The merits cannot be overemphasized, it is easy to manage and customize.
If you have a good knowledge of PHP, you will be able to create themes and plugins for WordPress. Knowing how to manage WordPress is an essential skill for programmers, this is because you will encounter it. It is also easy to use it to build a website for your startup or has a landing page for your promotions and campaign.
PHP Frameworks – Cake, Fuel, Yii, Laravel, Django
PHP Frameworks are growing in numbers some of the frameworks are open license while some are not. The direction followed by most PHP framework is the MVC – Model View Controller Pattern. They are used for creating a web application from small to large scale projects.
- Zend Framework
- Smart Framework
- Pop PHP Framework
PHP Frameworks are focused on Security, easy unit testing, error handling, CRUD automation and more. If you are interested in the backend of PHP, you can learn 2 or more Frameworks.
Ruby on Rails
This is a server-side scripting language providing structures of web service, web pages, database, and creation of API’s. It can seamlessly interface with frontend programs to display and manipulate data. It makes data persist on the frontend and useful for CRUD (Create, Read, Update and Delete) operations.
Ruby on Rails is used by many tech companies globally; the demand for ruby on rails developers is still on the rise. This is because of its simple convention over configuration that upholds the “don’t repeat yourself” (DRY) principle.
Tools are your best friend has a programmer; you need them to make writing codes and organizing your workflow easy. Utility tools are tools that have become part of your everyday work process.
The Utility tools are grouped according to their function.
- Text editors – Atom, Sublime Text
- Package Managers – Yarn, Node Package Manager
- Version Control – Git, Mercurial
- Speed and performance – Google Page Insight
- CSS Preprocessors – Sass, Less
- JS Preprocessors – Typescript, CoffeeScript, Babel
- Test tools – Jasmine, Karma, Mocha, Protractor
- JS Frameworks – Angular, React, Vue, Ember, Backbone, Express
- Automation – Gulp, Grunt
- Backend – Python, Ruby on Rails, PHP,
There are many more tools that can be added to the list.
This is a version control system that allows you to have different versions of your work, it also makes it easier for a team to work together on the same project without conflicting with one another. One application with several contributors working on it without clash, this is what Git helps to achieve.
Git makes it easy to manage all the changes on a project, it controls the main source and revisions of a document. If you have an open source project it will greatly help too.
These are the version control system and platform, you will come across, the most popular is GitHub.
Ensure you integrate your Code editors with Git to make updating and recalling easy.
Data Science is in high demand today, due to emerging technologies and ideas. Artificial Intelligence, Machine Learning, Data mining, and Predictive intelligence are part of the reason why data science is on the surge now. It involves understanding data, manipulating it, extracting data to gain insight and knowledge.
Programming Languages used for data science:
R programming is a language used for statistical analysis and programming. Python is easy to learn and popular in the Data Science community. If you are interested in building a large application that would need data manipulation or complex statistics. R or Python will do the job.
A good knowledge of the following subject is necessary to be proficient in Data Science.
- Computer Science
- Information Science.
SQL and NoSQL – Database
A database is very important to backend developers and data scientist. To manage and query the database you need to be familiar with the language the make this easy and manageable. Database and the server-side language work hand in hand, to allow data persist and easily manageable. The backend server-side language controls the CRUD ( Create, Read, Update and Destroy), but a database language is needed to create the data structure and for the management of the database.
Get familiar with Relational Database Management System also known as RDBMS or Sequel (SQL), this language works with tables to create data patterns and relationships that link them. The most popular of this language is MySQL, PostgreSQL is catching up, others include Oracle and MS SQL.
Cloud – Azure, AWS, and Google Cloud.
These are the biggest cloud storage in the market today if you can trust your data to any of the big three. You will need to understand how their platform works and how you can integrate the services with your application. Running your own server farm can be very costly, the economics of scale is what you gain by using any of the three.
AWS – Amazon Web Service is the biggest in the cloud business, it has several server farms and has built a solid reputation over the years. Starting with AWS will allow you to pay for what you use and also allow you to quickly bootstrap and application and host on the cloud. You can become a certified AWS developer and architect by studying and writing the exams. Experience with cloud management and deployment is necessary.
Azure – Is growing aggressively, trying to gain enough attention in the market, it is a robust service. You can build on Azure quickly, you also pay for what you use. There are certification exams for professionals who specialize in server management and deployment.
Google Cloud – They are gradually, gaining ground, mostly rely on the big G reputation to gain market share. If you can learn a bit of how to deploy and manage the Google Cloud service it may come in useful and handy in your professional career.
Programming requires constant development and learning, you cannot know it all. From time to time, you will be required to learn a new technology, which you are not familiar with. One of the fastest ways to learn is taking a course online or offline. For beginners, you can get a lot of free courses online, the challenge here is that you may not understand the structure and where to start.
There are structured courses online now, some are free and some premium. You can learn from any of the sources below.Code Academy
- Team Treehouse
- Khan Academy
- Plural Sight
- Skill Share
- Stack Skills
- Code School
You can also attend a boot camp to learn to programme, the boot camps have recorded a number of progress and result that makes them a good program for beginners. Some of the good ones are.
Get started with basic courses online and start learning how to write programs.
Interviews are actually not the best test of skills, if you learn the tricks of interviews it may land you the job. Sustaining the job may be a challenge if you do not step up your game and learn fast. Interviews in tech have different modalities, some require writing programming test, some whiteboard test, and other may require quiz.
Solving coding challenges, understanding best practices, algorithms, practice writing the code on paper, and
There are many good programming books published in different languages, some focus on principles, while other on practice. Books can be found in hard copy and soft copy. There are free books published online for programmers to read and learn from, the hardcopy is often available for a small token.
Reading books will accelerate the learning process, most especially the WHY question. Understanding why you are doing what you do, Code writing efficiency, break down of the study journey from newbie to pro. Good books can be found on GitHub, Amazon, Packt, Lean Pub, GumTree, and on websites. Blogs are also a good resource for information and learning.
Becoming a founder has its own challenges and intricacies, it requires learning how to run a business, raise funds, get the products or service into the market, creating a sustainable roadmap, continuous development strategy, and other things to learn. A startup may have more than one founder, this does not require having tech experience. If you have an idea and fund to create that product or service up to the point of release to possible clients then you have a startup.
There are no rigid criteria for becoming a startup owner or founder, however, there are skills you need to have or develop to run one. Funding is a major aspect, understanding and penetrating the market, Sales, Engineering, Product Development, Finance, Human Capital, Logistics, Operations, and Management are all essential elements of a startup.
Speed is a critical aspect of development and programming, this is crucial because a poorly optimized application will have a high drop rate. This will affect onboarding rate, and also increase drop rate. End users are very impatient, they do not have time to wait for apps to load, retrieve data or send data. A poor experience as a result of speed will create a massive drop rate. Slow applications also use more resources, this can have a negative impact on cost and the server.
Programmers should be speed obsessed, and have a strong sense of memory management. Most frontend frameworks are created to address speed issues and code efficiency. An example of a company that loves speed optimization is Google, hence, the development of Angular, and an aggressive drive for Progressive Web Apps, and other optimized mobile development.
Deployment of your application to a live server or test environment is a necessary step all developers must know how to do. You do not need to be a DevOps developer or Backend developer before learning the skills to deploy the application to the web.
JSON, REST API, and GRAPHQL
This is often referred to as the pipe that connects that frontend to the backend. It is used to relay information back and forth.
One term you will hear over and over is JSON, Rest API and lately GraphQL.
REST API – Representational State Transfer and API – Application Programming Interface
API – API’s makes it easier for developers to connect applications to different technologies. It is like a plug that creates a channel into a new system, you do not need to understand the system before using its resources.
GraphQL – This is a data query language developed by Facebook, it provides an alternative to REST. It solves the problem of over fetching data, by giving clients the ability to fetch only the data needed per time.
Services for Developers, Product Managers, and Sales
There are many services developers, product manager, and sales need to know about. These services are either paid or free. They help you carry out your work faster and seamlessly.
Lists of some of the essential services needed are the following:
- Google Analytics
- Google Page Insight
- Bing Webmaster Tools
- Google Webmaster Tools
- Microsoft Developer Essentials
- Open Site Explorer
- Mozilla Developers Network
- Email Marketing – MailChimp, SendGrid, MailGet, GetDrip,
- Social Media – Facebook, Twitter, Pinterest, Google Plus, Linkedin, Instagram
There are much more, this is the most essential of the services required.
Technology is dynamic, hence, the need to constantly update. If you leave the development space for too long, you would need more time to catch up with the latest events and trend in the tech space.
This introduction to programming essential is a work in progress; it will be updated from time to time. As it is a culture in the tech space to introduce – MVP (Minimum Viable Product) aka the working version this is one. This material will have several releases and update versions. So come back from time to time to catch up with the trend and direction programming is moving towards.