Practical Remote Pair Programming


Book Description

A practical guide for developers, development teams, and managers to successfully implement remote pair programming techniques and styles that better fit their organization's environment Key FeaturesImplement remote pair programming best practices in your organization to increase productivity in software development teamsOvercome the challenges in communication while working with distributed teams across the globeExplore remote pair programming tools and learn smart ways to use them efficientlyBook Description Remote pair programming takes pair programming practices to the next level by allowing you and your team members to work effectively in distributed teams. This helps ensure that you continuously improve code quality, share equal ownership of the code, facilitate knowledge sharing, and reduce bugs in your code. If you want to adopt remote pair programming within your development team, this book is for you. Practical Remote Pair Programming takes you through various techniques and best practices for working with the wide variety of tools available for remote pair programming. You'll understand the significance of pair programming and how it can help improve communication within your team. As you advance, you’ll get to grips with different remote pair programming strategies and find out how to choose the most suitable style for your team and organization. The book will take you through the process of setting up video and audio tools, screen sharing tools, and the integrated development environment (IDE) for your remote pair programming setup. You'll also be able to enhance your remote pair programming experience with source control and remote access tools. By the end of this book, you'll have the confidence to drive the change of embracing remote pair programming in your organization and guide your peers to improve productivity while working remotely. What you will learnDevelop a structured organizational approach to implementing pair programming and using it effectivelyUnderstand how pair programming fosters better communication inside and outside the teamOrganize remote pair programming and choose the right style for your organizationSet up screen sharing, IDE, source control rules, audio, and video for your remote pair programming setupUse various pair programming techniques and styles in the context of a remote environmentEnhance your remote pair programming experience with source control and remote access toolsWho this book is for This book is for any developer who wants to understand the different practical aspects involved in remote pair programming and adopt them in their existing development teams. If you’re a team leader or technical manager, this book will serve as a manual for implementing remote pair programming covering the best resources for you to manage communication and collaboration using pair programming with your team members working remotely in distributed teams.




100 Java Mistakes and How to Avoid Them


Book Description

Dodge the common mistakes that even senior developers make, take full advantage of static analysis tools, and deliver robust and error-free Java code. Inside 100 Java Mistakes and How To Avoid Them you will learn how to: Write better Java programs Recognize common mistakes during programming Create fewer bugs and save time for debugging and testing Get help from static analyzers during programming Configure static analysis tools to reduce amount of false reports Extend static analysis tools with custom plugins Whenever you make a mistake writing Java, it’s almost guaranteed that someone else has made it before! In 100 Java Mistakes and How To Avoid Them you’ll learn about the common and the not-so-common antipatterns, errors, and tricky bits that trip up almost every Java developer. Discover the bugs that are hiding in your Java code, and explore useful and effective ways to dodge them—from unit tests and defensive coding to static analysis tools like IntelliJ IDEA, SonarLint, and Error Prone. Purchase of the print book includes a free eBook in PDF, Kindle, and ePub formats from Manning Publications. About the technology Minor bugs you might not notice when writing code can quickly spin out of control in production, costing you time and money to fix. The solution is clear: spot the mistakes before you make them! This one-of-a-kind guide makes it just that easy. It shines a spotlight on the errors most often made by Java developers, so you can consistently deliver exceptional Java code. About the book 100 Java Mistakes and How To Avoid Them shows you how to improve your Java code by identifying and dodging common programming problems. Inside, you’ll find one hundred errors, from missteps that trip up beginners to mistakes even Java experts don’t know they’re making. Each mistake is accompanied by concrete troubleshooting advice, as well as ways of using modern static analysis tools like IntelliJ IDEA and SonarLint to identify and fix the problem. You’ll quickly see why static analysis can be so helpful for writing your code, and even learn how to write your own useful plugins! About the reader For Java developers of all skill levels. About the author Tagir Valeev is a technical lead in JetBrains GmbH, where he works in the Java team and gives Java language support in IntelliJ IDEA. Tagir designed and developed many code inspections for IntelliJ IDEA built-in static analyzer. He is a Java Champion, and holds a PhD in computer science.




Real-World Implementation of C# Design Patterns


Book Description

