Making Software


Book Description

Many claims are made about how certain tools, technologies, and practices improve software development. But which claims are verifiable, and which are merely wishful thinking? In this book, leading thinkers such as Steve McConnell, Barry Boehm, and Barbara Kitchenham offer essays that uncover the truth and unmask myths commonly held among the software development community. Their insights may surprise you. Are some programmers really ten times more productive than others? Does writing tests first help you develop better code faster? Can code metrics predict the number of bugs in a piece of software? Do design patterns actually make better software? What effect does personality have on pair programming? What matters more: how far apart people are geographically, or how far apart they are in the org chart? Contributors include: Jorge Aranda Tom Ball Victor R. Basili Andrew Begel Christian Bird Barry Boehm Marcelo Cataldo Steven Clarke Jason Cohen Robert DeLine Madeline Diep Hakan Erdogmus Michael Godfrey Mark Guzdial Jo E. Hannay Ahmed E. Hassan Israel Herraiz Kim Sebastian Herzig Cory Kapser Barbara Kitchenham Andrew Ko Lucas Layman Steve McConnell Tim Menzies Gail Murphy Nachi Nagappan Thomas J. Ostrand Dewayne Perry Marian Petre Lutz Prechelt Rahul Premraj Forrest Shull Beth Simon Diomidis Spinellis Neil Thomas Walter Tichy Burak Turhan Elaine J. Weyuker Michele A. Whitecraft Laurie Williams Wendy M. Williams Andreas Zeller Thomas Zimmermann




Inventing Software


Book Description

Since the introduction of personal computers, software has emerged as a driving force in the global economy and a major industry in its own right. During this time, the U.S. government has reversed its prior policy against software patents and is now issuing thousands of such patents each year, provoking heated controversy among programmers, lawyers, scholars, and software companies. This book is the first to step outside of the highly-polarized debate and examine the current state of the law, its suitability to the realities of software development, and its implications for day-to-day software development. Written by a former lawyer and working software developer, Inventing Software provides a comprehensive overview of software patents, from the lofty perspectives of legal history and computing theory to the technical details and issues of actual patents. People interested in the legal aspect of software patents will find detailed technical analysis of actual patented software, the legal strategies behind the wording of the patents, and an analysis of the ease or difficulty of detecting infringements. Software developers will find ways to integrate patent planning into their standard software engineering practices, and a practical guide for studying and appraising their competitors' patents and safeguarding the value of their own. Intended primarily for programmers and software industry executives and managers, Inventing Software will also be useful, illuminating reading for attorneys and software company investors.




Making the Software Business Case


Book Description

"Just the understanding and insights you will pick up about how people encounter and cope with combinations of technical, social, political, and economic opportunities and challenges make the book a joy to read and worth much more than the price of it alone." --Barry Boehm, from the Foreword This practical handbook shows you how to build an effective business case when you need to justify--and persuade management to accept--software change or improvement. Based on real-world scenarios, the book covers the most common situations in which business case analyses are required and explains specific techniques that have proved successful in practice. Drawing on years of experience in winning the "battle of the budget," the author shows you how to use commonly accepted engineering economic arguments to make your numbers "sing" to management. The book provides examples of successful business cases; along the way, tables, tools, facts, figures, and metrics guide you through the entire analytic process. Writing in a concise and witty style, the author makes this valuable guidance accessible to every software engineer, manager, and IT professional. Highlights include: How and where business case analyses fit into the software and IT life cycle process Explanations of the most common tools for business case analysis, such as present-value, return-on-investment, break-even, and cost/benefit calculation Tying the business process to the software development life cycle Packaging the business case for management consumption Frameworks and guidelines for justifying IT productivity, quality, and delivery cycle improvement strategies Case studies for applying appropriate decision situations to software process improvement Strategic guidelines for various business case analyses With this book in hand, you will find the facts, examples, hard data, and case studies needed for preparing your own winning business cases in today's complex software environment.




Software for Your Head


Book Description

