Sign In Start Free Trial
Account

Add to playlist

Create a Playlist

Modal Close icon
You need to login to use this feature.
  • Book Overview & Buying Hands-On Software Engineering with Python
  • Table Of Contents Toc
Hands-On Software Engineering with Python

Hands-On Software Engineering with Python - Second Edition

By : Brian Allbee
close
close
Hands-On Software Engineering with Python

Hands-On Software Engineering with Python

By: Brian Allbee

Overview of this book

Software engineering is more than coding; it’s the strategic design and continuous improvement of systems that serve real-world needs. This newly updated second edition of Hands-On Software Engineering with Python expands on its foundational approach to help you grow into a senior or staff-level engineering role. Fully revised for today’s Python ecosystem, this edition includes updated tooling, practices, and architectural patterns. You’ll explore key changes across five minor Python versions, examine new features like dataclasses and type hinting, and evaluate modern tools such as Poetry, pytest, and GitHub Actions. A new chapter introduces high-performance computing in Python, and the entire development process is enhanced with cloud-readiness in mind. You’ll follow a complete redesign and refactor of a multi-tier system from the first edition, gaining insight into how software evolves—and what it takes to do that responsibly. From system modeling and SDLC phases to data persistence, testing, and CI/CD automation, each chapter builds your engineering mindset while updating your hands-on skills. By the end of this book, you'll have mastered modern Python software engineering practices and be equipped to revise and future-proof complex systems with confidence.
Table of Contents (22 chapters)
close
close
21
Index

Introduction

Pursuing a career in software engineering implies, at a minimum, a certain tolerance for change, if not an active pursuit or embrace of change. Processes and best practices evolve over time, as do the tools and even the languages themselves. While there are not a lot of truly new languages that have been released in the seven years since the first edition of this book was published, several languages have become more popular, including Go, Kotlin, Rust, and TypeScript. Ideas that appear in one language may surface in another, when the authors or maintainers of the language decide that the ideas are worth incorporating. Possible examples of that sort of cross-pollination, with capabilities being implemented in Python that may have originated in other languages, include the property decorator (.NET Framework had recognizably similar capabilities a year earlier) and the ability to annotate or type-hint functions and callables (a key capability of TypeScript, version 1.0 of which was released a year prior to Python’s support for the idea).

Even the titles have the potential for change. The previous edition of this book started with a breakdown of the various levels, grades, or ranks that organizations often use to indicate degrees of experience, expertise, and wisdom expected of their development personnel.

Those categories have not changed significantly in the intervening years:

  • At a junior or associate level, the aspiring software engineer is typically someone who does not have much experience. They probably know the basics of writing code, but are not expected to know much more than that.
  • The level between junior and senior is typically where the first real exposure to and experience with software engineering starts to happen: Understanding how different pieces of code interact and come together as a system, and the principles involved in the design of systems rather than just writing code, are a major portion of the growth or knowledge expected.
  • A senior-level practitioner has enough experience, even if it is focused on a very specific set of products, projects, or systems, to firmly grasp all of the technical skills involved in typical software development efforts. There is also, typically, a solid handle on the non-technical or semi-technical skills involved as well. Key among those are policies, procedures, strategies, and tactics that encourage or enforce business values like stability of a final product and predictability of development efforts. Seniors may not be experts in those areas, but are expected to recognize and call out risks, and provide options and suggestions for mitigating those risks before they become actual issues.

Typical title breakdowns for these levels include junior/associate developer/software developer/software engineer; developer and software engineer, sometimes with organization-specific suffixes; and senior developer/software developer/software engineer. In the past several years, a new category has become common enough that it bears mention and discussion: staff engineer. Staff engineers are senior-level technical leaders who can provide guidance on complex problems and systems, architecture, system and design strategies, and perhaps more in the context of the organizations they work for.

Staff engineering references

Staff engineer as a position or job title is new enough that it may still be in flux. Many of the basic concepts that drove the idea in the first place are described in detail in Staff Engineer: Leadership Beyond the Management Track by Will Larson, and The Staff Engineer’s Path: A Guide For Individual Contributors Navigating Growth and Change, by Tanya Reilly.

The dividing line between programming and software engineering falls somewhere within the differences between the mid- and senior-level titles, as far as technical capabilities and expertise are concerned. At a junior level, and to a lesser extent at the mid-level titles, efforts are often centered around nothing more than writing code to meet whatever requirements apply, and conforming to whatever standards are in play. Software engineering, at a senior developer level, has a bigger picture view of the same end results.

The bigger picture involves awareness of, and attention paid to, the following things:

  • Standards, both technical/developmental and otherwise, including best practices
  • The goals that code is written to accomplish, including the business values that are attached to them
  • The shape and scope of the entire system that the code is a part of
CONTINUE READING
83
Tech Concepts
36
Programming languages
73
Tech Tools
Icon Unlimited access to the largest independent learning library in tech of over 8,000 expert-authored tech books and videos.
Icon Innovative learning tools, including AI book assistants, code context explainers, and text-to-speech.
Icon 50+ new titles added per month and exclusive early access to books as they are being written.
Hands-On Software Engineering with Python
notes
bookmark Notes and Bookmarks search Search in title playlist Add to playlist download Download options font-size Font size

Change the font size

margin-width Margin width

Change margin width

day-mode Day/Sepia/Night Modes

Change background colour

Close icon Search
Country selected

Close icon Your notes and bookmarks

Confirmation

Modal Close icon
claim successful

Buy this book with your credits?

Modal Close icon
Are you sure you want to buy this book with one of your credits?
Close
YES, BUY

Submit Your Feedback

Modal Close icon
Modal Close icon
Modal Close icon