Programming in the enterprise

When a professional works for an enterprise, she does not work alone. There are a lot of people, developers as well as other coworkers, we have to cooperate with. The older the IT department of the enterprise is, and the larger the enterprise is, the more specialized roles people are in. You will certainly meet business analysts, project managers, test engineers, build engineers, subject-matter experts, testers, architects, scrum masters, and automation engineers, to name a few roles. Some of these roles may overlap, no person may have more than one responsibility, and while in other cases, some roles could even be more specialized. Some of the roles are very technical and require less business-related knowledge; others are more business oriented.

Working together as a team with so many people and with so many different roles is not simple. The complexity of the task may be overwhelming for a novice developer and cannot be done without definite policies that all members of the operation follow, more or less. Perhaps your experience will show that it is more times less than more, but that is a different story.

For the way developers work together, there are well-established industry practices. These support the Software Development Lifecycle (SDLC) using waterfall, agile, or a mix of the two models in some way. In the following sections, we will look at tools and techniques that are, or at least should have been, used in every software development organization. These are:

  • Static code analysis tools that control the quality of the code examining the source code
  • Source code version control that stores all the versions of the source code and help get the source code for any old version of the development
  • Software versioning to keep some order of how we identify the different versions and do not get lost among the different versions
  • Code review and tools that help in pin-pointing bugs that are not revealed by tests and aid knowledge sharing
  • Knowledge base tools to record and document the findings
  • Issue tracking tools that record bugs, customer issues, and other tasks that somebody has to attend to
  • Selection process and considerations for external products and libraries
  • Continuous integration that keeps the software in a consistent state and reports immediately if there is some error in it before the error propagates to other versions or other code, depending on how the erroneous code gets developed
  • Release management, which keeps track of the different release versions of the software
  • Code repository, which stores the compiled and packed artifacts

The following diagram shows the most widely used tools for these tasks:

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.191.29.22