Most people have experienced--at least once in their lives--the incomparable thrill of being part of a great team effort. They can remember the unity of purpose they experienced, the powerful passion that inspired them, and the incredible results they achieved. People who have been on a great team can attest that the difference between being on a team with a shared vision and being on a team without one is the difference between joy and misery. In 1996, Jim and Michele McCarthy, after successful careers leading software development teams at Microsoft and elsewhere, set out to discover a set of repeatable group behaviors that would always lead to the formation of a state of shared vision for any team. They hoped for a practical, communicable, and reliable process that could be used to create the best possible teams every time it was applied. They established a hands-on laboratory for the study and teaching of high-performance teamwork. In a controlled simulation environment, their principle research and teaching effort--the McCarthy Software Development BootCamp--challenged dozens of real-world, high-tech teams to produce and deliver a product. Teams were given a product development assignment, and instructed to form a team, envision the product, agree on how to make it, then design, build, and ship it on time. By repeating these simulations time after time, with the new teams building on the learning from previous teams, core practices emerged that were repeatedly successful. These were encoded as patterns and protocols. Software for Your Head is the first publication of the most significant results of the authors' unprecedented five-year investigation into the dynamics of contemporary teams. The information in this book will provide a means for any team to create for itself a compelling state of shared vision. 0201604566B09042001




Invent Your Own Computer Games with Python, 4th Edition


Book Description

Invent Your Own Computer Games with Python will teach you how to make computer games using the popular Python programming language—even if you’ve never programmed before! Begin by building classic games like Hangman, Guess the Number, and Tic-Tac-Toe, and then work your way up to more advanced games, like a text-based treasure hunting game and an animated collision-dodging game with sound effects. Along the way, you’ll learn key programming and math concepts that will help you take your game programming to the next level. Learn how to: –Combine loops, variables, and flow control statements into real working programs –Choose the right data structures for the job, such as lists, dictionaries, and tuples –Add graphics and animation to your games with the pygame module –Handle keyboard and mouse input –Program simple artificial intelligence so you can play against the computer –Use cryptography to convert text messages into secret code –Debug your programs and find common errors As you work through each game, you’ll build a solid foundation in Python and an understanding of computer science fundamentals. What new game will you create with the power of Python? The projects in this book are compatible with Python 3.




The Genie in the Machine


Book Description

The Genie in the Machine examines how computers are being used to automate the process of inventing, and explains the steps that high-tech companies, patent lawyers, inventors, and consumers should take to thrive in the upcoming Artificial Invention Age.




Starting a Tech Business


Book Description

The non-technical guide to building a booming tech-enabled business Thinking of starting a technology-enabled business? Or maybe you just want to increase your technology mojo so you can do your job better? You do not need to learn programming to participate in the development of today’s hottest technologies. But there are a few easy-to-grasp foundation concepts that will help you engage with a technical team. Starting a Tech Business explains in practical, actionable terms how to formulate and reality test new ideas package what you learn into frameworks that are highly actionable for engineers understand key foundation concepts about modern software and systems participate in an agile/lean development team as the ‘voice of the customer’ Even if you have a desire to learn to program (and I highly recommend doing whatever unlocks your ‘inner tinkerer’), these foundation concepts will help you target what exactly you want to understand about hands-on technology development. While a decade ago the barriers to creating a technology-enabled business required a pole vault, getting started today only requires a determined step in the right direction. Starting a Tech Business supplies the tools prospective entrepreneurs and business enterprises need to avoid common pitfalls and succeed in the fast-paced world of high-tech business. Successful execution requires thoughtful, evidence-based product formulation, well-articulated design, economic use of systems, adaptive management of technical resources, and empathetic deployment to customers. Starting a Tech Business offers practical checklists and frameworks that business owners, entrepreneurs, and professionals can apply to any tech-based business idea, whether you’re developing software and products or beginning a technology-enabled business. You’ll learn: 1. How to apply today’s leading management frameworks to a tech business 2. How to package your product idea in a way that’s highly actionable for your technical team 3. How to ask the right questions about technology selection and product architecture 4. Strategies to leverage what your technology ecosystem has to offer 5. How to carefully define the roles on your team, and then effectively evaluate candidates 6. The most common disconnects between engineers and business people and how to avoid them 7. How you can apply process design to your tech business without stifling creativity 8. The steps to avoid the most common pitfalls tech founders encounter Now is one of the best times to start a technology-enabled business, and anyone can do it with the right amount and kind of preparation. Starting a Tech Business shows you how to move a product idea to market quickly and inexpensively—and to tap into the stream of wealth that a tech business can provide.




