Python’s simplicity lets you become productive quickly, but often this means you aren’t using everything it has to offer. With the updated edition of this hands-on guide, you’ll learn how to write effective, modern Python 3 code by leveraging its best ideas.
Don’t waste time bending Python to fit patterns you learned in other languages. Discover and apply idiomatic Python 3 features beyond your past experience. Author Luciano Ramalho guides you through Python’s core language features and libraries and teaches you how to make your code shorter, faster, and more readable.
Featuring major updates throughout the book, Fluent Python, second edition, covers:
Special methods: The key to the consistent behavior of Python objects
Data structures: Sequences, dicts, sets, Unicode, and data classes
Functions as objects: First-class functions, related design patterns, and type hints in function declarations
Go is rapidly becoming the preferred language for building web services. While there are plenty of tutorials available that teach Go's syntax to developers with experience in other programming languages, tutorials aren't enough. They don't teach Go's idioms, so software developers end up recreating patterns that don't make sense in a Go context. This practical guide provides the essential background you need to write clear and idiomatic Go.
No matter your level of experience, you'll learn how to think like a Go developer. Author Jon Bodner introduces the design patterns experienced Go developers have adopted and explores the rationale for using them. You'll also get a preview of Go's upcoming generics support and how it fits into the language.
Learn how to write idiomatic code in Go and design a Go project
Understand the reasons for the design decisions in Go
Set up a Go development environment for a solo developer or team
Learn how and when to use reflection, unsafe, and cgo
Discover how Go's features allow the language to run efficiently
Know which Go features you should use sparingly or not at all
Salary surveys worldwide regularly place software architect in the top 10 best jobs, yet no real guide exists to help developers become architects. Until now. This book provides the first comprehensive overview of software architecture’s many aspects. Aspiring and existing architects alike will examine architectural characteristics, architectural patterns, component determination, diagramming and presenting architecture, evolutionary architecture, and many other topics.
Mark Richards and Neal Ford—hands-on practitioners who have taught software architecture classes professionally for years—focus on architecture principles that apply across all technology stacks. You’ll explore software architecture in a modern light, taking into account all the innovations of the past decade.
This book examines:
Architecture patterns: The technical basis for many architectural decisions
Components: Identification, coupling, cohesion, partitioning, and granularity
Soft skills: Effective team management, meetings, negotiation, presentations, and more
Modernity: Engineering practices and operational approaches that have changed radically in the past few years
Architecture as an engineering discipline: Repeatable results, metrics, and concrete valuations that add rigor to software architecture
This is the second edition of the best selling Python book in the world. Python Crash Course, 2nd Edition is a straightforward introduction to the core of Python programming. Author Eric Matthes dispenses with the sort of tedious, unnecessary information that can get in the way of learning how to program, choosing instead to provide a foundation in general programming concepts, Python fundamentals, and problem solving. Three real-world projects in the second part of the book allow readers to apply their knowledge in useful ways.
Professional programmers will learn how to create a simple video game, use data visualization techniques to make graphs and charts, and build and deploy an interactive web application. Python Crash Course, 2nd Edition teaches beginners the essentials of Python quickly so that they can build practical programs and develop powerful programming techniques.
You know you don't want to reinvent the wheel, so you look to Design Patterns: the lessons learned by those who've faced the same software design problems. With Design Patterns, you get to take advantage of the best practices and experience of others so you can spend your time on something more challenging. Something more fun. This book shows you the patterns that matter, when to use them and why, how to apply them to your own designs, and the object-oriented design principles on which they're based. Join hundreds of thousands of developers who've improved their object-oriented design skills through Head First Design Patterns.
What's so special about this book?
If you've read a Head First book, you know what to expect: a visually rich format designed for the way your brain works. With Head First Design Patterns, 2E you'll learn design principles and patterns in a way that won't put you to sleep, so you can get out there to solve software design problems and speak the language of patterns with others on your team.
Even bad code can function. But if code isn't clean, it can bring a development organization to its knees. Every year, countless hours and significant resources are lost because of poorly written code. But it doesn't have to be that way.
What kind of work will you be doing? You'll be reading code—lots of code. And you will be challenged to think about what's right about that code, and what's wrong with it. More importantly, you will be challenged to reassess your professional values and your commitment to your craft.
Readers will come away from this book understanding
How to tell the difference between good and bad code
How to write good code and how to transform bad code into good code
How to create good names, good functions, good objects, and good classes
How to format code for maximum readability
How to implement complete error handling without obscuring code logic
How to unit test and practice test-driven development
This book is a must for any developer, software engineer, project manager, team lead, or systems analyst with an interest in producing better code.
Systems programming provides the foundation for the world's computation. Writing performance-sensitive code requires a programming language that puts programmers in control of how memory, processor time, and other system resources are used. The Rust systems programming language combines that control with a modern type system that catches broad classes of common mistakes, from memory management errors to data races between threads.
With this practical guide, experienced systems programmers will learn how to successfully bridge the gap between performance and safety using Rust. Jim Blandy, Jason Orendorff, and Leonora Tindall demonstrate how Rust's features put programmers in control over memory consumption and processor use by combining predictable performance with memory safety and trustworthy concurrency.
Rust's fundamental data types and the core concepts of ownership and borrowing
How to write flexible, efficient code with traits and generics
How to write fast, multithreaded code without data races
Rust's key power tools: closures, iterators, and asynchronous programming
Collections, strings and text, input and output, macros, unsafe code, and foreign function interfaces
This is the most comprehensive prep guide available for the OCP Oracle Certified Professional Java SE 11 Developer certification—it covers Exam 1Z0-819 and the Upgrade Exam 1Z0-817 (as well as the retired Programmer I Exam 1Z0-815 and Programmer II Exam 1Z0-816)!
Java is widely-used for backend cloud applications, Software as a Service applications (SAAS), and is the principal language used to develop Android applications. This object-oriented programming language is designed to run on all platforms that support Java without the need for recompilation. Oracle Java Programmer certification is highly valued by employers throughout the technology industry.
This popular guide:
Helps you master the changes in depth, difficultly, and new module topics of the latest OCP exams
Covers all exam objectives such as Java arrays, primitive data types, string APIs, objects and classes, operators and decision constructs, and applying encapsulation
Allows developers to catch up on all of the newest Java material like lambda expressions, streams, concurrency, annotations, generics, and modules
Provides practical methods for building Java applications, handling exceptions, programming through interfaces, secure coding in Java SE, and more
Enables you to gain the information, understanding, and practice you need to pass the OCP exams
There are no easy decisions in software architecture. Instead, there are many hard parts - difficult problems or issues with no best practices - that force you to choose among various compromises. With this book, you'll learn how to think critically about the trade-offs involved with distributed architectures.
Architecture veterans and practicing consultants Neal Ford, Mark Richards, Pramod Sadalage, and Zhamak Dehghani discuss strategies for choosing an appropriate architecture. By interweaving a story about a fictional group of technology professionals - the Sysops Squad - they examine everything from how to determine service granularity, manage workflows and orchestration, manage and decouple contracts, and manage distributed transactions to how to optimize operational characteristics, such as scalability, elasticity, and performance.
By focusing on commonly asked questions, this book provides techniques to help you discover and weigh the trade-offs as you confront the issues you face as an architect.
Analyze trade-offs and effectively document your decisions
Make better decisions regarding service granularity
Understand the complexities of breaking apart monolithic applications
Manage and decouple contracts between services
Handle data in a highly distributed architecture
Learn patterns to manage workflow and transactions when breaking apart applications
Today, software engineers need to know not only how to program effectively but also how to develop proper engineering practices to make their codebase sustainable and healthy. This book emphasizes this difference between programming and software engineering.
How can software engineers manage a living codebase that evolves and responds to changing requirements and demands over the length of its life? Based on their experience at Google, software engineers Titus Winters and Hyrum Wright, along with technical writer Tom Manshreck, present a candid and insightful look at how some of the world’s leading practitioners construct and maintain software. This book covers Google’s unique engineering culture, processes, and tools and how these aspects contribute to the effectiveness of an engineering organization.
You’ll explore three fundamental principles that software organizations should keep in mind when designing, architecting, writing, and maintaining code:
How time affects the sustainability of software and how to make your code resilient over time
How scale affects the viability of software practices within an engineering organization
What trade-offs a typical engineer needs to make when evaluating design and development decisions
Get complete instructions for manipulating, processing, cleaning, and crunching datasets in Python. Updated for Python 3.6, the second edition of this hands-on guide is packed with practical case studies that show you how to solve a broad set of data analysis problems effectively. You’ll learn the latest versions of pandas, NumPy, IPython, and Jupyter in the process.
Written by Wes McKinney, the creator of the Python pandas project, this book is a practical, modern introduction to data science tools in Python. It’s ideal for analysts new to Python and for Python programmers new to data science and scientific computing. Data files and related material are available on GitHub.
Use the IPython shell and Jupyter notebook for exploratory computing
Learn basic and advanced features in NumPy (Numerical Python)
Get started with data analysis tools in the pandas library
Use flexible tools to load, clean, transform, merge, and reshape data
Create informative visualizations with matplotlib
Apply the pandas groupby facility to slice, dice, and summarize datasets
Analyze and manipulate regular and irregular time series data
Learn how to solve real-world data analysis problems with thorough, detailed examples
Java has changed dramatically since the previous edition of Effective Java was published shortly after the release of Java 6. This Jolt award-winning classic has now been thoroughly updated to take full advantage of the latest language and library features. The support in modern Java for multiple paradigms increases the need for specific best-practices advice, and this book delivers.
As in previous editions, each chapter of Effective Java, Third Edition, consists of several “items,” each presented in the form of a short, stand-alone essay that provides specific advice, insight into Java platform subtleties, and updated code examples. The comprehensive descriptions and explanations for each item illuminate what to do, what not to do, and why.
The book covers:
Functional interfaces, lambda expressions, method references, and streams
Default and static methods in interfaces
Type inference, including the diamond operator for generic types
The @SafeVarargs annotation
The try-with-resources statement
New library features such as the Optional interface, java.time, and the convenience factory methods for collections
Easy to understand and fun to read, this updated edition of Introducing Python is ideal for beginning programmers as well as those new to the language. Author Bill Lubanovic takes you from the basics to more involved and varied topics, mixing tutorials with cookbook-style code recipes to explain concepts in Python 3. End-of-chapter exercises help you practice what you’ve learned.
You’ll gain a strong foundation in the language, including best practices for testing, debugging, code reuse, and other development tips. This book also shows you how to use Python for applications in business, science, and the arts, using various Python tools and open source packages.
Algorithms have always played an important role in both the science and practice of computing. Beyond traditional computing, the ability to use algorithms to solve real-world problems is an important skill that any developer or programmer must have. This book will help you not only to develop the skills to select and use an algorithm to solve real-world problems but also to understand how it works.
What you will learn:
Explore existing data structures and algorithms found in Python libraries
Implement graph algorithms for fraud detection using network analysis
Work with machine learning algorithms to cluster similar tweets and process Twitter data in real time
Predict the weather using supervised learning algorithms
Use neural networks for object detection
Create a recommendation engine that suggests relevant movies to subscribers
Implement foolproof security using symmetric and asymmetric encryption on Google Cloud Platform (GCP)
Who this book is for:
This book is for programmers or developers who want to understand the use of algorithms for problem-solving and writing efficient code. Whether you are a beginner looking to learn the most commonly used algorithms in a clear and concise way or an experienced programmer looking to explore cutting-edge algorithms in data science, machine learning, and cryptography, you'll find this book useful. Although Python programming experience is a must, knowledge of data science will be helpful but not necessary.
The Pragmatic Programmer is one of those rare tech books you'll read, re-read, and read again over the years. Whether you're new to the field or an experienced practitioner, you'll come away with fresh insights each and every time.
Topics range from personal responsibility and career development to architectural techniques for keeping your code flexible and easy to adapt and reuse. Read this book, and you'll learn how to:
Fight software rot
Avoid the trap of duplicating knowledge
Write flexible, dynamic, and adaptable code
Harness the power of basic tools
Avoid programming by coincidence
Learn real requirements
Solve the underlying problems of concurrent code
Guard against security vulnerabilities
Build teams of Pragmatic Programmers
Take responsibility for your work and career
Test ruthlessly and effectively, including property-based testing
This book is packed with direct, no-nonsense solutions for the real challenges you’ll face–the ones that will make or break your projects.
Learn what software architects need to achieve–and core disciplines and practices for achieving it
Master essential software design principles for addressing function, component separation, and data management
See how programming paradigms impose discipline by restricting what developers can do
Understand what’s critically important and what’s merely a “detail”
Implement optimal, high-level structures for web, database, thick-client, console, and embedded applications
Define appropriate boundaries and layers, and organize components and services
See why designs and architectures go wrong, and how to prevent (or fix) these failures
Clean Architecture is essential reading for every current or aspiring software architect, systems analyst, system designer, and software manager–and for every programmer who must execute someone else’s designs.
Building software is harder than ever. As a developer, you not only have to chase ever-changing technological trends but also need to understand the business domains behind the software. This practical book provides you with a set of core patterns, principles, and practices for analyzing business domains, understanding business strategy, and, most importantly, aligning software design with its business needs.
Author Vlad Khononov shows you how these practices lead to robust implementation of business logic and help to future-proof software design and architecture. You'll examine the relationship between domain-driven design (DDD) and other methodologies to ensure you make architectural decisions that meet business requirements. You'll also explore the real-life story of implementing DDD in a startup company.
With this book, you'll learn how to:
Analyze a company's business domain to learn how the system you're building fits its competitive strategy
Use DDD's strategic and tactical tools to architect effective software solutions that address business needs
Build a shared understanding of the business domains you encounter
Grokking Algorithms is a friendly take on this core computer science topic. In it, you'll learn how to apply common algorithms to the practical programming problems you face every day. You'll start with tasks like sorting and searching. As you build up your skills, you'll tackle more complex problems like data compression and artificial intelligence. Each carefully presented example includes helpful diagrams and fully annotated code samples in Python. By the end of this book, you will have mastered widely applicable algorithms as well as how and when to use them.
When you have questions about C# 9.0 or .NET 5, this best-selling guide has the answers you need. C# is a language of unusual flexibility and breadth, but with its continual growth there's so much more to learn. In the tradition of O'Reilly's Nutshell guides, this thoroughly updated edition is simply the best one-volume reference to the C# language available today.
Organized around concepts and use cases, C# 9.0 in a Nutshell provides intermediate and advanced programmers with a concise map of C# and .NET that also plumbs significant depths.
Get up to speed on C#, from syntax and variables to advanced topics such as pointers, records, closures, and patterns
Dig deep into LINQ with three chapters dedicated to the topic
Explore concurrency and asynchrony, advanced threading, and parallel programming
Work with .NET features, including regular expressions, networking, spans, reflection, and cryptography
Microservices Patterns teaches you how to develop and deploy production-quality microservices-based applications. This invaluable set of design patterns builds on decades of distributed system experience, adding new patterns for writing services and composing them into systems that scale and perform reliably under real-world conditions. More than just a patterns catalog, this practical guide offers experience-driven advice to help you design, implement, test, and deploy your microservices-based application.
So this is the full list of software engineering books that you can save and add to your software developers read list.
Grow developer skills with AI
If you want to develop software engineering skills, Ace AI can help you to increase the effectiveness of your professional development.
Based on Git data, Ace AI identifies skills gaps and creates a development goal with automatic recommendations on software engineering books, courses, and other learning materials. You can just pick a book from recommendations and add tasks to your development goal.
See how Ace AI personalized recommendations work in practice: