Some of our owners wanted to share their knowledge for the benefit of everyone and this one provides more in-depth knowledge of the IT sector and Andreas Dürr, Managing Partner in Antal Germany as well as Vinu Nair, Managing Partner in Antal India, two main experts in the field, were kind enough to share some of their knowledge.
The aim was be to explain the different roles within the IT sector such as Software Engineer, Database Administrator, Java Developer, Test Engineer, ETL Developer, etc… This includes what they mean in practice and the different technologies/skills that are used by those Professionals and are asked by clients.
How does modern software development work?
In today´s world most software applications are too complex for one person to handle alone. Therefore software development is a team effort. Depending on the size of the software application this can be a small team or teams of several hundred people sometimes working across multiple geographic locations. Most companies nowadays use agile software development methodologies to develop their software products. The most commonly used agile methodologies are Scrum or Kanban.
The Product Owner gathers the requirements from different stakeholders (changes to software, new features needed etc…) and puts them in a product backlog and ranks them according to priority. The development team then works on those requirements and commits to deliver a defined outcome to be achieved in the next development cycle, which is called a Sprint. The tasks are then distributed within the team and there is a daily Scrum Meeting where the progress is discussed and potential issues are highlighted. The Scrum Master is the owner of that process. At the end of the sprint the finished work is tested and released and the total sprint is reviewed. Then, the process starts from the beginning again with the planning for the next sprint.
Within the Scrum Development Team, you will have different roles. The most typical roles will be Software Architects, software developers and software testers. Depending on the type of software, specialists will also be added, e.g. Database Experts or Frontend UX Designers. Let us have a look what these roles will typically do…
Software Development Life Cycle (SDLC)
The Software Development Life Cycle is a process used by software industry to design, develop and test high quality software. It is also called a Software development process. The process of software development services goes through a series of stages in step wise fashion that almost every developing company follows. Known as the ‘software development life cycle,’ these five steps include Requirement analysis, design, development & implementation, testing & deployment and evolution.
Software Development Life Cycle, also known as SDLC holds a very strong position in the software development process. The SDLC helps one to determine or come up with an approximate time that will be required to develop software. The most commonly used SDLC models are Agile, waterfall, spiral, etc
Software Analyst / Business Analyst
A software analyst is the person who studies the software application domain, prepares software requirements, and specification (Software Requirements Specification) documents. The software analyst is the seam between the software users and the software developers.
Business analyst is someone who analyses an organization or business domain (real or hypothetical) and documents its business or processes or systems, assessing the business model or its integration with technology.
The term programmer can refer to a specialist in one area of computer programming or to a generalist who writes code for many kinds of software. It can be anyone who uses a programming language to write code as per the requirements.
Programming languages: C, C++, Java, .NET etc
Software development is the process of developing software through successive phases in an orderly way. This process includes not only the actual writing of code but also the preparation of requirements and objectives, the design of what is to be coded, and confirmation that what is developed has met objectives.
His/her typical objectives would be as below:
- Create the backend and database
- Create the front end
- Create the mid layer of software
- Give suggestions to users upon using of the software
- Giving better alternatives to user requirement
- Integrate with third party programs
- Deploy the solution
A software engineer is a person who applies the principles of software engineering to the design, development, maintenance, testing, and evaluation of the software and systems that make computers or anything containing software work. An Engineer would typically find a solution to the problem using SDLC mode but a developer would build the solution.
- Requirement gathering and analysing
- Creating system architecture
- Software development and coding part
- Discussions with clients
- Following up
- Handling hardware and networking part also sometimes
- Giving demonstrations
- Many more like testing , team leading ,etc
Software testing is a process of executing a program or application with the intent of finding the software bugs. It can also be stated as the process of validating and verifying that a software program or application or product: Meets the business and technical requirements that guided its design and development. Manual testing is the process of manually testing software for defects.Automated software testing is a process in which software tools execute pre-scripted tests on a software application before it is released into production.
The role of software architect generally has certain common traits with architects in Construction: Software Architects make high-level design choices much more often than low-level choices. In addition, the architect may sometimes dictate technical standards, including coding standards, tools, or platforms.
UI/UX and Application development
- User Experience (UX) Designer = Research + Design
- UI Developer = Design + HTML/CSS/J
- Application Developer = Back-End coding + HTML/CSS/JS etc…
User Experience Designers
UX Design refers to the term User Experience Design, while UI Design stands for User Interface Design. Both elements are crucial to a product and work closely together. User experience design (UXD) is the process of enhancing customer satisfaction and loyalty by improving the usability, ease of use, and pleasure provided in the interaction between the customer and the product. Technologies used for UX: Photoshop, Illustrator, Corel
User Interface Developers
Front end developer
A back-end developer is a type of computer programmer who creates the logical back-end and core computational logic of a website, software or information system. The developer creates components and features that are indirectly accessed by a user through a front-end application or system. Languages like PHP, Ruby, Python, Java, and .Net are used to build an application, and tools like MySQL, Oracle, and SQL Server are used to find, save, or change data and serve it back to the user in front-end code.
A Database is a collection of related data organised in a way that data can be easily accessed, managed and updated. Any piece of information can be a data, for example name of your school. Database is actually a place where related piece of information is stored and various operations can be performed on it.
Database Management system
Software that handles the storage, retrieval, and updating of data in a computer system. Here are some examples of popular dbms, MySQL, Oracle, Sybase, Microsoft Access and IBM DB2.
Relational Database Management system
Relational database management system is a type of database management system (DBMS) that stores data in the form of related tables’ i.e. in a form of rows and columns. The key difference is that RDBMS (relational database management system) applications store data in a tabular form, while DBMS applications store data as files.
Structured Query Language
SQL is used to communicate with a database. SQL statements are used to perform tasks such as update data on a database, or retrieve data from a database.
Roles of a Database developer
Create the database using Tables and involve in database designing and coding.
Roles of a Database Architect
A database architect creates and manages large and expansive electronic databases to store and organize vast amounts of data. This is a highly skilled profession that is integral to most modern businesses. A database architect will help companies grow and expand into new marketplaces and help create a vision to meet strategic goals. A person in this position will work closely with software designers, design analysts and others to create comprehensive databases that may be used by hundreds if not thousands of people.
Roles of a Database administrator
Database administrators (DBAs) use specialized software to store and organize data. The role may include capacity planning, installation, configuration, database design, migration, performance monitoring, security, troubleshooting, as well as backup and data recovery. ETL is short for extract, transform and load, three database functions that are combined into one tool to pull data out of one database and place it into another database. Extract is the process of reading data from a database. Tools: Informatica Powercenter, IBM Infosphere, etc
Role of an ETL developer
The ETL developer’s responsibility is to ensure that the goals of the business with regards to data management are met. The developer should be able to design and implement a plan for all types of data movement or modification requested and approved by management. He/she should have intimate knowledge of the database schema and the data itself.
- Understand the ETL specifications and build the ETL applications like Mappings on daily basis.
- Need to fetch the daily data from various sources like relational and flat file sources of OLTP systems.
- Perform the Unit Testing on developed code.
Role of an ETL Architect
The ETL architect responsibilities include heading and directing the pattern and transport of ETL and information keeping practices to inhabit a particular information storehouse.1. Lead and guide development of an Informatica based ETL architecture.2. Develop solution in highly demanding environment and provide hands on guidance to other team members.3. Head complex ETL requirements and design.4. Implement an Informatica based ETL solution fulfilling stringent performance requirements.
Role of an ETL Tester
An ETL tester is primarily responsible for validating the data sources, extraction of data, applying transformation logic, and loading the data in the target tables. Create, design and execute test plans, test harnesses and test cases.