What are the different roles of a software engineer?
I'm a junior Computer Engineer and I'm trying to understand what my options are. I know that there are many, but I'd love to hear what some Software Engineers do. Basically, I'm asking what do you do?
#software-engineer #software #technology
10 answers
Angel’s Answer
Based on my experience, you may encounter different roles according to the company role in the market, so based on the topics you may like, be sure to choose a company where you can develop and put in practice those skills, not only because they currently use them, but also when you foresee the potential of improving their operations with certain technology or toolbox.
Here are some that come to my mind:
DB admin - Call it SQL or NoSQL, but the Databases are the main concentration point of the stored data, which must be designed thinking on the applications which will consume them, so as a DB admin you must interact constantly with the end user of your data to design and improve the data access operations, working algo very close to the infrastructure engineer.
Operations/Infrastructure engineer - In charge of running the servers, configuring and granting the credentials needed to access a certain subnet of servers and
Automation engineer - Using scripts languages like bash or python, or tools with a higher level of abstraction, the main goal is to make common manual tasks faster and less error prone.
Tester - A testing engineer may sound boring in a first sight, but there are lots of automation tools and good practice methodologies that you may implement in a software lifecycle which may help in a massive way in the continuous and correct delivery of quality software to the client.
Back-end Engineer - Use the programming architecture that better fits or dictated by the architect, but use a lot of logic thinking in order to design and implement the procedures to treat the data and deliver it to the Front-end (If existent) in a clear and simple way, the better is the back-en developed, the faster and clearer will be the interactions between the different software pieces.
Front-end Developer - Your main goal is the user experience, provide not only beautiful and visually rich environments, but also simple and intuitive ones when needed, requires a lot of detail thinking and putting in the side of the end-user.
As you correctly mentioned, there may be many more roles (and many more with the new trends like Big Data and SDN), and most of time your daily work may require the use of multiple of them according to the company size or marked impact.
PD: Remember as well that following certain version control system and documenting is something that EVERYONE should do.
Caleb’s Answer
As other folks have mentioned, the options around what you specialize and focus on can depend a lot on the company you are with, their structure, and the market they serve. And again, to repeat the fine words of others here, there are a wide array of technical segments you should be able to dive into:
- UI
- Backend services
- Databases
- Infrastructure
- Build/deploy and internal tooling
- QA/Testing
- Networks
- Security
And I’m surely missing many more. Where I think this can get interesting is when you start exploring higher level topics and outcomes that you find appealing, and these roles may cross a number of the above technical segments. A few examples:
- Growth engineers: What can I do in *any* part of our business to gain more users?
- Reliability engineers: How can I make our software more reliable and reduce downtime for our customers?
- Support and customer success engineers: What problems are our customers experiencing and how can I help them solve it?
Ashton’s Answer
Hello Cassia!
Speaking to the "What do you do?", I'm what many would consider a "back-end" developer. I build the systems that work in the background which are called by the various "front-end" UI's, such as the website, mobile app, etc. For a day-to-day, I work on building features to enable our services to do new and exciting things! I also work to maintain the existing systems, to make sure they can handle the continuously growing number of requests. In recent years, modern systems are being more and more spread out across more servers, so there are always new and interesting problems to tackle! For example, our team recently designed an algorithm which analyzes traffic to our cluster of servers, and attempts to balance that traffic so an individual server doesn't take too much load. There is way too much to talk about in a single answer, but I hope this gives an interesting perspective!
Aman’s Answer
There are many programming languages available to choose from when developing a mobile app. This article will help you choose which coding language to choose for your mobile app development. Here are some of the top program languages you can choose from:
1. BuildFire.js
With the BuildFire.js, this language allows mobile app developers can take advantage of the BuildFire SDK and JavaScript to create apps using BuildFire backend. BuildFire is already programmed with features to support many common businesses. The only thing left is for the programmer to customise the program to suit a client’s unique specifications instead of having, to build from scratch.
The advantage of this programming language is that it makes it easy to work with and for developers to build apps quickly without stress. BuildFire.js was designed with a flexible architecture to enable developers to use its client-side JavaScript programs like jQuery, Underscore, React, Angular, etc.
The features of this language include:
- It is easy to learn and it has a pre-programmed framework that makes it ready to use.
- It provides a short-cut to mobile app development because it cuts down the time spent on developing apps
- It is very scalable.
- It is good for people who are just starting their first mobile app development.
2. Python
Python is the most popular programming language. It is a professional programming language used by top app development companies to develop desktop GUIs as well as analyzing and interpreting scientific and numeric data. Python is for software development.
Python is a programming language that is taught in schools at the college level because it applies to many applications. Python is a very easy language to learn and also easy to read. One can create any type of app using Python.
Python is what top app development companies use in developing android and desktop apps. Many apps have been created using Python such as Dropbox, Spotify, Instagram, BitTorrent Ubuntu Software Center, YouTube, OpenStack, Calibre, World of Tanks, Reddit, Quora etc.
The features of Python language include:
- It is the easiest language to learn and master
- It has an interactive language
- It runs on different operating systems like Windows, Linux, Unix, and Mac
- Python supports GUI apps
- It has an object-oriented language
- The interpreter processes its runtime.
3. Java
Java is one of the most popular programming languages. Many top app development companies in India use Java to complete their projects. PYPL Popularity reported that the language was the most searched on Google.
Popular Android OS uses Java which makes it a suitable mobile app language because many users use Android. Aside from Android apps, Java is used for webs apps, scientific apps, embedded space, server apps, games etc. Many top app development companies have used Java for apps like Blue-ray Disc Association, UltraMixer, NASA world wind, ThinkFree cloud office etc.
Java is very popular because of its association with the Android operating system, some of its features include:
- It can run on all platforms
- It supports APIs
- It is very easy to read and learn
- It has an object-oriented language
- It has a very powerful IDEs which makes coding error-free and easy.
4. PHP
The Hypertext Preprocessor was developed by Zend Technologies as an open source language for server-side scripting. This language was used initially for websites until recently when it has now been adopted for the purpose of mobile app development. PHP is also used for command line scripting and to code applications. It is a programming language used in making websites, android apps and iOS apps.
PHP has been used for websites like Facebook, Yahoo, Flickr, Tumblr, Wikipedia etc. PHP is used to create e-commerce websites, creating PDFs, for creating content management systems like Drupal and WordPress.
PHP features include:
- It is also easy to learn
- It is very compatible with servers
- It is an open source platform
- It is both procedural and object-oriented.
5. C++
C++ is a programming language that is object-oriented. It has a syntax from C and is an extension of C. The benefit of this is that if you understand how to use the C language, it won’t be difficult using the
C++. C++ is a more comprehensive version of C program. This programming language is used by many industries ranging from the baking to manufacturing industry. The C++ has been used by top app development companies to develop applications for iOS, Windows, and Android.
Aside from mobile app, It has also been used by top app development companies to create tools like Amazon, Google Chrome, Paypal, Photoshop, World of Warcraft etc.
C++ is amongst the most powerful programming languages and has many features. Some of the features include:
- It is object-oriented
- It is very easy to use and efficient
- It is very fast
- It is has a massive library
Amol’s Answer
Hi , Software engineering field is having different roles such as
- Systems analyst.
- Technical support.
- Network engineer.
- Technical consultant.
- Web developer.
- Software tester.
Aman’s Answer
- Executing full lifecycle software development
- Programming well-designed, testable, efficient code
- Producing specifications and determine operational feasibility
Ashutosh Kumar’s Answer
A typical Software Engineer roles includes:
1. Improving system quality by identifying issues and common patterns, and developing standard operating procedures
2. Enhancing applications by identifying opportunities for improvement, making recommendations and designing and implementing systems
3. Improving/maintaining end user experience by working with product design teams.
4. Maintaining and improving existing codebases and peer review code changes
5. Liaising with colleagues to implement technical designs
6. Investigating and using new technologies where relevant
7. Providing written knowledge transfer material
Hope this helps.
Best Regards
Ashutosh
Deepti’s Answer
Different roles of Software engineer are:
- Developer
- Tester/QA
- Frontend Engineer
- Backend Engineer
- Solution/Application Engineer
Prerna’s Answer
The work of a software engineer typically includes designing and programming system-level software: operating systems, database systems, embedded systems and so on.
They are expected to know how software and hardware function. The work can involve talking to clients and colleagues to assess and define what solution or system is needed, which means there's a lot of interaction as well as full-on technical work.
Munwar’s Answer
There are a ton of roles in the software industry, but to break it down, here are some high-level roles.
Business Analyst
Software Analyst/Engineer
Enterprise/Application Architect
Project Manager
Team Lead
QA Engineer
Database Administrator
Support Engineer
Munwar recommends the following next steps: