Land the Tech Job You Love


Andy Lester - 2008
    Your competition is smart, tech-savvy, and highly resourceful. Expectations among employers are higher. Your competition will run you over if you're not up to the challenge. Land the Tech Job You Love gives you the background, the skills, and the hard-won wisdom to bypass the mistakes of those who don't prepare. You might not think you need this book. Conventional Wisdom has it that finding a job is simple: send some resumes, go on some interviews, and take the offer that sounds best. But that's only the start. You've got the background and skills to work the Web and other resources that the general job seeker doesn't. This book shows you how to take advantage of those skills or be left behind by competing techies who do. It all starts with an examination of you, your strengths, and where you want your career to take you. Without a roadmap, you'll wind up in any old job. Life's too short to spend in a job that you don't love. From there, you'll see how to find the job you want that fits you and the employer, using your technical and web savvy to find the hidden jobs that never make it into the classifieds or Monster. "Marketing" is not a dirty word, and you'll learn how to present yourself, your skills, and your background in the way that shows the hiring company that you're the right person for the job. Create a resume that tosses out conventional wisdom, write cover letters that sell your background, and assemble a portfolio of work that will wow the interviewer. Social networking has been the darling of the Web in the past few years, but it's no substitute for the sort of personal interaction that makes relationships that help in future careers. As one manager said, "One recommendation is worth a million resumes." This book shows you how to make and maintain the connections that will drive your future career moves.Land the Tech Job You Love pulls no punches and lays out the details for what gets you an interview, and gets you hired in a job in the technical world that makes you happy.

Think Python


Allen B. Downey - 2002
    It covers the basics of computer programming, including variables and values, functions, conditionals and control flow, program development and debugging. Later chapters cover basic algorithms and data structures.

Beyond the Twelve-Factor App Exploring the DNA of Highly Scalable, Resilient Cloud Applications


Kevin Hoffman - 2016
    Cloud computing is rapidly transitioning from a niche technology embraced by startups and tech-forward companies to the foundation upon which enterprise systems build their future. In order to compete in today’s marketplace, organizations large and small are embracing cloud architectures and practices.

Programming Phoenix: Productive |> Reliable |> Fast


Chris McCord - 2016
    Phoenix creator Chris McCord, Elixir creator José Valim, and award-winning author Bruce Tate walk you through building an application that’s fast and reliable. At every step, you’ll learn from the Phoenix creators not just what to do, but why. Packed with insider insights, this definitive guide will be your constant companion in your journey from Phoenix novice to expert, as you build the next generation of web applications.

Grokking Simplicity: Taming complex software with functional thinking


Eric Normand - 2019
    Grokking Simplicity is a friendly, practical guide that will change the way you approach software design and development. It introduces a unique approach to functional programming that explains why certain features of software are prone to complexity, and teaches you the functional techniques you can use to simplify these systems so that they’re easier to test and debug.

How Google Tests Software


James A. Whittaker - 2012
    Legendary testing expert James Whittaker, until recently a Google testing leader, and two top Google experts reveal exactly how Google tests software, offering brand-new best practices you can use even if you're not quite Google's size...yet! Breakthrough Techniques You Can Actually Use Discover 100% practical, amazingly scalable techniques for analyzing risk and planning tests...thinking like real users...implementing exploratory, black box, white box, and acceptance testing...getting usable feedback...tracking issues...choosing and creating tools...testing "Docs & Mocks," interfaces, classes, modules, libraries, binaries, services, and infrastructure...reviewing code and refactoring...using test hooks, presubmit scripts, queues, continuous builds, and more. With these techniques, you can transform testing from a bottleneck into an accelerator-and make your whole organization more productive!

The RSpec Book


David Chelimsky - 2009
    Get the most out of BDD in Ruby with The RSpec Book, written by the lead developer of RSpec, David Chelimsky. You'll get started right away with RSpec 2 and Cucumber by developing a simple game, using Cucumber to express high-level requirements in language your customer understands, and RSpec to express more granular requirements that focus on the behavior of individual objects in the system. You'll learn how to use test doubles (mocks and stubs) to control the environment and focus the RSpec examples on one object at a time, and how to customize RSpec to "speak" in the language of your domain. You'll develop Rails 3 applications and use companion tools such as Webrat and Selenium to express requirements for web applications both in memory and in the browser. And you'll learn to specify Rails views, controllers, and models, each in complete isolation from the other. Whether you're developing applications, frameworks, or the libraries that power them, The RSpec Book will help you write better code, better tests, and deliver better software to happier users.

Are Your Lights On?: How to Figure Out What the Problem Really is


Donald C. Gause - 1982
    A Problem2. Peter Pigeonhole Prepared A Petition3. What's Your Problem?Part 2: What is The Problem?4. Billy Brighteyes Bests The Bidders5. Billy Bites His Tongue6. Billy Back To The BiddersPart 3: What is The Problem Really?7. The Endless Chain8. Missing The Misfit9. Landing On The Level10. Mind Your MeaningPart 4: Whose Problem Is It?11. Smoke Gets In Your Eyes12. The Campus That Was All Spaced Out13. The Lights At The End Of The TunnelPart 5: Where Does It Come From?14. Janet Jaworski Joggles A Jerk15. Mister Matczyszyn Mends The Matter16. Make-Works And Take-Credits17. Examinations And Other PuzzlesPart 6: Do We Really Want To Solve It?18. Tom Tireless Tinkers With Toys19. Patience Plays Politics20. A Priority Assignment

