Book picks similar to
Rethinking Systems Analysis and Design by Gerald M. Weinberg
design
systems
programming
non-fiction
Working Effectively with Unit Tests
Jay Fields - 2014
Unfortunately, developers are creating mountains of unmaintainable tests as a side effect. I've been fighting the maintenance battle pretty aggressively for years, and this book captures the what I believe is the most effective way to test.This book details my strong opinions on the best way to test, while acknowledging alternative styles and various contexts in which tests are written. Whether you prefer my style or not, this book will help you write better Unit and Functional Tests.
Working with UNIX Processes
Jesse Storimer - 2011
Want to impress your coworkers and write the fastest, most efficient, stable code you ever have? Don't reinvent the wheel. Reuse decades of research into battle-tested, highly optimized, and proven techniques available on any Unix system.This book will teach you what you need to know so that you can write your own servers, debug your entire stack when things go awry, and understand how things are working under the hood.http://www.jstorimer.com/products/wor...
Effective Java
Joshua Bloch - 2001
The principal enhancement in Java 8 was the addition of functional programming constructs to Java's object-oriented roots. Java 7, 8, and 9 also introduced language features, such as the try-with-resources statement, the diamond operator for generic types, default and static methods in interfaces, the @SafeVarargs annotation, and modules. New library features include pervasive use of functional interfaces and streams, the java.time package for manipulating dates and times, and numerous minor enhancements such as convenience factory methods for collections. In this new edition of Effective Java, Bloch updates the work to take advantage of these new language and library features, and provides specific best practices for their use. Java's increased support for multiple paradigms increases the need for best-practices advice, and this book delivers. As in previous editions, each chapter consists of several "items," each presented in the form of a short, standalone 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. Coverage includes:Updated techniques and best practices on classic topics, including objects, classes, methods, libraries, and generics How to avoid the traps and pitfalls of commonly misunderstood subtleties of the platform Focus on the language and its most fundamental libraries, such as java.lang and java.util
Java Se8 for the Really Impatient: A Short Course on the Basics
Cay S. Horstmann - 2013
The addition of lambda expressions (closures) and streams represents the biggest change to Java programming since the introduction of generics and annotations. Now, with Java SE 8 for the Really Impatient , internationally renowned Java author Cay S. Horstmann concisely introduces Java 8's most valuable new features (plus a few Java 7 innovations that haven't gotten the attention they deserve). If you're an experienced Java programmer, Horstmann's practical insights and sample code will help you quickly take advantage of these and other Java language and platform improvements. This indispensable guide includes Coverage of using lambda expressions (closures) to write computation "snippets" that can be passed to utility functions The brand-new streams API that makes Java collections far more flexible and efficient Major updates to concurrent programming that make use of lambda expressions (filter/map/reduce) and that provide dramatic performance improvements for shared counters and hash tables A full chapter with advice on how you can put lambda expressions to work in your own programs Coverage of the long-awaited introduction of a well-designed date/time/calendar library (JSR 310) A concise introduction to JavaFX, which is positioned to replace Swing GUIs, and to the Nashorn Javascript engine A thorough discussion of many small library changes that make Java programming more productive and enjoyable This is the first title to cover all of these highly anticipated improvements and is invaluable for anyone who wants to write tomorrow's most robust, efficient, and secure Java code.
System Design Interview – An Insider's Guide
Alex Xu - 2020
This book provides a step-by-step framework on how to tackle a system design question. It includes many real-world examples to illustrate the systematic approach with detailed steps that you can follow.What’s inside?- An insider’s take on what interviewers really look for and why.- A 4-step framework for solving any system design interview question.- 15 real system design interview questions with detailed solutions.- 188 diagrams to visually explain how different systems work.Table Of ContentsChapter 1: Scale From Zero To Millions Of UsersChapter 2: Back-of-the-envelope EstimationChapter 3: A Framework For System Design InterviewsChapter 4: Design A Rate LimiterChapter 5: Design Consistent HashingChapter 6: Design A Key-value StoreChapter 7: Design A Unique Id Generator In Distributed SystemsChapter 8: Design A Url ShortenerChapter 9: Design A Web CrawlerChapter 10: Design A Notification SystemChapter 11: Design A News Feed SystemChapter 12: Design A Chat SystemChapter 13: Design A Search Autocomplete SystemChapter 14: Design YoutubeChapter 15: Design Google DriveChapter 16: The Learning Continues
A Tour of C++
Bjarne Stroustrup - 2013
Bjarne Stroustrup, the designer and original implementer of C++, thoroughly covers the details of this language and its use in his definitive reference, The C++ Programming Language, Fourth Edition. In
A Tour of C++
, Stroustrup excerpts the overview chapters from that complete reference, expanding and enhancing them to give an experienced programmer-in just a few hours-a clear idea of what constitutes modern C++. In this concise, self-contained guide, Stroustrup covers most major language features and the major standard-library components-not, of course, in great depth, but to a level that gives programmers a meaningful overview of the language, some key examples, and practical help in getting started. Stroustrup presents the C++ features in the context of the programming styles they support, such as object-oriented and generic programming. His tour is remarkably comprehensive. Coverage begins with the basics, then ranges widely through more advanced topics, including many that are new in C++11, such as move semantics, uniform initialization, lambda expressions, improved containers, random numbers, and concurrency. The tour ends with a discussion of the design and evolution of C++ and the extensions added for C++11. This guide does not aim to teach you how to program (see Stroustrup's Programming: Principles and Practice Using C++ for that); nor will it be the only resource you'll need for C++ mastery (see Stroustrup's The C++ Programming Language, Fourth Edition, for that). If, however, you are a C or C++ programmer wanting greater familiarity with the current C++ language, or a programmer versed in another language wishing to gain an accurate picture of the nature and benefits of modern C++, you can't find a shorter or simpler introduction than this tour provides.
Crystal Clear: A Human-Powered Methodology for Small Teams
Alistair Cockburn - 2004
It describes the roles, teams, values, intentions, habits, activities, policies and work products of a small software development team forwhom time-to-market and development costs are critical considerations.Alistair Cockburn is one of the founders of the Agile software developmentmovement. He spells out proven best practices based on his extensiveexperience helping organizations build software quickly and with less cost. Theauthor understands that small teams cannot be burdened by process-heavysoftware methodologies. By advocating that developers stay close together andremain in steady, good-will communication with customers and users, thisbook teaches the reader how to develop software that not only does what it issupposed to do, but also gets completed on time and within budget.
The Problem with Software: Why Smart Engineers Write Bad Code
Adam Barr - 2018
As the size and complexity of commercial software have grown, the gap between academic computer science and industry has widened. It's an open secret that there is little engineering in software engineering, which continues to rely not on codified scientific knowledge but on intuition and experience.Barr, who worked as a programmer for more than twenty years, describes how the industry has evolved, from the era of mainframes and Fortran to today's embrace of the cloud. He explains bugs and why software has so many of them, and why today's interconnected computers offer fertile ground for viruses and worms. The difference between good and bad software can be a single line of code, and Barr includes code to illustrate the consequences of seemingly inconsequential choices by programmers. Looking to the future, Barr writes that the best prospect for improving software engineering is the move to the cloud. When software is a service and not a product, companies will have more incentive to make it good rather than "good enough to ship."
Learn Java in One Day and Learn It Well: Java for Beginners with Hands-on Project
Jamie Chan - 2016
Learn Java Programming Fast with a unique Hands-On Project. Book 4 of the Learn Coding Fast Series. Covers Java 8. Have you always wanted to learn computer programming but are afraid it'll be too difficult for you? Or perhaps you know other programming languages but are interested in learning the Java language fast? This book is for you. You no longer have to waste your time and money trying to learn Java from boring books that are 600 pages long, expensive online courses or complicated Java tutorials that just leave you more confused and frustrated. What this book offers... Java for Beginners Complex concepts are broken down into simple steps to ensure that you can easily master the Java language even if you have never coded before. Carefully Chosen Java Examples Examples are carefully chosen to illustrate all concepts. In addition, the output for all examples are provided immediately so you do not have to wait till you have access to your computer to test the examples. Careful selection of topics Topics are carefully selected to give you a broad exposure to Java, while not overwhelming you with information overload. These topics include object-oriented programming concepts, error handling techniques, file handling techniques and more. In addition, new features in Java (such as lambda expressions and default methods etc) are also covered so that you are always up to date with the latest advancement in the Java language. Learn The Java Programming Language Fast Concepts are presented in a "to-the-point" style to cater to the busy individual. You no longer have to endure boring and lengthy Java textbooks that simply puts you to sleep. With this book, you can learn Java fast and start coding immediately. How is this book different... The best way to learn Java is by doing. This book includes a unique project at the end of the book that requires the application of all the concepts taught previously. Working through the project will not only give you an immense sense of achievement, it’ll also help you retain the knowledge and master the language. Are you ready to dip your toes into the exciting world of Java coding? This book is for you. Click the BUY button and download it now. What you'll learn: Introduction to Java - What is Java? - What software do you need to code Java programs? - How to install and run JDK and Netbeans? Data types and Operators - What are the eight primitive types in Java? - What are arrays and lists? - How to format Java strings - What is a primitive type vs reference type? - What are the common Java operators? Object Oriented Programming - What is object oriented programming? - How to write your own classes - What are fields, methods and constructors? - What is encapsulation, inheritance and polymorphism? - What is an abstract class and interface? Controlling the Flow of a Program - What are condition statements? - How to use control flow statements in Java - How to handle errors and exceptions - How to throw your own exception
MongoDB Applied Design Patterns
Rick Copeland - 2013
You’ll learn how to apply MongoDB design patterns to several challenging domains, such as ecommerce, content management, and online gaming. Using Python and JavaScript code examples, you’ll discover how MongoDB lets you scale your data model while simplifying the development process.Many businesses launch NoSQL databases without understanding the techniques for using their features most effectively. This book demonstrates the benefits of document embedding, polymorphic schemas, and other MongoDB patterns for tackling specific big data use cases, including:Operational intelligence: Perform real-time analytics of business dataEcommerce: Use MongoDB as a product catalog master or inventory management systemContent management: Learn methods for storing content nodes, binary assets, and discussionsOnline advertising networks: Apply techniques for frequency capping ad impressions, and keyword targeting and biddingSocial networking: Learn how to store a complex social graph, modeled after Google+Online gaming: Provide concurrent access to character and world data for a multiplayer role-playing game
The Joy of Clojure
Michael Fogus - 2010
It combines the nice features of a scripting language with the powerful features of a production environment—features like persistent data structures and clean multithreading that you'll need for industrial-strength application development.The Joy of Clojure goes beyond just syntax to show you how to write fluent and idiomatic Clojure code. You'll learn a functional approach to programming and will master Lisp techniques that make Clojure so elegant and efficient. The book gives you easy access to hard soft ware areas like concurrency, interoperability, and performance. And it shows you how great it can be to think about problems the Clojure way. Purchase of the print book comes with an offer of a free PDF, ePub, and Kindle eBook from Manning. Also available is all code from the book. What's InsideThe what and why of ClojureHow to work with macrosHow to do elegant application designFunctional programming idiomsWritten for programmers coming to Clojure from another programming background—no prior experience with Clojure or Lisp is required.
Designing Event-Driven Systems
Ben Stopford - 2018
Many of these patterns are successful by themselves, but as this practical ebook demonstrates, they provide a more holistic and compelling approach when applied together.Author Ben Stopford explains how service-based architectures and stream processing tools such as Apache Kafka® can help you build business-critical systems.* Learn why streaming beats request-response based architectures in complex, contemporary use cases* Understand why replayable logs such as Kafka provide a backbone for both service communication and shared datasets* Explore how event collaboration and event sourcing patterns increase safety and recoverability with functional, event-driven approaches* Apply patterns including Event Sourcing and CQRS, and how to build multi-team systems with microservices and SOA using patterns such as “inside out databases” and “event streams as a source of truth”* Build service ecosystems that blend event-driven and request-driven interfaces using a replayable log and Kafka's Streams API* Scale beyond individual teams into larger, department- and company-sized architectures, using event streams as a source of truth