Beyond Software Architecture


Book Description

This text aims to help all members of the development team make the correct nuts-and-bolts architecture decisions that ensure project success.




Code Complete


Book Description

Widely considered one of the best practical guides to programming, Steve McConnell’s original CODE COMPLETE has been helping developers write better software for more than a decade. Now this classic book has been fully updated and revised with leading-edge practices—and hundreds of new code samples—illustrating the art and science of software construction. Capturing the body of knowledge available from research, academia, and everyday commercial practice, McConnell synthesizes the most effective techniques and must-know principles into clear, pragmatic guidance. No matter what your experience level, development environment, or project size, this book will inform and stimulate your thinking—and help you build the highest quality code. Discover the timeless techniques and strategies that help you: Design for minimum complexity and maximum creativity Reap the benefits of collaborative development Apply defensive programming techniques to reduce and flush out errors Exploit opportunities to refactor—or evolve—code, and do it safely Use construction practices that are right-weight for your project Debug problems quickly and effectively Resolve critical construction issues early and correctly Build quality into the beginning, middle, and end of your project




How to Transform Your Ideas Into Software Products


Book Description

Create products people will pay for before they're even built. You have an idea in your head. Maybe even more than one! But you're stuck simmering on it because you just don't know if it's the right one to pursue. You're wondering whether people will even use your product, let alone pay for it. The uncertainty is overwhelming, so you do ... nothing. But what if you were confident that your idea would help people? How would you feel if you turned your passion into a living, breathing software product ... and you made money from it? Poornima Vijayashanker has founded 3 startups and personally guided 100+ people who have launched products that make 6 and 7 figures per year. Everyone started with varying levels of technical and business know-how-or none at all-but everyone was passionate about an idea. Now, Poornima travels around the country teaching people how to bring their ideas to life. With the right roadmap in front of you, you can launch a winning software product too. "But I don't know how to code or run a business." The tangled world of startups and software development is intimidating and hard to navigate. To start with, not every entrepreneur knows how to code. Even the ones who do still need other skills to succeed; they need to design a good user experience, figure out how to attract paying customers, and hire and fire technical talent. There are hundreds of tools and services to help build products, and they need to know which ones are useless and which ones will save them time. They'll eventually run out of cash to keep paying rent and developing, and will need to figure out whether to get investors, apply to an accelerator, or bootstrap. Trial and error takes years of research, setbacks, and heartache ... not to mention a lot of money. You could go to design school, teach yourself how to code in the off-hours, and spend thousands of dollars testing marketing campaigns. Or you could... Follow a proven guide for turning your ideas into successful products (and even 6- to 7-figure businesses). This book will teach you how to: - Validate your idea before you spend time and money on it. - Talk to prospective customers without feeling awkward or pushy. - Leave competitors in the dust with good design and positioning. - Save time and heartache by building only the features people will actually use. - Hire talented people to build your product for you. - Get more paying customers with scrappy marketing strategies. - Find money to fund your business. This guide includes time-tested strategies and tools that entrepreneurs love: Over 13 case studies with the inside scoop on companies like Mint.com, AirBnB, and Zappos. The exact systems and tools Poornima and other startup founders have used to build rock-solid products. 7 interviews with successful startup founders and early employees like: - Melody McCloskey, CEO & Co-Founder of StyleSeat - Brittany Forsyth, Head of Human Relations at Shopify - Ben Congleton, CEO & Co-Founder of Olark - Julia Grace, Head of Engineering at Tindie - Thomson Nguyen, CEO & Co-Founder of Framed Data - Alyssa Ravasio, CEO & Co-Founder of Hipcamp - David Cummings, CEO & Co-Founder of Pardot