Computer software engineering as an industry has been evolving for many years. There are various methodologies to follow. A lot of senior software engineers are familiar with the software development life cycle (SDLC) and follow the process in order to deliver high quality products.
What is SDLC? It is a complete process for a team to work collaboratively on an software application project or a software product, phase by phase, from start to finish.
After a software project or a product phase has been defined and funded, SDLC is kicked off. It may be covered by one or more iterations of an Agile process. Usually SDLC includes the following steps and repeats itself incrementally in multiple project cycles:
- Requirement gathering
- Requirement analysis
- Technical design
- Environment set up and configuration
- Code implementation
- Unit testing
- System testing
- Nightly build
- Bug report
- Weekly release
It is usually conducted by product management team.
Translate the functional requirements to technical specifications by developers.
It includes the overall system design, component design, object and class diagram, data modeling and business workflow, etc., based on the architecture design of the product or application project.
Create or follow the documentation to set the development environment, which usually includes multiple tiers of servers and system configuration files, on a local system.
It involves object, database and business logic implementation, debugging, trouble shooting for a predefined set of features and functionalities.
It is usually conducted by the developers with a set of predefined API (Application Programming Interface) for a particular functionality.
There are while/black box testings, smoke testing with automated scripts, stress/load testing, and regression testing, conducted manually or with tools, by peer developers or QA (Quality Assurance) team.
There will be design specifications, installation procedures, system configuration guide, user manual, and test plan, etc. to be archived for references.
Code after unit testing will be checked into the source control system and a night build will be done with an automated build script.
In order to track the feature implementation and bug fixing between the development team and QA team, a useful tracking system is needed for collaboration.
If a set of functionalities have passed the system testing, the code can be released for the testing by the beta customers on a weekly or monthly basis.
If you have the above qualification, I believe you will be competent for most of the software engineer positions in the industry.