Principals of Software Engineering
Software engineer, software developer, computer scientist or maybe just tech support, a career in software can be very rewarding, challenging, confronting and boring. Hopefully more of the prior, and the later is up to you to make a change and not accept the status quo.
What is a Project?
A project is a temporary endeavour with defined goals, scope, and deliverables, undertaken by a specific team or individual to achieve a specific objective or set of objectives. It typically involves a range of tasks, activities, and resources, managed within a planned timeframe, budget, and constraints. Projects differ from routine tasks or business-as-usual activities like maintaining software as they have a defined duration and scope of work.
Key characteristics of a project include:
- Specific goals and objectives
- Defined scope and boundaries
- Temporary in nature (starts and ends with a defined timeline)
- Managed by a specific team or individual (project manager)
- Requires planning, resources allocation, and monitoring
- Has a clear set of deliverables and outcomes
Project Management
Many different project methodologies exist to provide a structure approach to managing projects. These methodologies are typically what a project or product manager follows when working with a team of software engineers to communicate what the business or client is expecting and what the engineering team will deliver.
- PMBOK - Project Management Body of Knowledge
- Prince2 - PRojects IN Controlled Environments
- Agile
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
SDLC
- Waterfall
- RAD
- V-Model
- Lean
- Agile
SDLC Stages
- Planning and Requirements Analysis
- Requirements Definition
- Design
- Development
- Testing
- Deployment & Maintenance
SDLC Tooling
- Software Process
- Github, Gitlab, Bitbucket
- Planning and Tracking
- Jira, Trello, Monday.com
- Collaborate
- Confluence, Sharepoint,
- Source Code Management
- Git, SVN, Mercurial
- Build and Deploy
- Github, Gitlab, Bitbucket, Bamboo, Jenkins
- Testing
- Selenium, Postman, New Relic, Tricentis