Software Engineer's Reference Book


Book Description

Software Engineer's Reference Book provides the fundamental principles and general approaches, contemporary information, and applications for developing the software of computer systems. The book is comprised of three main parts, an epilogue, and a comprehensive index. The first part covers the theory of computer science and relevant mathematics. Topics under this section include logic, set theory, Turing machines, theory of computation, and computational complexity. Part II is a discussion of software development methods, techniques and technology primarily based around a conventional view of the software life cycle. Topics discussed include methods such as CORE, SSADM, and SREM, and formal methods including VDM and Z. Attention is also given to other technical activities in the life cycle including testing and prototyping. The final part describes the techniques and standards which are relevant in producing particular classes of application. The text will be of great use to software engineers, software project managers, and students of computer science.




Software Engineer's Reference Book


Book Description

Covers all aspects of software engineering, including the underlying science and mathematics, software development technology, software project management and principles of applications. It also summarizes the state of the art in software engineering methods and tools.




Technical Writing


Book Description

Technical Writing: A Practical Guide for Engineers, Scientists, and Nontechnical Professionals, Second Edition enables readers to write, edit, and publish materials of a technical nature, including books, articles, reports, and electronic media. Written by a renowned engineer and widely published technical author, this guide complements traditional writer’s reference manuals on technical writing through presentation of first-hand examples that help readers understand practical considerations in writing and producing technical content. These examples illustrate how a publication originates as well as various challenges and solutions. The second edition contains new material in every chapter including new topics, additional examples, insights, tips and tricks, new vignettes and more exercises. Appendices have been added for writing checklists and writing samples. The references and glossary have been updated and expanded. In addition, a focus on writing for the nontechnical persons working in the technology world and the nonnative English speaker has been incorporated. Written in an informal, conversational style, unlike traditional college writing texts, the book also contains many interesting vignettes and personal stories to add interest to otherwise stodgy lessons.




Software Engineering at Google


Book Description

Today, software engineers need to know not only how to program effectively but also how to develop proper engineering practices to make their codebase sustainable and healthy. This book emphasizes this difference between programming and software engineering. How can software engineers manage a living codebase that evolves and responds to changing requirements and demands over the length of its life? Based on their experience at Google, software engineers Titus Winters and Hyrum Wright, along with technical writer Tom Manshreck, present a candid and insightful look at how some of the world’s leading practitioners construct and maintain software. This book covers Google’s unique engineering culture, processes, and tools and how these aspects contribute to the effectiveness of an engineering organization. You’ll explore three fundamental principles that software organizations should keep in mind when designing, architecting, writing, and maintaining code: How time affects the sustainability of software and how to make your code resilient over time How scale affects the viability of software practices within an engineering organization What trade-offs a typical engineer needs to make when evaluating design and development decisions




Guide to the Software Engineering Body of Knowledge (Swebok(r))


Book Description

In the Guide to the Software Engineering Body of Knowledge (SWEBOK(R) Guide), the IEEE Computer Society establishes a baseline for the body of knowledge for the field of software engineering, and the work supports the Society's responsibility to promote the advancement of both theory and practice in this field. It should be noted that the Guide does not purport to define the body of knowledge but rather to serve as a compendium and guide to the knowledge that has been developing and evolving over the past four decades. Now in Version 3.0, the Guide's 15 knowledge areas summarize generally accepted topics and list references for detailed information. The editors for Version 3.0 of the SWEBOK(R) Guide are Pierre Bourque (Ecole de technologie superieure (ETS), Universite du Quebec) and Richard E. (Dick) Fairley (Software and Systems Engineering Associates (S2EA)).




Become an Effective Software Engineering Manager


Book Description

Software startups make global headlines every day. As technology companies succeed and grow, so do their engineering departments. In your career, you'll may suddenly get the opportunity to lead teams: to become a manager. But this is often uncharted territory. How can you decide whether this career move is right for you? And if you do, what do you need to learn to succeed? Where do you start? How do you know that you're doing it right? What does "it" even mean? And isn't management a dirty word? This book will share the secrets you need to know to manage engineers successfully. Going from engineer to manager doesn't have to be intimidating. Engineers can be managers, and fantastic ones at that. Cast aside the rhetoric and focus on practical, hands-on techniques and tools. You'll become an effective and supportive team leader that your staff will look up to. Start with your transition to being a manager and see how that compares to being an engineer. Learn how to better organize information, feel productive, and delegate, but not micromanage. Discover how to manage your own boss, hire and fire, do performance and salary reviews, and build a great team. You'll also learn the psychology: how to ship while keeping staff happy, coach and mentor, deal with deadline pressure, handle sensitive information, and navigate workplace politics. Consider your whole department. How can you work with other teams to ensure best practice? How do you help form guilds and committees and communicate effectively? How can you create career tracks for individual contributors and managers? How can you support flexible and remote working? How can you improve diversity in the industry through your own actions? This book will show you how. Great managers can make the world a better place. Join us.




Embedded Systems Hardware for Software Engineers


Book Description