Build robust applications in C# easily using effective and popular design patterns and best practices Key FeaturesRecognize solutions to common problems in software design with C#Explore real-world applications of design patterns that can be used in your everyday workGet to grips with 14 patterns and their design implementationsBook Description As a software developer, you need to learn new languages and simultaneously get familiarized with the programming paradigms and methods of leveraging patterns, as both a communications tool and an advantage when designing well-written, easy-to-maintain code. Design patterns, being a collection of best practices, provide the necessary wisdom to help you overcome common sets of challenges in object-oriented design and programming. This practical guide to design patterns helps C# developers put their programming knowledge to work. The book takes a hands-on approach to introducing patterns and anti-patterns, elaborating on 14 patterns along with their real-world implementations. Throughout the book, you'll understand the implementation of each pattern, as well as find out how to successfully implement those patterns in C# code within the context of a real-world project. By the end of this design patterns book, you'll be able to recognize situations that tempt you to reinvent the wheel, and quickly avoid the time and cost associated with solving common and well-understood problems with battle-tested design patterns. What you will learnGet to grips with patterns, and discover how to conceive and document themExplore common patterns that may come up in your everyday workRecognize common anti-patterns early in the processUse creational patterns to create flexible and robust object structuresEnhance class designs with structural patternsSimplify object interaction and behavior with behavioral patternsWho this book is for This book is for beginner and mid-level software developers who are looking to take their object-oriented programs or software designing skills to the next level by learning to leverage common patterns. A firm grasp of programming fundamentals and classical object-oriented programming (OOP) using languages like C#, C++, Objective-C, or Java is expected.




Technical Agile Coaching with the Samman Method


Book Description

Samman Technical Coaching is an approach to Agile training that focuses on technical questions concerning how code is written. It is a highly effective way of increasing agility in your software development organization. The first part of the Samman method involves the coach working in an ensemble with development teams, programming in their production codebase. This hands-on mentoring is accompanied by daily "learning hour" sessions for mastering particular techniques. In this book you will discover how to put Samman into practice, improve your coding procedures and how you collaborate. It is a practical guide for aspiring and experienced coaches looking for fresh ideas and new ways of teaching Agile. It is both challenging and fun for developers and coaches alike.




Remote Pairing


Book Description

You've heard about pair programming's benefits: fewer bugs, improved skills, and faster delivery. But what happens when you want to pair with someone in another city, country, or even hemisphere? With the right tools, you won't have to relocate to refactor. In this book, you'll learn techniques used by the most productive remote programmers in the industry to pair with anyone on the globe on any kind of project. You'll use collaborative editors, screen sharing, secure networking, and virtualization to create a remote pairing environment that feels as if your partner is sitting right next to you.




Pair Programming Illuminated


Book Description

Written as instruction for pair programming newbies, with practical improvement tips for those experienced with the concept, this guide explores the operational aspects and unique fundamentals of pair programming; information such as furniture set-up, pair rotation, and weeding out bad pairs.




Modern Software Engineering


Book Description

Improve Your Creativity, Effectiveness, and Ultimately, Your Code In Modern Software Engineering, continuous delivery pioneer David Farley helps software professionals think about their work more effectively, manage it more successfully, and genuinely improve the quality of their applications, their lives, and the lives of their colleagues. Writing for programmers, managers, and technical leads at all levels of experience, Farley illuminates durable principles at the heart of effective software development. He distills the discipline into two core exercises: learning and exploration and managing complexity. For each, he defines principles that can help you improve everything from your mindset to the quality of your code, and describes approaches proven to promote success. Farley's ideas and techniques cohere into a unified, scientific, and foundational approach to solving practical software development problems within realistic economic constraints. This general, durable, and pervasive approach to software engineering can help you solve problems you haven't encountered yet, using today's technologies and tomorrow's. It offers you deeper insight into what you do every day, helping you create better software, faster, with more pleasure and personal fulfillment. Clarify what you're trying to accomplish Choose your tools based on sensible criteria Organize work and systems to facilitate continuing incremental progress Evaluate your progress toward thriving systems, not just more "legacy code" Gain more value from experimentation and empiricism Stay in control as systems grow more complex Achieve rigor without too much rigidity Learn from history and experience Distinguish "good" new software development ideas from "bad" ones Register your book for convenient access to downloads, updates, and/or corrections as they become available. See inside book for details.




