Welcome to Software Engineering Guide
Software Engineering Guide (SEG) is a self-learning roadmap for practitioners in software engineering. It is a role-based guide and includes a curated list of free learning resources. For each role, there are four levels: foundation, beginner, intermediate, and advanced. The learning resources are being collected from highly-respected and well-trusted sources.
Motivation
There is a noticeable gap between traditional education offerings and industry demands. Particularly, at the places with low-quality education. Nowadays, you can access high-quality learning resources from around the world for free. Thus, there is no excuse to say that I don’t have a quality education!
Relationship
Software engineering is a broad field that encompasses many sub-fields. It also interrelates with other computing fields, like computer science and computer engineering. Thus, it is important first to understand the basics of software engineering. Then, choose and master a sub-field based on your interest and the market demand.
Principles
There are some important principles to guide yourself in your self-learning journey. These principles include purpose, ambition, passion, focus, self-motivation, self-learning, seriousness, and patience. Such principles are really helpful to get into a mastery level of software engineering.
Framework
A framework of three components inspires the scope of the SEG. The first component is the “learner” who has to get technical and non-technical skills. The second is the “method” to manage the process of software development (e.g. lean, agile, and DevOps). The third is the “technology” to support software development (e.g. ALM, IoT, and cloud computing).
Knowledge Areas
The SEG covers the main knowledge areas described in the Software Engineering Body of Knowledge (SWEBOK V4). It attempts to map each knowledge area to a set of career paths. It also includes other emerging career paths, like data science and artificial intelligence.
Learning Paths
The SEG currently includes 12 role-based learning paths. It provides guiding information and up-to-date learning resources for each learning path. If you still don’t have a career path in your mind, you can try to identify your potential career by using the MyInnerGenius Career Fit Assessment.
Traditional Areas:
- Software Requirements
- Software Design
- Software Construction
- Software Testing
- Software Maintenance
- Software Quality
- Software Security
- Software Project Management
Emerging Areas:
Interpersonal Skills
Technical skills are not enough to be a professional in software engineering! Soft skills are imperative and not less important than technical skills. Moreover, entrepreneurship skills are crucial when you would like to establish your own technology business.
Learning Process
The SEG recommends a set of activities to guide the self-learners. The first activity is to select a specialized role. Then, begin the following activities: learning, practicing, networking, and teaching. These activities are overlapping, iterative, and should be a life-long journey.
-
Learning: take and study the provided resources. It is not necessary to take all the provided materials if you know the subject or there is a duplication in topics.
-
Practicing: put your hands on the topics you have learned. Use the free tools or open-source software. You can also use a free trial of some commercial tools.
-
Networking: join and connect with professional and specialized communities. This provides a medium for knowledge sharing and question answering.
-
Teaching: give back to the community by sharing what you have learned. This activity encourages deep understanding and helps in improving soft skills.
Learning Outcomes
Level | Description | Outcome |
---|---|---|
Foundation | Learn how to learn and an introduction to the software development process | Understanding the techniques of effective learning, and the basics of the software development process |
Beginner | Basic topics and concepts of the selected learning path | Understanding the fundamental concepts of the selected learning path |
Intermediate | Intermediate topics, agile methods, and application life-cycle management (ALM) software | Understanding the intermediate topics, and the ability to develop applications using an agile approach and ALM software |
Advanced | Advanced topics, next-generation technologies (e.g. cloud computing), and modern approaches (e.g. DevOps) | Understanding the advanced topics, and the ability to develop next-generation applications using cloud computing and DevOps |
Performance Measurement
It is very important to measure your learning progress toward the intended objectives. From a practical perspective, you can achieve that by different means (achievement-based). For example, deliver a technical presentation or demonstrate a developed application. You can also get a professional certification in your domain.