A PRACTICAL GUIDE TO HARDWARE FUNDAMENTALS Embedded Systems Hardware for Software Engineers describes the electrical and electronic circuits that are used in embedded systems, their functions, and how they can be interfaced to other devices. Basic computer architecture topics, memory, address decoding techniques, ROM, RAM, DRAM, DDR, cache memory, and memory hierarchy are discussed. The book covers key architectural features of widely used microcontrollers and microprocessors, including Microchip's PIC32, ATMEL's AVR32, and Freescale's MC68000. Interfacing to an embedded system is then described. Data acquisition system level design considerations and a design example are presented with real-world parameters and characteristics. Serial interfaces such as RS-232, RS-485, PC, and USB are addressed and printed circuit boards and high-speed signal propagation over transmission lines are covered with a minimum of math. A brief survey of logic families of integrated circuits and programmable logic devices is also contained in this in-depth resource. COVERAGE INCLUDES: Architecture examples Memory Memory address decoding Read-only memory and other related devices Input and output ports Analog-to-digital and digital-to-analog converters Interfacing to external devices Transmission lines Logic families of integrated circuits and their signaling characteristics The printed circuit board Programmable logic devices Test equipment: oscilloscopes and logic analyzers




The Missing README


Book Description

Key concepts and best practices for new software engineers — stuff critical to your workplace success that you weren’t taught in school. For new software engineers, knowing how to program is only half the battle. You’ll quickly find that many of the skills and processes key to your success are not taught in any school or bootcamp. The Missing README fills in that gap—a distillation of workplace lessons, best practices, and engineering fundamentals that the authors have taught rookie developers at top companies for more than a decade. Early chapters explain what to expect when you begin your career at a company. The book’s middle section expands your technical education, teaching you how to work with existing codebases, address and prevent technical debt, write production-grade software, manage dependencies, test effectively, do code reviews, safely deploy software, design evolvable architectures, and handle incidents when you’re on-call. Additional chapters cover planning and interpersonal skills such as Agile planning, working effectively with your manager, and growing to senior levels and beyond. You’ll learn: How to use the legacy code change algorithm, and leave code cleaner than you found it How to write operable code with logging, metrics, configuration, and defensive programming How to write deterministic tests, submit code reviews, and give feedback on other people’s code The technical design process, including experiments, problem definition, documentation, and collaboration What to do when you are on-call, and how to navigate production incidents Architectural techniques that make code change easier Agile development practices like sprint planning, stand-ups, and retrospectives This is the book your tech lead wishes every new engineer would read before they start. By the end, you’ll know what it takes to transition into the workplace–from CS classes or bootcamps to professional software engineering.




The Software Engineer's Guide to Freelance Consulting


Book Description

The Software Engineer's Guide to Freelance Consulting will help teach you to be an effective freelance software consultant, which will enable you make more money, dedicate more time to hobbies, spend more time with your loved-ones and even discover new businesses. Table of Contents: Chapter 1: Finding Clients We will literally map out the client acquisition skills that are paramount for you to develop and thrive in the business of software consulting. We will give you the step-by-step concrete TODOs to achieve competence and we explain some of the abstract theory. Chapter 2: Choosing a Rate How do some people charge $2/hr and others $500/hr? Where do you fit in? In this chapter we help you choose, justify and even increase your existing rate. Chapter 3: Keeping Yourself Educated How do you keep yourself from becoming outdated? How do you keep your skills in demand and the projects coming over time? We'll discuss that in this chapter. Chapter 4: Closing Deals You've got the interest but now how do you get the client to start working with you? We'll talk about closing sales as an engineer in this chapter. Chapter 5: Being Productive Productivity is a critical part of freelancing. Since most freelancers bill hourly it can make the difference between making $100,000/year and $300,000/year. This chapter contains tips to maximize your productivity as a freelancer. Chapter 6: Building & Maintaining Relationships Freelance consulting is a relationship-driven business. As engineers however, we tend to shy away from this. In this chapter we will talk about how you can build strong relationships and reduce the amount of time you need to spend selling yourself to new clients. Chapter 7: Legal Ideas Being a consultant comes with legal implications that can save your butt when things go wrong. In this chapter our very own Silicon Valley Lawyer Richard Burt will give you some tips of the trade. Chapter 8: Making Great First Impressions First impressions are a primer for excellent long-term relationships that will yield great value to you. This chapter will talk about first impressions as a freelance tech person. Chapter 9: Getting Paid Okay, so you've completed some contracts and now you're waiting to get paid. How do you get paid faster? Can you reduce your risk? We'll discuss these things in this chapter and even talk about how to deal with clients who don't pay. Chapter 10: Must-know Tax Tips As a freelance consultant, managing your tax effectively will save you a TON of money at the end of the year. In this chapter we'll run through some basic tips that will help you minimize your tax liability so you can keep more hard-earned money in your pocket. Chapter 11: Communicating Effectively Say the wrong things and you can find yourself staying up late at night on the weekend. Say the right things and you could find yourself making more money and spending more time with your family and friends. In this chapter we'll help you say less of the wrong things and more of the right things. Chapter 12: Freelancing Part-time What if you don't want to leave your current full-time job? What if you're in school full-time, or taking care of children? This chapter will help part-time freelancers. Chapter 13: Going Back to a "Regular" Coding Job In case you later decide freelancing is not for you, this chapter will help you ease back into a "regular" job without ruffling too many feathers. Chapter 14: Additional Resources Everyone who purchases the book receives an invitation to our Slack community. You'll even get a direct line to experienced freelancers (including the authors) that can help answer questions any day of the week.




Guide to Advanced Empirical Software Engineering


Book Description

This book gathers chapters from some of the top international empirical software engineering researchers focusing on the practical knowledge necessary for conducting, reporting and using empirical methods in software engineering. Topics and features include guidance on how to design, conduct and report empirical studies. The volume also provides information across a range of techniques, methods and qualitative and quantitative issues to help build a toolkit applicable to the diverse software development contexts