top of page

THINGS ABOUT SOFTWARE DEVELOPMENT

Home: Welcome
Home: Blog2
Search
Writer's pictureZeCoder

Software Development Roles

Who are those people that actually do the development work?


I've worked for companies that had a nicely defined hierarchy of roles and also for companies that their definition of structure was "Do what needs to be done". Needless to say that some kind of structure is needed and without one there will be pain and suffering.


I will present my definitions for development roles that are common in my little area of the world. Feel free to share your comments 🙂


So, who is this software development professional?


This triangle represents the facets of a software developer.


The first and main facet is the personal skills, abilities and experience. It is up to the developer to improve his/her skills, they should not relay on anyone, no one can train for them they need to do it themselves.


The next one is the development process. This is defined by the company's management. It is up to management to train developers in how things are done.


The last facet is the actual business. This is important but in big companies developers can get away with doing their job without even understanding the business. This information is usually beneficial to senior level personnel.


Now for some roles, senior roles relay on the base requirements of the junior positions. The list contains technical roles, no team leads/project managers/etc. maybe I will get to that later.


Intern/Graduate


  • Flexible thinking

  • Problem solving abilities

  • Desire to learn and improve

  • Knows how to program in one or more of the languages used to build our products

  • Understand basic software principles: - Flow control: If, for, while, etc. - Basic structures: arrays, lists, trees, stacks, etc. - Object Oriented: Inheritance, polymorphism, encapsulation, etc. - Write, compile and run programs

  • Team player - Clearly and regularly communicate with other team members (status, challenges, issues, etc.)

  • Able to understand and executes the company’s software development process (Design/Develop/Test/Deliver)


Junior Developer


  • Graduate/Intern skills

  • In charge of designing and implementing the requirements of the product (as communicated by the designated person in charge of task assignments) Each code change must be reviewed by the appropriate Code Maintainer

  • Accountable for his/her code quality


Senior Developer


  • Junior Developer’s skills

  • An expert in one or more technical fields Posses knowledge/expertise in a framework/language/technique/etc. that is essential to the company's products

  • Capable of developing across all of our products

  • Expected to recommend improvements to existing software

  • May take on the role of Code Maintainer

  • Mentor Graduates/Interns/Junior developers

  • An active participant in requirement reviews

  • Make sure requirements are clear, follow the principle of “minimal viable product” and cover all the defined use cases


Code Maintainer


  • A Senior Software Developer

  • Posses in-depth knowledge of one or more specific business domains and relevant code

  • Acts as a source of knowledge for the area of expertise (Other developers naturally come to consult with the expert in matters related to his/her area of expertise)

  • Participate in technical discussions with developers and helps with feature design

  • Oversees and participates in Requirements/Design/Code reviews of changes in his/her maintained code


Software Architect


  • A Senior Software Developer

  • Observe and understanding the broader system environment

  • Create the principle design of the product

  • Assist developers in subdividing complex tasks into smaller, more manageable pieces, during the design phase

  • Grasp the functions of each component within the application

  • Understand the interactions and dependencies among components

  • Work with product stake holders to find solutions to business needs

  • Communicate concepts and ideas to developers and management

  • Take part in Requirements/Design/Code reviews


Junior QA


  • Review requirements, specifications and technical design documents to provide timely and meaningful feedback

  • Create detailed, comprehensive and well-structured test plans and test cases

  • Estimate, prioritize, plan and coordinate testing activities

  • Develop and apply testing processes for new and existing products to meet client needs

  • Monitor and record testing process results

  • Track quality assurance metrics, like defect densities, open defect counts, etc.


Senior QA


  • Junior QA’s skills

  • Design, develop and execute automatic tests using test automation software

  • Meet with internal teams (e.g. developers and product managers) to identify issues that will hinder testing

  • Investigate the causes of software issues and train users on how to solve them

  • Stay up-to-date with new testing tools and test strategies


Junior DevOps


  • Implement CI/CD pipelines using automation tools, frameworks and services

  • Should have the skills to use the tools, framework and services


Senior DevOps


  • Junior DevOps’ skills

  • Analyze build, package and deployment processes and communicate detailed reviews to development teams with suggested improvements

  • Troubleshoot production issues and coordinate with the development team to streamline code deployment

  • Collaborate with team members to improve the company’s engineering tools, systems and procedures, and data security

  • Optimize the company’s computing architecture

  • Conduct systems tests for security, performance, and availability


Software R&D Manager


Managing the people:

  • Resolve personal issues (with HR assistance if needed): - Company/Employee - Employee/Employee

  • Conduct performance reviews

  • Allocate bonuses and pay raises

  • Hire/Fire employees

  • Oversight - Asses employee skills and suggest ways to improve - Create an attractive work place for potential prospects - Create an enjoyable work environment for employees (to boost moral and improve productivity) - Create professional opportunities for employees - Take part in creating a productive and positive company culture

Technical:

  • Share professional experience via DRs and brainstorming with developers

  • Lead large scale projects (organization wide)

Company representative:

  • Communicate and oversee execution of senior leadership’s decisions and instructions

  • Conduct periodic reviews and adjust development process to improve its: - Quality - Development times

  • Manage and allocate resources (money, people, equipment, etc.) to allow development process to continue optimally

19 views0 comments

Recent Posts

See All

5 Levels of Maturity

I remembered a lecture I attended a while back about the Capability Maturity Model (CMM) and I thought I write my version of it from my...

Development Priorities

When developing software there are many things that need to be done: features, bugs, testing, etc. and not all of them have the same...

Subscribe Form

Home: Subscribe
Home: Contact
  • facebook
  • twitter
  • linkedin

©2020 by OfirNoy. Proudly created with Wix.com

bottom of page