Understanding Software Engineering

What is a Software?

Software is a set of instructions or data that tells a computer what to do, a software is a program that contains information that is processed by a computer. A program contains executable codes, So a software can be considered as a collection of executable programming codes. ​

What is Software Engineering?

Software engineering is a process of investigating and analyzing users requirements, then building, designing, and testing software applications to meet those requirements, the people who carry out these tasks are called Software engineers, Software engineers provide softwares that satisfies peoples wants to make life a little be easier, to make users experience new things like new technologies( virtual reality, gaming experience, artificial intelligence, etc), new mobile and desktop applications, down to the smallest things you can think off. ​

When most people hear the words Software Engineers first that comes to their mind is a single person writing a thousand blocks of code, designing web pages, making applications, well that is partly true but most of the time it is a teamwork situation, this is why software engineering is integrated into other divisions.


Types of Software egineers

A Frontend Engineer

When you access a website, an app or anything concerning a software, you see how it has been layout, structure, or design, which is done by a frontend engineer/ front end developer. A front-end engineer works on the appearance and user interface of a website, they also make sure the page loads very quickly. A front-end engineer needs to be experienced with some languages such as HTML, CSS, JavaScript. These languages have different frameworks such as Bootstrap, Angular,Vue.js e.t.c. ​

A framework is a software component that you write or integrate your code in for better functionality, in which you do not have to re-write functions over and over again, all helps your application standardized or to be expressed better. ​

A Back-end Engineer

​ Backe-end engineers are responsible for building the structure of a software application. They are responsible for building, designing, and maintaining the server-side of applications. A back-end engineer does not do the same work as a back-end developer. For example in a restaurant a backend engineer would be a head-chef who knows about recipes for a portion of food, while backend developers would be station chef will cook the food and the frontend engineer would be the kitchen who is involved with the presentation of the food, so they make pave the way for the rest of the team. ​

Sever-side processing is used to interact with databases and files. A sever would render pages to the client and process user inputs. ​ A back-end engineer would need to have important skills such as:

  • Profiency in: PHP, Python, Ruby, Java, .NET, JavaScript.
  • Knowledge of: Java, HTML5, CSS3.
  • Server-side experience in SASS
  • Understanding of Accessibility and sever compliance
  • Solid Object-oriented Programming (OOP) and software design knowledge.
  • Knowledge in Database systems. ​ A back-end developer should have important skills:
  • Understanding of: JavaScript, HTML5, NodeJS, JQuery.
  • Integration of data sources and database into a single system
  • User authentication and authorization between multiple systems and servers.
  • Write clean and maintainable codes.
  • Expertise in JS, ReactJS, VueJS, AngularJS.
  • Understand cross-platform functionality and compatibility of applications.

A Mobile Application Engineer

A mobile application engineer design, develop, test or implement software programs or applications, to meet the goal of your customer or clients. They focus on system design, data structuring, and programming. ​ Skills of a mobile application engineer:

  • Analytical skills: understanding user needs
  • Communication skills
  • Creativity
  • Problem solving
  • Programming languages: CSS3, JAVA, PYTHON, C++, C#, Object-C(IOS),

DevOps Engineer

To make sure infrastructures and development operations are intact, they are responsible for deploying applications for a lot of users to access that application, a big company such as Facebook has millions of users on them DevOps engineers play an important role in such organizations. ​ Skills of a DevOps engineer:

  • Excellent teamwork and communication skills.
  • Knowledge of programming languages and tools: JAVA, Git, Jenkins, Kunbernet. ​

    Having to know some computer languages depends on the company you work with ​

Roles Of Software Engineers in an Organisation

In an organization, all these types of engineers are part of a team. Each engineer plays their different role. When you are looking at an organization like Netflix it takes the work of a lot of software engineers to build a good service like Netflix. A frontend engineer works alongside a User-interphase(UI) and User-Experience(UX) designer, they design the web-phase which is basically what the user interacts with, all the effects you see on Netflix is designed by these professionals, they also make sure the website is highly performant.

UX designer works on the user's experience with the product and services. A UI designer works with the presentation and the interactivity of a product. ​

  • The backend is involved with API development and API design, API is the acronym for Application Programming Interface which interacts between multiple software applications or mixed hardware-software intermediaries. Every action you take on your phone uses an API to access and deliver that information. For example finding a movie genre, getting updates on a new movie release. They are also responsible for picking the type of database that Netflix is going to use, considering relational or non-relational database, implementation of the database, and limitation of the database.
  • The backend developer does the organization, collection, returning of data from the users, they make sure the client-side of the organization is proficient, they might be responsible to know if a subscriber has paid on time, they also encrypt your personal data so it won't get leaked. To know what shows to recommend to a user or to know where you stopped in a movie, the frontend engineer works with the backend developer to look at the user's history to know what shows the user has been watching, the back end developer gives the data to the frontend engineer who displays that information to the user. ​
  • The mobile application engineer they make Netflix application that will be available on IOS and ANDRIOD, they work with the UX and UI designers to create the visual part of the application, they take into consideration of the performance of the apps, they also interact with the backend developers to know the kind of information to display for the user. ​
  • DevOps Engineers are responsible for giving users access to Netflix reliably at a large scale, it gets tougher for a DevOps engineer as the users increase for an application. ​ ​ ​ ​