Skip to content

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

References