If you want to become a professional developer, you need to read specialized technical literature. A huge number of different editions of programming books are available today, even a lifetime is not enough to read a half of them. Which books do you really need to read? In this article we will talk about the works which should be very useful to every web developer. The list you will find below.
1.Service-Oriented Design with Ruby and Rails
The Complete Guide to Building Highly Scalable, Services-Based Rails Applications. Ruby on Rails deployments are growing, and Rails is increasingly being adopted in larger environments. Today, Rails developers and architects need better ways to interface with legacy systems, move into the cloud, and scale to handle higher volumes and greater complexity. In Service-Oriented Design with Ruby and Rails Paul Dix introduces a powerful, services-based design approach geared toward overcoming all these challenges. Using Dix’s techniques, readers can leverage the full benefits of both Ruby and Rails, while overcoming the difficulties of working with larger codebases and teams. Dix demonstrates how to integrate multiple components within an enterprise application stack; create services that can easily grow and connect; and design systems that are easier to maintain and upgrade. Key concepts are explained with detailed Ruby code built using open source libraries such as ActiveRecord, Sinatra, Nokogiri, and Typhoeus. The book concludes with coverage of security, scaling, messaging, and interfacing with third-party services.
Service-Oriented Design with Ruby and Rails will help you:
• Build highly scalable, Ruby-based service architectures that operate smoothly in the cloud or with legacy systems
• Scale Rails systems to handle more requests, larger development teams, and more complex code bases
• Master new best practices for designing and creating services in Ruby
• Use Ruby to glue together services written in any language
• Use Ruby libraries to build and consume RESTful Web services
• Use Ruby JSON parsers to quickly represent resources from HTTP services
• Write lightweight, well-designed API wrappers around internal or external services
• Discover powerful non-Rails frameworks that simplify Ruby service implementation
• Implement standards-based enterprise messaging with Advanced Message Queuing Protocol (AMQP)
• Optimize performance with load balancing and caching
• Provide for security and authentication
2.Rails AntiPatterns: Best Practice Ruby on Rails Refactoring
The Complete Guide to Avoiding and Fixing Common Rails 3 Code and Design Problems. As developers worldwide have adopted the powerful Ruby on Rails web framework, many have fallen victim to common mistakes that reduce code quality, performance, reliability, stability, scalability, and maintainability. Rails™ AntiPatterns identifies these widespread Rails code and design problems, explains why they’re bad and why they happen and shows exactly what to do instead. The book is organized into concise, modular chapters – each outlines a single common AntiPattern and offers detailed, cookbook-style code solutions that were previously difficult or impossible to find. Leading Rails developers Chad Pytel and Tammer Saleh also offer specific guidance for refactoring existing bad code or design to reflect sound object-oriented principles and established Rails best practices. With their help, developers, architects, and testers can dramatically improve new and existing applications, avoid future problems, and establish superior Rails coding standards throughout their organizations.
This book will help you understand, avoid, and solve problems with:
• Model layer code, from general object-oriented programming violations to complex SQL and excessive redundancy
• Domain modeling, including schema and database issues such as normalization and serialization
• View layer tools and conventions
• Controller-layer code, including RESTful code
• Service-related APIs, including timeouts, exceptions, backgrounding, and response codes
• Third-party code, including plug-ins and gems
• Testing, from test suites to test-driven development processes
• Scaling and deployment
• Database issues, including migrations and validations
• System design for “graceful degradation” in the real world
3. Site Reliability Engineering: How Google Runs Production Systems
The overwhelming majority of a software system’s lifespan is spent in use, not in design or implementation. So, why does conventional wisdom insist that software engineers focus primarily on the design and development of large-scale computing systems? In this collection of essays and articles, key members of Google’s Site Reliability Team explain how and why their commitment to the entire lifecycle has enabled the company to successfully build, deploy, monitor, and maintain some of the largest software systems in the world. You’ll learn the principles and practices that enable Google engineers to make systems more scalable, reliable, and efficient—lessons directly applicable to your organization.
This book is divided into four sections:
• Introduction—Learn what site reliability engineering is and why it differs from conventional IT industry practices
• Principles—Examine the patterns, behaviors, and areas of concern that influence the work of a site reliability engineer (SRE)
• Practices—Understand the theory and practice of an SRE’s day-to-day work: building and operating large distributed computing systems
• Management—Explore Google’s best practices for training, communication, and meetings that your organization can use
4.Docker in Action
Docker in Action teaches readers how to create, deploy, and manage applications hosted in Docker containers.
Purchase of the print book includes a free eBook in PDF, Kindle, and ePub formats from Manning Publications.
About the Technology
The idea behind Docker is simple. Create a tiny virtual environment, called a container, that holds just your application and its dependencies. The Docker engine uses the host operating system to build and account for these containers. They are easy to install, manage, and remove. Applications running inside containers share resources, making their footprints small.
About the Book
Docker in Action teaches readers how to create, deploy, and manage applications hosted in Docker containers. After starting with a clear explanation of the Docker model, you will learn how to package applications in containers, including techniques for testing and distributing applications. You will also learn how to run programs securely and how to manage shared resources. Using carefully designed examples, the book teaches you how to orchestrate containers and applications from installation to removal. Along the way, you’ll discover techniques for using Docker on systems ranging from dev-and-test machines to full-scale cloud deployments.
• Packaging containers for deployment
• Installing, managing, and removing containers
• Working with Docker images
• Distributing with DockerHub
About the Reader
Readers need only have a working knowledge of the Linux OS. No prior knowledge of Docker is assumed.
5.The Go Programming Language
The first chapter is a tutorial on the basic concepts of Go, introduced through programs for file I/O and text processing, simple graphics, and web clients and servers.
Early chapters cover the structural elements of Go programs: syntax, control flow, data types, and the organization of a program into packages, files, and functions. The examples illustrate many packages from the standard library and show how to create new ones of your own. Later chapters explain the package mechanism in more detail, and how to build, test, and maintain projects using the go tool.
The chapters on methods and interfaces introduce Go’s unconventional approach to object-oriented programming, in which methods can be declared on any type and interfaces are implicitly satisfied. They explain the key principles of encapsulation, composition, and substitutability using realistic examples.
Two chapters on concurrency present in-depth approaches to this increasingly important topic. The first, which covers the basic mechanisms of goroutines and channels, illustrates the style known as communicating sequential processes for which Go is renowned. The second covers more traditional aspects of concurrency with shared variables. These chapters provide a solid foundation for programmers encountering concurrency for the first time.
The final two chapters explore lower-level features of Go. One covers the art of metaprogramming using reflection. The other shows how to use the unsafe package to step outside the type system for special situations, and how to use the cgo tool to create Go bindings for C libraries.
The book features hundreds of interesting and practical examples of well-written Go code that cover the whole language, its most important packages, and a wide range of applications. Each chapter has exercises to test your understanding and explore extensions and alternatives. Source code is freely available for download from http://gopl.io/ and may be conveniently fetched, built, and installed using the go get command.
6. Clojure for the Brave and True: Learn the Ultimate Language and Become a Better Programmer
For weeks, months?—nay!—from the very moment you were born, you’ve felt it calling to you. At long last you’ll be united with the programming language you’ve been longing for: Clojure!
As a Lisp-style functional programming language, Clojure lets you write robust and elegant code, and because it runs on the Java Virtual Machine, you can take advantage of the vast Java ecosystem. Clojure for the Brave and True offers a “dessert-first” approach: you’ll start playing with real programs immediately, as you steadily acclimate to the abstract but powerful features of Lisp and functional programming. Inside you’ll find an offbeat, practical guide to Clojure, filled with quirky sample programs that catch cheese thieves and track glittery vampires.
Learn how to:
• Wield Clojure’s core functions
• Use Emacs for Clojure development
• Write macros to modify Clojure itself
• Use Clojure’s tools to simplify concurrency and parallel programming
Clojure for the Brave and True assumes no prior experience with Clojure, the Java Virtual Machine, or functional programming. Are you ready, brave reader, to meet your true destiny? Grab your best pair of parentheses—you’re about to embark on an epic journey into the world of Clojure!
Covers Clojure 1.7Requires Java 1.6 or later
7.Programming Elixir: Functional |> Concurrent |> Pragmatic |> Fun
You want to explore functional programming, but are put off by the academic feel (tell me about monads just one more time). You know you need concurrent applications, but also know these are almost impossible to get right. Meet Elixir, a functional, concurrent language built on the rock-solid Erlang VM. Elixir’s pragmatic syntax and built-in support for metaprogramming will make you productive and keep you interested for the long haul. This book is the introduction to Elixir for experienced programmers.
Maybe you need something that’s closer to Ruby, but with a battle-proven environment that’s unrivaled for massive scalability, concurrency, distribution, and fault tolerance. Maybe the time is right for the Next Big Thing. Maybe it’s Elixir.
Print books will be available after Elixir 1.0 has been finalized.
As a developer, you’ve probably heard that functional programming techniques help manage the complexities of today’s real-world, concurrent systems. You’re also investigating designs that help you maximize uptime and manage security.
This book is your guide to Elixir, a modern, functional, and concurrent programming language. Because Elixir runs on the Erlang VM, and uses the underlying Erlang/OTP architecture, it benefits from almost 20 years of research into high performance, highly parallel, and seriously robust applications. Elixir brings a lot that’s new: a modern, Ruby-like, extendable syntax, compile and runtime evaluation, a hygienic macro system, and more.
But, just as importantly, Elixir brings a sense of enjoyment to parallel, functional programming. Your applications become fun to work with, and the language encourages you to experiment.
Part 1 covers the basics of writing sequential Elixir programs. We’ll look at the language, the tools, and the conventions.
Part 2 uses these skills to start writing concurrent code–applications that use all the cores on your machine, or all the machines on your network! And we do it both with and without OTP.
And Part 3 looks at the more advanced features of the language, from DSLs and code generation to extending the syntax.
By the end of this book, you’ll understand Elixir, and know how to apply it to solve your complex, modern problems.
Purchase of the print book includes a free eBook in PDF, Kindle, and ePub formats from Manning Publications.
About the Technology
About the Book
• High-value FP techniques for real-world uses
• Using FP where it makes the most sense
• Separating the logic of your system from implementation details
• FP-style error handling, testing, and debugging
About the Reader
9. Structure and Interpretation of Computer Programs
Structure and Interpretation of Computer Programs has had a dramatic impact on computer science curricula over the past decade. This long-awaited revision contains changes throughout the text. There are new implementations of most of the major programming systems in the book, including the interpreters and compilers, and the authors have incorporated many small changes that reflect their experience teaching the course at MIT since the first edition was published. A new theme has been introduced that emphasizes the central role played by different approaches to dealing with time in computational models: objects with state, concurrent programming, functional programming and lazy evaluation, and nondeterministic programming. There are new example sections on higher-order procedures in graphics and on applications of stream processing in numerical programming, and many new exercises. In addition, all the programs have been reworked to run in any Scheme implementation that adheres to the IEEE standard.
10.Purely Functional Data Structures
Most books on data structures assume an imperative language such as C or C++. However, data structures for these languages do not always translate well to functional languages such as Standard ML, Haskell, or Scheme. This book describes data structures from the point of view of functional languages, with examples, and presents design techniques that allow programmers to develop their own functional data structures. The author includes both classical data structures, such as red-black trees and binomial queues, and a host of new data structures developed exclusively for functional languages. All source code is given in Standard ML and Haskell, and most of the programs are easily adaptable to other functional languages. This handy reference for professional programmers working with functional languages can also be used as a tutorial or for self-study.
With code examples and step-by-step instructions, author Bonnie Eisenman shows web developers and frontend engineers how to build and style interfaces, use mobile components, and debug and deploy apps. Along the way, you’ll build several increasingly sophisticated sample apps with React Native before putting everything together at the end.
• Learn how React Native provides an interface to native UI components
• Examine how the framework uses native components analogous to HTML elements
• Create and style your own React Native components and applications
• Install modules for APIs and features not supported by the framework
• Put it all together with the Zebreto effective-memorization flashcard app
• Deploy apps to the iOS App Store and Google’s Play Store
12. Metaprogramming Ruby 2: Program Like the Ruby Pros
Write powerful Ruby code that is easy to maintain and change. With metaprogramming, you can produce elegant, clean, and beautiful programs. Once the domain of expert Rubyists, metaprogramming is now accessible to programmers of all levels. This thoroughly revised and updated second edition of the bestselling Metaprogramming Ruby explains metaprogramming in a down-to-earth style and arms you with a practical toolbox that will help you write your best Ruby code ever. Dig under the surface and explore Ruby’s most advanced feature: a collection of techniques and tricks known as metaprogramming. In this book, you’ll learn metaprogramming as an essential component of Ruby and discover the deep, non-obvious details of the language. Once you understand the tenets of Ruby, including the object model, scopes, and singleton classes, you’re on your way to applying metaprogramming both in your daily work assignments and in your fun, after-hours projects.
Metaprogramming Ruby, Second Edition makes mastering the language enjoyable. The book is packed with:
• Pragmatic examples of metaprogramming in action, many of which come straight from real-life gems such as Rails.
• Programming challenges that let you experiment and play with some of the most out-there metaprogramming concepts.
• Metaprogramming “spells” – 33 practical recipes and idioms that you can study and apply right now, to write code that is sure to impress.
This completely revised new edition covers the new features in Ruby 2.0 and 2.1, and contains code from the latest Ruby libraries, including Rails 4. Most examples are new, “from the wild,” with more recent libraries. And the book reflects current ideas of when and how much metaprogramming you should use.
Whether you’re a Ruby apprentice on the path to mastering the language or a Ruby wiz in search of new tips, this book is for you.
13. Practical Object-Oriented Design in Ruby: An Agile Primer
Ruby’s widely admired ease of use has a downside: Too many Ruby and Rails applications have been created without concern for their long-term maintenance or evolution. The Web is awash in Ruby code that is now virtually impossible to change or extend. This text helps you solve that problem by using powerful real-world object-oriented design techniques, which it thoroughly explains using simple and practical Ruby examples. Sandi Metz has distilled a lifetime of conversations and presentations about object-oriented design into a set of Ruby-focused practices for crafting manageable, extensible, and pleasing code. She shows you how to build new applications that can survive success and repair existing applications that have become impossible to change. Each technique is illustrated with extended examples, all downloadable from the companion Web site, poodr.info.
The first title to focus squarely on object-oriented Ruby application design, Practical Object-Oriented Design in Ruby will guide you to superior outcomes, whatever your previous Ruby experience. Novice Ruby programmers will find specific rules to live by; intermediate Ruby programmers will find valuable principles they can flexibly interpret and apply; and advanced Ruby programmers will find a common language they can use to lead development and guide their colleagues.
This guide will help you:
• Understand how object-oriented programming can help you craft Ruby code that is easier to maintain and upgrade
• Decide what belongs in a single Ruby class
• Avoid entangling objects that should be kept separate
• Define flexible interfaces among objects
• Reduce programming overhead costs with duck typing
• Successfully apply inheritance
• Build objects via composition
• Design cost-effective tests
• Solve common problems associated with poorly designed Ruby code
14. Eloquent Ruby
It’s easy to write correct Ruby code, but to gain the fluency needed to write great Ruby code, you must go beyond syntax and absorb the “Ruby way” of thinking and problem solving. In Eloquent Ruby, Russ Olsen helps you write Ruby like true Rubyists do–so you can leverage its immense, surprising power. Olsen draws on years of experience internalizing the Ruby culture and teaching Ruby to other programmers. He guides you to the “Ah Ha!” moments when it suddenly becomes clear why Ruby works the way it does, and how you can take advantage of this language’s elegance and expressiveness. Eloquent Ruby starts small, answering tactical questions focused on a single statement, method, test, or bug. You’ll learn how to write code that actually looks like Ruby (not Java or C#); why Ruby has so many control structures; how to use strings, expressions, and symbols; and what dynamic typing is really good for. Next, the book addresses bigger questions related to building methods and classes. You’ll discover why Ruby classes contain so many tiny methods, when to use operator overloading, and when to avoid it. Olsen explains how to write Ruby code that writes its own code–and why you’ll want to. He concludes with powerful project-level features and techniques ranging from gems to Domain Specific Languages. A part of the renowned Addison-Wesley Professional Ruby Series, Eloquent Ruby will help you “put on your Ruby-colored glasses” and get results that make you a true believer.
15.Cracking the Coding Interview: 189 Programming Questions and Solutions
I am not a recruiter. I am a software engineer. And as such, I know what it’s like to be asked to whip up brilliant algorithms on the spot and then write flawless code on a whiteboard. I’ve been through this as a candidate and as an interviewer. Cracking the Coding Interview, 6th Edition is here to help you through this process, teaching you what you need to know and enabling you to perform at your very best. I’ve coached and interviewed hundreds of software engineers. The result is this book. Learn how to uncover the hints and hidden details in a question, discover how to break down a problem into manageable chunks, develop techniques to unstick yourself when stuck, learn (or re-learn) core computer science concepts, and practice on 189 interview questions and solutions.
These interview questions are real; they are not pulled out of computer science textbooks. They reflect what’s truly being asked at the top companies, so that you can be as prepared as possible. WHAT’S INSIDE?
• 189 programming interview questions, ranging from the basics to the trickiest algorithm problems.
• A walk-through of how to derive each solution, so that you can learn how to get there yourself.
• Hints on how to solve each of the 189 questions, just like what you would get in a real interview.
• Five proven strategies to tackle algorithm questions, so that you can solve questions you haven’t seen.
• Extensive coverage of essential topics, such as big O time, data structures, and core algorithms.
• A behind the scenes look at how top companies like Google and Facebook hire developers.
• Techniques to prepare for and ace the soft side of the interview: behavioral questions.
• For interviewers and companies: details on what makes a good interview question and hiring process.
You can’t overestimate the value of good programming books, each one of listed above allows you to make a huge leap in development of your skills.