The Practice of Programming


Book Description

With the same insight and authority that made their book The Unix Programming Environment a classic, Brian Kernighan and Rob Pike have written The Practice of Programming to help make individual programmers more effective and productive. The practice of programming is more than just writing code. Programmers must also assess tradeoffs, choose among design alternatives, debug and test, improve performance, and maintain software written by themselves and others. At the same time, they must be concerned with issues like compatibility, robustness, and reliability, while meeting specifications. The Practice of Programming covers all these topics, and more. This book is full of practical advice and real-world examples in C, C++, Java, and a variety of special-purpose languages. It includes chapters on: debugging: finding bugs quickly and methodically testing: guaranteeing that software works correctly and reliably performance: making programs faster and more compact portability: ensuring that programs run everywhere without change design: balancing goals and constraints to decide which algorithms and data structures are best interfaces: using abstraction and information hiding to control the interactions between components style: writing code that works well and is a pleasure to read notation: choosing languages and tools that let the machine do more of the work Kernighan and Pike have distilled years of experience writing programs, teaching, and working with other programmers to create this book. Anyone who writes software will profit from the principles and guidance in The Practice of Programming.




Beginning C++ Programming


Book Description

Modern C++ at your fingertips! About This Book This book gets you started with the exciting world of C++ programming It will enable you to write C++ code that uses the standard library, has a level of object orientation, and uses memory in a safe and effective way It forms the basis of programming and covers concepts such as data structures and the core programming language Who This Book Is For A computer, an internet connection, and the desire to learn how to code in C++ is all you need to get started with this book. What You Will Learn Get familiar with the structure of C++ projects Identify the main structures in the language: functions and classes Feel confident about being able to identify the execution flow through the code Be aware of the facilities of the standard library Gain insights into the basic concepts of object orientation Know how to debug your programs Get acquainted with the standard C++ library In Detail C++ has come a long way and is now adopted in several contexts. Its key strengths are its software infrastructure and resource-constrained applications, including desktop applications, servers, and performance-critical applications, not to forget its importance in game programming. Despite its strengths in these areas, beginners usually tend to shy away from learning the language because of its steep learning curve. The main mission of this book is to make you familiar and comfortable with C++. You will finish the book not only being able to write your own code, but more importantly, you will be able to read other projects. It is only by being able to read others' code that you will progress from a beginner to an advanced programmer. This book is the first step in that progression. The first task is to familiarize you with the structure of C++ projects so you will know how to start reading a project. Next, you will be able to identify the main structures in the language, functions, and classes, and feel confident being able to identify the execution flow through the code. You will then become aware of the facilities of the standard library and be able to determine whether you need to write a routine yourself, or use an existing routine in the standard library. Throughout the book, there is a big emphasis on memory and pointers. You will understand memory usage, allocation, and access, and be able to write code that does not leak memory. Finally, you will learn about C++ classes and get an introduction to object orientation and polymorphism. Style and approach This straightforward tutorial will help you build strong skills in C++ programming, be it for enterprise software or for low-latency applications such as games or embedded programming. Filled with examples, this book will take you gradually up the steep learning curve of C++.




Programming Beyond Practices


Book Description

Writing code is the easy part of your work as a software developer. This practical book lets you explore the other 90%—everything from requirements discovery and rapid prototyping to business analysis and designing for maintainability. Instead of providing neatly packaged advice from on high, author Gregory Brown presents detailed examples of the many problems developers encounter, including the thought process it takes to solve them. He does this in an unusual and entertaining fashion by making you the main character in a series of chapter-length stories. As these stories progress, the examples become more complex, and your responsibilities increase. Together, these stories take you on a journey that will make you question and refine the way you think about, and work on, software projects. Steps in this unique journey include: Using prototypes to explore project ideas Spotting hidden dependencies in incremental changes Identifying the pain points of service integrations Developing a rigorous approach towards problem-solving Designing software from the bottom up Data modeling in an imperfect world Gradual process improvement as an antidote for over-commitment The future of software development