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
Technology
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.
Presentations
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.
YouTube
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...
Exercises
- No exercises.
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.
Presentations
Exercises
- Creating Effective Pull Requests.
Material
- Branching model (15 min)
- Adopt a Git branching strategy (6 min)
- Git Branching Strategies vs. Trunk-Based Development (14 min)
- Git Cheat Sheet
YouTube
- GitFlow (11 min)
- Reviewing Pull Requests Like a Senior Developer (16 min)
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.
Presentations
Exercises
- Included in the presentation.
LinkedIn Learning
- Learning Jira Software (2 hours)
YouTube
- Jira Demo (7 min)
Agile - We Love Change, in small increments
Agile, XP & Scrum
Agile combines a philosophy and a set of development guidelines. The philosophy encourages customer satisfaction and early incremental delivery.
Development guidelines stress delivery over analysis, and active continuous communication between developers and customers.
Exercises
- No exercises.
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.
Material
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.
Exercises
Material
LinkedIn Learning
Video
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.
Presentations
Exercises
- Included in the presentation.
LinkedIn Learning
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.
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.
Presentations
Exercises
- No exercises.
LinkedIn Learning
YouTube
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.
Presentations
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.
Presentations
Exercises
- No exercises.
LinkedIn Learning
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.
Presentations
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.
