SOFTWARE ENGINEERING

Tomorrow, seniors + AI will teach entire careers’ worth of wisdom in months — and the pace will only accelerate.

Becoming a professional Software Engineer is hard work. You have a lot of knowledge to consume and have to learn many different domain specific paradigms and techniques.

This blog consists of several lectures, taken from my teachings, through time, in Computer Science.

It guides you through everything from software project management, agile processes, user experience design  to practical software development and quality assurance techniques.

This material contains some of my preseantation, video links and other material is more focused on practical knowledge than academic theories.

You're welcome to contribute with your comments or ideas to improve the material.

Enjoy the journey.

Lectures


Teams - creative high-performance


TEAM BUILDING

You may think that you're the worlds best programmer, but the reality is that your personality and problem solving skills (both technical and social) are much more important.

Anyone can become a good programmer, but being a proactive high-performance team player who others enjoy being with is alpha omega (most important) if you want a privileged working career.

Creativity

Building great high-performance teams is not trivial. Most teams are mediocre and do not understand, or ignores, what it takes to build creative high-performance teams.

The presentation introduces 5 typical creativity phenomena and includes different funny and amazing creativity test/activities.

Presentations

Exercises

  • Included in the presentation.

Double Diamond

Double Diamond conveys a design process to designers and non-designers alike.

The two diamonds represent a process of exploring an issue more widely or deeply (divergent thinking) and then taking focused action (convergent thinking).

Presentations

Exercises

  • Included in the presentation.

Projects - No process = Chaos


Project Management Concepts & Process Models

Project management involves the planning, monitoring, and control of the people, process, and events from a preliminary concept to full operational deployment.

Types of Software Process Model

  • Waterfall-, V-, Incremental-, Agile-, Iterative-, Spiral-, Prototype model...

Software Configuration Management (SCM)

SCM is a set of tracking and control activities that are initiated when a software engineering project begins and terminates only when the software is taken out of operation.

Platforms like GitHub, BitBucket and alike are often a part of a SCM vision.

Project Platform Exploration (JIRA)

JIRA is, an open-source platform, used as a project tracking tool with many benefits and plugins/apps.

In this exercise you will:

  • Create an agile Jira team site and integrate Jira with GitHub and IntelliJ.
  • Create epics, stories, board and sprints and  burndown chart, in Jira.
  • Create feature branch, from Jira and use pull-requests to merge changes.

Exercises

  • Included in the presentation.

LinkedIn Learning

YouTube

Agile - We Love Change, in small increments


Quality


SOLID Principles

SOLID principles ensure a flexible and adaptable codebase. Ultimately, embracing these concepts leads to higher-quality software, efficient development processes, and the ability to navigate complexities in a structured manner.

Presentations

Exercises

  • No exercises.

Software DESIGN PATTERNS

Design patterns are proven, reusable software architecture solutions to common problems.

Presentations

Exercises

  • Included in the presentation.

Quality Concepts & Testing

About the principles, concepts, and techniques that are applied to manage and control software quality.

Learning how to create TDD tests to make code more testable.

Software Metrics

A software metric is a measurement of quantifiable or countable software characteristics. Software metrics are essential for various purposes, including measuring software performance, planning work items, and measuring productivity.

Presentations

Exercises

  • Included in the presentation.

IntelliJ Plugin

Analysis - Understanding the World


Structured Analysis

A development method that allows the analyst to understand the system and its activities in a logical way.

A systematic approach, using graphical tools that analyze and refine the objectives of an existing system and develop a new system specification which can be easily understandable by user.

Component-Level Design

Component-level design, is an approach to software development that emphasizes the concept of reusable components. The preferred method is to create a system using off-the-shelf components.

The design is often visualized with UML - Unified Modeling Language notation.

Presentations

YouTube

UX Design


Design Thinking & User Experience Design

Design thinking is a human-centered approach to innovation that draws from the designer's toolkit to integrate the needs of people, the possibilities of technology, and the requirements for business success.

AI - The Future is Bright


Artificial Intelligence (AI)

Artificial intelligence defined. Artificial intelligence is a field of science concerned with building computers and machines that can reason, learn, and act in such a way that would normally require human intelligence or that involves data whose scale exceeds what humans can analyze.

Improvement - Fix It or Lose it


Software Process Improvement (SPI)

SPI is a set of activities that will lead to a better software process. Therefore, higher quality software delivered in a timelier manner.

SPI also offers a certification concept model called CMMI - Capability Maturity Model Integration.

Maintenance & Reengineering

Maintenance and reengineering are two different areas in software engineering. Maintenance is for running the system till the age of the system where as the reengineering make the system new to work for another life span.

Scope of reengineering is vast and challenging as compared to maintenance.

Exercises

  • No exercises.

Technology - Funny experiments


Brain-Computer Interface (BCI)

Brain-Computer Interface (BCI) refers to the communication between the brain and a computer used to interpret the real-time activity of the brain through signal processing and machine learning.

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.