Share E-Book

The Developers Field Guide to Modern Software Engineering Methods, Tools and Best Practices (Nico Loubser) (z-library.sk, 1lib.sk, z-lib.sk)

Author

Rating No ratings yet

Log in to rate

Software
Language English

Explore modern software engineering from design to deployment and everything in-between. This field guide is your ultimate reference to designing, building and deploying modern software applications in the tech industry today. Split into four parts, the book takes you through the stages of the software lifecycle, introducing you to aspects such as the command line interface, containerisation, design and practices before taking you through the major components of software system design, patterns, tools and best practices, before embarking on software deployment and all of the major areas of testing and security. You will also look at how the role of AI influences and impacts our approach to software engineering during different stages of development. The Developer's Field Guide to Modern Software Engineering is made up of 17, self-contained chapters for easy reference for those just starting their developer careers as well as those more experienced, who are looking for a quick refresher on a particular topic or issue. What You Will Learn Review the major components of modern software engineering Explore major topics in a real-life context Troubleshoot potentional problems See how AI is impacting software at different stages of the lifecycle Who This Book Is For Developers, engineers, and product managers who are involved in the design and deployment of software applications. Also, for those just starting out, looking for a starting point, as well as those more experienced looking for a quick and easy refresher on a particular topic.

Format PDF
Size 3.9 MB
5
Views
(First 20 pages)

Registered users can read the full content for free

Register as a Gaohf Library member to read the complete e-book online for free and enjoy a better reading experience.