Documenting Software Architectures: Views and Beyond


Paul Clements - 2002
    For all but the most trivial software systems, you must pay close attention to its architecture, the conceptual glue that holds every phase of a project together.

Exercises in Programming Style


Cristina Videira Lopes - 2014
    It is designed to be used in conjunction with code provided on an online repository. The book complements and explains the raw code in a way that is accessible to anyone who regularly practices the art of programming. The book can also be used in advanced programming courses in computer science and software engineering programs.The book contains 33 different styles for writing the term frequency task. The styles are grouped into nine categories: historical, basic, function composition, objects and object interactions, reflection and metaprogramming, adversity, data-centric, concurrency, and interactivity. The author verbalizes the constraints in each style and explains the example programs. Each chapter first presents the constraints of the style, next shows an example program, and then gives a detailed explanation of the code. Most chapters also have sections focusing on the use of the style in systems design as well as sections describing the historical context in which the programming style emerged.

Building a DevOps Culture


Mandi Walls - 2013
    But, as Mandi Walls explains in this Velocity report, DevOps is really about changing company culture—replacing traditional development and operations silos with collaborative teams of people from both camps. The DevOps movement has produced some efficient teams turning out better products faster. The tough part is initiating the change. This report outlines strategies for managers looking to go beyond tools to build a DevOps culture among their technical staff. Topics include: Documenting reasons for changing to DevOps before you commit Defining meaningful and achievable goals Finding a technical leader to be an evangelist, tools and process expert, and shepherd Starting with a non-critical but substantial pilot project Facilitating open communication among developers, QA engineers, marketers, and other professionals Realigning your team’s responsibilities and incentives Learning when to mediate disagreements and conflicts Download this free report and learn how to the DevOps approach can help you create a supportive team environment built on communication, respect, and trust. Mandi Walls is a Senior Consultant with Opscode.

Building Maintainable Software


Joost Visser - 2015
    Be part of the solution. With this practical book, you'll learn 10 easy-to-follow guidelines for delivering software that's easy to maintain and adapt. These guidelines have been derived from analyzing hundreds of real-world systems.Written by consultants from the Software Improvement Group (SIG), this book provides clear and concise explanations, with advice for turning the guidelines into practice. Examples are written in Java, but this guide is equally useful for developers working in other programming languages.10 Coding Guidelines- Write short units of code: limit the length of methods and constructors- Write simple units of code: limit the number of branch points per method- Write code once, rather than risk copying buggy code- Keep unit interfaces small by extracting parameters into objects- Separate concerns to avoid building large classes- Couple architecture components loosely- Balance the number and size of top-level components in your code- Keep your codebase as small as possible- Automate tests for your codebase- Write clean code, avoiding "code smells" that indicate deeper problemsWhy you should read this bookTaken in isolation, the guidelines presented in this book are well-known. In fact, many well-known tools for code analysis check a number of the guidelines presented here. The following three characteristics set this book apart from other books on software development: We have selected the ten most important guidelines from experience.We teach how to comply with these ten guidelines.We present statistics and examples from real-world systems.This book is part our Training on Software Maintainability - and subsequent Certification on Quality Software Development program. For more information about this program, please contact training@sig.eu.

The Mikado Method


Ola Ellnestam - 2014
    The Mikado Method is a process for surfacing the dependencies in a codebase, so that you can systematically eliminate technical debt and get things done.It gets its name from a simple game commonly known as "pick-up sticks." You start with a jumbled pile of sticks. The goal is to remove the Mikado, or Emperor, stick without disturbing the others. Players carefully remove sticks one at a time, leaving the rest of the heap intact, slowly exposing the Mikado. The game is a great metaphor for eliminating technical debt—carefully extracting each intertwined dependency until you're able to successfully resolve the central issue and move on.The Mikado Method is a book by the creators of this process. It describes a pragmatic, straightforward, and empirical method to plan and perform non-trivial technical improvements on an existing software system. The method has simple rules, but the applicability is vast. As you read, you'll practice a step-by-step system for identifying the scope and nature of your technical debt, mapping the key dependencies, and determining the safest way to approach the "Mikado"-your goal. A natural byproduct of this process is the Mikado Graph, a minimalistic, relevant, just-in-time roadmap and information radiator that reflects deep understanding of how your system works.

Real World Haskell: Code You Can Believe In


Bryan O'Sullivan - 2008
    You'll learn how to use Haskell in a variety of practical ways, from short scripts to large and demanding applications. Real World Haskell takes you through the basics of functional programming at a brisk pace, and then helps you increase your understanding of Haskell in real-world issues like I/O, performance, dealing with data, concurrency, and more as you move through each chapter. With this book, you will:Understand the differences between procedural and functional programming Learn the features of Haskell, and how to use it to develop useful programs Interact with filesystems, databases, and network services Write solid code with automated tests, code coverage, and error handling Harness the power of multicore systems via concurrent and parallel programming You'll find plenty of hands-on exercises, along with examples of real Haskell programs that you can modify, compile, and run. Whether or not you've used a functional language before, if you want to understand why Haskell is coming into its own as a practical language in so many major organizations, Real World Haskell is the best place to start.

Introduction to the Theory of Computation


Michael Sipser - 1996
    Sipser's candid, crystal-clear style allows students at every level to understand and enjoy this field. His innovative "proof idea" sections explain profound concepts in plain English. The new edition incorporates many improvements students and professors have suggested over the years, and offers updated, classroom-tested problem sets at the end of each chapter.