Saturday, 13 January 2018

skills a productive software engineer must have

WHO IS PRODUCTIVE SOFTWARE ENGINEER

software engineer productivity is defined as the measurement of lines of code per man-hours worked. He has to develop software i.e; write code.

To be productive the skills a software engineer requires are:

1) Object-oriented Design

Object-oriented design (OOD) is the process of using an object-oriented methodology to design a computing system or application. This technique enables the implementation of a software solution based on the concepts of objects.OOD serves as part of the object-oriented programming (OOP) process or lifecycle.

You must have an understanding of object oriented concepts such as class, object, Inheritance, Encapsulation, Abstraction, Polymorphism.
some important Object-oriented programming languages are:
  • Simula, the first object-oriented programming language
  • Java
  • Python
  • Ruby On Rails
  • C++
  • Smalltalk
  • Visual Basic .NET
  • Objective-C: OOP is a core tenet of iOS mobile app programming, and Objective-C is essentially the C language with an object-oriented layer.
  • Curl
  • Delphi
  • Eiffel
  • c#
  • javaScript (partially object oriented)
  • swift
  • php

2) One Programming Language

A software engineer must have a solid understanding of atleast one programming language mentioned above which is at his finger tips.

3) Data structures and algorithm

Algorithms and data structures are the basic tools of a programmer. They are as essential as a hammer (or nail gun) to a house framer. They are the tools that solve problems so you don't have to reinvent the solution.
You should understand what they are, why and how they work, and what their shortcomings are. Knowing this will save you a huge amount of time that could be wasted trying to solve a problem that has a solution. some basic concepts of data structures and algorithm are array, linklist, file, record, table.
4) structured code
Structured programming is a programming paradigm aimed at improving the clarity, quality, and development time of a computer program by making extensive use of subroutinesblock structuresfor and while loops—in contrast to using simple tests and jumps such as the go to statement, which could lead to "spaghetti code" that is difficult to follow and maintain. structured code is understandable to everyone.
5) source control
Version control systems are a category of software tools that help a software team manage changes to source code over time. Version control software keeps track of every modification to the code in a special kind of database. If a mistake is made, developers can turn back the clock and compare earlier versions of the code to help fix the mistake. According to a recent GitLab survey, 98 percent of developers use open source tools, and 92 percent of developers prefer Git as their version control language. 
Example: 
Github,Bitbucket,DevHub, beanStalk, SourceForge, cloud source by google etc.
6) Frameworks
The designers of software frameworks aim to facilitate software developments by allowing designers and programmers to devote their time to meeting software requirements rather than dealing with the more standard low-level details of providing a working system, thereby reducing overall development time. For example, a team using a web framework to develop a banking website can focus on writing code particular to banking rather than the mechanics of request handling and state management.
Examples
  • Ajax framework / JavaScript framework
  • Web framework
  • Middleware

7) Meanstack
A meanstack is a stack of technologies.The term MEAN stack refers to a collection of JavaScript based technologies used to develop web applications. MEAN is an acronym for  MongoDBExpressJSAngularJS and Node.js. From client to server to database, MEAN is full stack JavaScript. This article explores the basics of the MEAN stack and shows how to create a simple bucket list application.

Node.js is a server side JavaScript execution environment.
Express is lightweight framework used to build web applications in Node. 
MongoDB is a schemaless NoSQL database system.
AngularJS is a JavaScript framework developed by Google.

8) platform

computing platform is the environment in which a piece of software is executed. It may be the hardware or the operating system (OS), even a web browser or other underlying software, as long as the program code is executed in it.

Examples
  • Open Web Platform
  • Oracle Database
  • Java platform
  • .Net Framework

9) Database

A software engineer should know the basic concepts of database which are schemastablesqueries, reports, views, and other elements.

10) soft skills

Typically as a software engineer, all we think and care about is coding. We assume having the technical expertise is sufficient to execute our job duties. But little do we know that having the technical skills is only one of the many facets of being an effective person in the work place. The major one being ‘Soft Skills’.

Some of the most common soft skills include:

  • clarity of communication
  • writing skills
  • listening 
  • Degree of collaboration / Teamwork
  • Conflict Resolution