Page 1
(This page has no text content)
Page 2
Nico Loubser The Developer’s Field Guide to Modern Software Engineering Methods, Tools and Best Practices
Page 3
Nico Loubser LONDON, UK ISBN 979-8-8688-2156-1 e-ISBN 979-8-8688-2157-8 https://doi.org/10.1007/979-8-8688-2157-8 © Nico Loubser 2026 This work is subject to copyright. All rights are solely and exclusively licensed by the Publisher, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed. The use of general descriptive names, registered names, trademarks, service marks, etc. in this publication does not imply, even in the absence of a specific statement, that such names are exempt from the relevant protective laws and regulations and therefore free for general use. The publisher, the authors and the editors are safe to assume that the advice and information in this book are believed to be true and accurate at the date of publication. Neither the publisher nor the authors or the editors give a warranty, expressed or implied, with respect to the material contained herein or for any errors or omissions that may have been made. The publisher remains neutral with regard to jurisdictional claims in published maps and institutional affiliations. Distributed to the book trade worldwide by Springer Science+Business Media New York, 1 New York Plaza, New York, NY 10004. Phone 1-800-
Page 4
SPRINGER, fax (201) 348-4505, e-mail orders-ny@springer-sbm. comwww. springeronline. com, or visit . Apress Media, LLC is a Delaware LLC and the sole member (owner) is Springer Science + Business Media Finance Inc (SSBM Finance Inc). SSBM Finance Inc is a Delaware corporation.This Apress imprint is published by the registered company APress Media, LLC, part of Springer Nature. The registered company address is: 1 New York Plaza, New York, NY 10004, U.S.A.
Page 5
To Kim, Ethan, and Maia, for your patience during the book-writing process.
Page 6
Introduction This book is about mentorship and sharing the knowledge I gained from numerous projects and the people I worked with. The aim of this book is not to let you completely master any of the topics in the chapters. That approach typically leads you to aspects of software engineering you will encounter only once a year, if not less. This book aims to provide you with the knowledge you need to create software projects and the concepts you will encounter in your day-to-day work as a software engineer. It aims to provide a foundation of knowledge from which you can tackle those complex issues that only arise once a year. Topics covered here range from setting up engineering environments and the command line to security, coding standards, the software development lifecycle, and MVPs. It also delves into the repercussions of AI, which is permeating software engineering from all angles.
Page 7
Any source code or other supplementary material referenced by the author in this book is available to readers on GitHub (https:// github. com/ Apress). For more detailed information, please visit https:// www. apress. com/ gp/ services/ source-code.
Page 8
Acknowledgments We all have to start somewhere, and for that reason, I would like to thank Ivor Kettles for believing in me and giving me my first break in IT, even after I told him I did not know what FTP and TWAIN were in my interview.
Page 9
Table of Contents Chapter 1: Containers Goal of This Chapter Containers A Short Summary of the Moving Parts in Setting Up a Container Bringing Up the System Inspecting the Adminer Container Populating the DB from the python-app Container Final Experiment Summary Chapter 2: The Command Line Goal of This Chapter The Command Line What Is the Command Line? Resources Provided for This Chapter Useful Tips and Tricks for Using the Command Line Some Popular Commands Summary Chapter 3: Programming Primer Goal of This Chapter Programming Language Selection Basic Programming Concepts Python
Page 10
Next Steps Summary Chapter 4: AI’s Role in Coding Goal of This Chapter Is Using AI in Coding Cheating or Lazy? The Current State of AI Effects on Individuals and Timelines Code Stability What Remains for Us in Our Careers? My Own Experience AI as a collaborator Some More Time-Saving Actions Skills Needed Do You Still Need to Study Classical Software Engineering? What Skills Would You Need in the Future? Summary Part I: Designing Your Software Chapter 5: Development Lifecycle The Software Development Lifecycle (SDLC) Waterfall and Agile Waterfall Agile SDLCs in Reality Stand-Ups and Work Estimation
Page 11
Additional SDLC Models Spiral Model V Model RAD (Rapid Application Development) Summary Chapter 6: Database Design The Goal of This Chapter Types of Databases Relational Databases NoSQL Databases Object-Oriented Databases NewSQL Databases How to Select a Database Type? Relational Database Data Types Numeric Values Text Values Date Values Binary Data Indexes Stored Procedures Views Keys Primary Keys Foreign Keys
Page 12
Normalizing Your Database First Normal Form Second Normal Form Third Normal Form Relationships in Your Tables Communicating with Your Database SQL LIMIT SUM, COUNT, and MAX Summary Chapter 7: Object Orientation Goal of This Chapter What Problems Does OOP Solve? An OOP Analogy Some OOP Benefits OOP Core Concepts Code-Based OOP Overview Encapsulation Abstraction Inheritance Polymorphism The Anatomy of a Class Object-Oriented Design: is-a vs. has-a (Composition) Summary
Page 13
Chapter 8: System Diagrams Introduction Initial Ideas Diagrams Explored Diagrams Class Diagrams Sequence Diagram Use Case Activity Diagram Database Diagram Database Design Summary Entities and Relationships What This Design Does Example Data You Can Expect Usage Summary Chapter 9: AI’s Role in Building Software Introduction Initial Design More Ways to Apply AI in the Initial Phase Technical Description: Gym Membership Data Model (Multiplicity Notation) Summary Part II: Building Your Software
Page 14
Chapter 10: Software Patterns The Goal of This Chapter What Are Patterns and Anti-patterns? What Patterns Will We Look At? Some Obvious Anti-patterns God Object Spaghetti Code Golden Hammer Magic Numbers and Strings Copy–Paste Programming Yo-Yo Problem List and Explanation of Patterns Architectural Patterns Event-Driven Architecture Domain-Driven Design (DDD) Model-View-Controller (MVC) Layered Architecture Design Patterns (Creational and Structural) Repository Pattern Factory Pattern Builder Pattern Singleton Pattern Behavioral Patterns Observer Pattern
Page 15
Dependency Management Patterns Dependency Injection (DI) Inversion of Control (IoC) Summary Chapter 11: Coding Principles Goal of This Chapter Why Follow Coding Principles? Principles Explained Object Calisthenics Summary Chapter 12: AI, Code Base Engagement, and Hallucinations Goal of This Chapter AI and Hallucinations What AI Hallucination Means Why Not Just Call It a Bug in Any Case? Why Hallucinations Occur AI’s Role in Software Engineering Patterns and Coding Principles Software Patterns Consistency and Governance Across Teams Coding Principles AI-Aided Development Processes Maintaining Software Engineering Principles Productivity, Risks, and Human Oversight New Coding Paradigms: Vibe Coding, Conversational Development, and Issues
Page 16
Issues, Problems, and Known Limitations Summary Part III: Deploying Your Software Chapter 13: Source Control and Deployments Introduction Source Control vs. Version Control Source Control Tools or Functionality Found in Source Control Branching Strategy Other Formal Branching Strategies Deployments Tools Found in Deployment Pipelines Source Integration Build Automation Linters and Static Analysis Unit and Integration Tests Security and Dependency Scanning Artifact Management Staging Deployments Configuration and Secret Management Monitoring and Rollback Summary Chapter 14: Security Security in Software Engineering and DevOps
Page 17
Hacker vs. Cracker Thinking Like a Hacker Responsibilities of Software Engineers Code Security Architecture and Design Security Data Security (Application Layer) Testing and Validation Who Is at Risk of Being Hacked? The Basics Validate Inputs Escape Output Use Parameterized SQL Queries Enforce Auth and Access Control on the Server Hash and Protect Credentials/ Secrets Stay Patched and Configured Securely Defend Against Phishing OWASP Top Ten A01: Broken Access Control A02: Cryptographic Failures A03: Injection (Including XSS) A04: Insecure Design A05: Security Misconfiguration A06: Vulnerable and Outdated Components A07: Identification and Authentication Failures
Page 18
A08: Software and Data Integrity Failures A09: Security Logging and Monitoring Failures A10: Server-Side Request Forgery (SSRF) Responsibilities of DevOps/ Operations Network and Infrastructure Security Operational and Deployment Security Monitoring and Incident Response Data Security (Infrastructure Layer) Governance, Risk, and Compliance (GRC) Summary Chapter 15: Cloud Services and Hosting Cloud-Based Technologies Cloud Considerations Hybrid Approach Cloud Service Models Hosting Why Choosing the Right Hosting Matters Types of Hosting Shared Hosting VPS (Virtual Private Server) Hosting Dedicated Hosting Cloud Hosting Managed Hosting Colocation Hosting
Page 19
How to Get Your Software on the Hosting Site Summary Part IV: Testing Your Software Chapter 16: Types of Testing and Peer Reviews Introduction Automated Tests When to Write Tests Which Tests to Create? Other Tests Which Are Not Related to the Accuracy of the Business Logic of Your Code Peer Reviews When to Do Reviews Types of Peer Reviews Pull Requests As a Code Review Mechanism Key Benefits of Peer Reviews Summary Chapter 17: AI’s Role in Testing Introduction Basic Usage Advanced Usage Better Automation Non-functional Tests Summary Index
Page 20
About the Author Nico Loubser has been writing software for 22 years. During that time, he earned an honors degree in software engineering, delivered talks at PHP meetups, designed numerous systems from the ground up, and learned how to build as well as how not to build systems. In recent years, he has shifted his focus to the architectural aspects of software engineering and is designing systems on AWS. He is a firm believer that mentorship is essential to developing the next generation of software engineers and that, with the AI revolution, we will need mentorship for junior engineers more than ever. Nico is also the author of the popular book Software Engineering for Absolute Beginners from Apress.
The above is a preview of the first 20 pages. Register to read the complete e-book.

Recommended for You

Loading recommended books...
Failed to load, please try again later

Tip the Site

Scan the WeChat Pay or Alipay code to tip. No login required.

WeChat Pay
Alipay
← Back to List