nexusstc/A Friendly Guide to Software Development: What You Should Know Without Being a Developer/e9336d31cd2c399493e317119c169e1a.pdf
A friendly guide to software development : what you should know without being a developer 🔍
Leticia Portella
Apress : Imprint: Apress, Friendly Guides to Technology, Friendly Guides to Technology, 1, 2023
English [en] · PDF · 6.7MB · 2023 · 📘 Book (non-fiction) · 🚀/lgli/lgrs/nexusstc/zlib · Save
description
Software is everywhere, but despite being so common and useful, it remains magical and mysterious to many. Still, more and more people are finding themselves working for tech companies, or with an array of software products, services, and tools. This can segregate those who understand tech from those that don’t. But it doesn’t have to be this way. This book aims to bring these two worlds closer together, allowing people to learn basic concepts of software development in a casual and straight-forward way. Assuming no previous technical knowledge, you’ll embark on a journey where you can understand and build a new software project from scratch until it is an advanced product with multiple users. Imagine moving from a “traditional” company and suddenly finding yourself in one where software is the main product or is a foundational component to it. One is often left to wade through the infinite concepts while still doing their actual jobs. This book closes that gap, improving communication between technical and non-technical parties. A Friendly Guide to Software Development makes technical concepts broadly available and easy to understand. In doing so, you'll be able to achieve better communication, which will undoubtedly lead to better working relationships, a better working environment, and ultimately better software. What You'll Learn See how a new software project is created Examine the basics of software development and architecture Know which questions to ask to avoid potential problems and pitfalls Start using and building software projects Who This Book Is For Non-technical people like business and project managers who need to work closely with software developers and teams People who are interested in building a software system but don’t know where to start. Programmers who want to jump to development but have no experience in the industry and its common concepts
Alternative filename
lgli/Portella-A Friendly Guide to Software Development.pdf
Alternative filename
lgrsnf/Portella-A Friendly Guide to Software Development.pdf
Alternative filename
zlib/Computers/Programming/Leticia Portella/A Friendly Guide to Software Development: What You Should Know Without Being a Developer_118539146.pdf
Alternative author
Portella, Leticia
Alternative publisher
Apress, Incorporated
Alternative publisher
Apress L. P.
Alternative edition
Friendly Guides to Technology, 1st ed. 2023, Berkeley, CA, 2023
Alternative edition
Friendly Guides to Technology, Berkeley, CA, 2022
Alternative edition
Friendly guides to technology, New York, 2023
Alternative edition
Friendly guides to technology, New York, 2022
Alternative edition
United States, United States of America
Alternative edition
PT, 2022
metadata comments
{"container_title":"Friendly Guides to Technology","content":{"parsed_at":1697946856,"source_extension":"epub"},"edition":"1","isbns":["1484289684","1484289692","9781484289686","9781484289693"],"issns":["2731-9350","2731-9369"],"last_page":312,"publisher":"Apress","series":"Friendly Guides to Technology","source":"crossref"}
Alternative description
Table of Contents
About the Author
About the Technical Reviewer
Acknowledgments
Foreword
Preface
Part I: Getting to Know This Familiar Unknown World
Chapter 1: Welcome!
1.1 Why Am I Writing This Book?
1.2 How Will We Learn Together?
Chapter 2: The Birth of a Software Project
2.1 Understanding the Hypothesis
2.2 Validating the Hypothesis
2.3 Preparing for a User Interview
2.4 Creating JollyFarm User’s Questions
2.5 Allow Yourself to Change Directions
2.6 Defining Your Target
2.7 Narrowing Down the Users
2.8 Define What Should Be Built First
2.9 Understanding Software Requirements
2.10 Requirements Are Tricky!
2.11 Defining Requirements of the JollyFarm Ecommerce
2.12 Chapter Summary
2.13 Further Reading
Chapter 3: You Are Surrounded by This World!
3.1 Two Sides of the Same Coin
3.2 Accessing the Internet
3.2.1 The Logic Behind Web Addresses
3.3 Where Does Software Exist on the Internet?
3.4 Software and Programming
3.5 When Code Is Working
3.6 From the Developer’s Computer to the User
3.7 Chapter Summary
3.8 Further Reading
Part II: Let’s Get Technical!
Chapter 4: What Happens When You Open a Website?
4.1 Finding a Single Computer in the Web
4.2 Communication over the Internet
4.2.1 The Required Part
4.2.2 Where We Send Data
4.2.3 Information About Information!
4.3 Protecting Your Data: Why the S in HTTPS Means So Much
4.4 Status Code: Discover What Happened with Three Numbers
4.5 What Kind of Website Is Our Landing Page?
4.6 Dynamic Systems
4.7 An Introduction to Software Architecture
4.8 Chapter Summary
4.9 Further Reading
Chapter 5: Frontend: The Tip of the Iceberg
5.1 A Web Page Skeleton
5.1.1 HTML Is a Tree!
5.1.2 The Importance of HTML in Accessibility
5.1.3 HTML Is the Base of It All!
5.2 Let’s Add Color!
5.3 Let’s Add Movement!
5.4 Don’t Need to Reinvent the Wheel: Use Frameworks
5.5 Intelligent Clients
5.6 Mobile Technologies
5.7 JollyFarm’s Frontend
5.8 Chapter Summary
5.9 Further Reading
Chapter 6: Backend: What’s Underwater
6.1 A Closer Look on Servers
6.2 What Happens When We Create a New Product?
6.3 The Concept of APIs
6.4 Databases
6.4.1 Relational Databases
6.4.2 Retrieving Information on Relational Databases
6.4.3 Nonrelational Databases
6.4.4 Which One to Choose?
6.5 Chapter Summary
6.6 Further Reading
Part III: Working on Software Projects
Chapter 7: The Big Questions While Starting a Project
7.1 Which Programming Language?
7.1.1 Why So Many Programming Languages Exist?
7.1.2 Programming Languages Can Be More or Less Strict
7.1.3 Programming Language Beyond the Scopes of Your Project
7.1.4 I Still Don’t Know Which One to Use!
7.2 Which Framework?
7.2.1 What a Framework Can Do?
7.3 Which Architecture?
7.3.1 You’ll Never Get a 100%
7.4 Which Database?
7.5 Don’t Give Answers to Questions That Weren’t Made
7.6 Let’s Answer Some of These Questions!
7.7 Chapter Summary
7.8 Further Reading
Chapter 8: How Do We Build Software?
8.1 The Old Way
8.2 There Must Be a Better Way!
8.3 Shared Strategies
8.3.1 User Stories
8.3.2 Kanban Board
8.3.3 Daily Standups
8.3.4 Pair Programming
8.3.5 Continuous Delivery
8.4 Beyond Agile
8.5 Chapter Summary
8.6 Further Reading
Part IV: What You Should Consider When Building Software
Chapter 9: Building Today Thinking of Tomorrow
9.1 But What Does It Mean to Have a “Good” Code?
9.2 Naming Is Everything!
9.3 Software Is Made of Small Pieces
9.4 A Second Pair of Eyes: The Importance of Code Review
9.5 Versioning
9.6 Documentation
9.6.1 Documentation at Code Level
9.6.2 Documentation at Development Level
9.6.3 Documentation at a User Level
9.7 Maintainability at JollyFarm
9.8 Chapter Summary
9.9 Further Reading
Chapter 10: Guaranteeing Software Quality
10.1 What Does It Mean to Test a Software?
10.2 Is There Anything Else?
10.3 Beyond Unit Tests
10.4 Tests Save Money
10.5 Tests Also Increase Code Quality
10.6 When to Test?
10.7 Tests As the Driver of Development
10.8 Testing Performance
10.9 JollyFarm Is Launched!
10.10 Chapter Summary
10.11 Further Reading
Chapter 11: Working 24/7: Making Software Available at All Times
11.1 What Indicates a Reliable System?
11.2 Monitoring Is the Basis of Reliable Systems
11.3 What Happens When Something Is Wrong
11.4 What Can Go Wrong?
11.4.1 Hardware Faults
11.4.2 Software Errors
11.4.3 Human Errors
11.5 Some Strategies for Safer Deploys
11.6 Using Architecture to Prevent Known Points of Failure
11.7 Can We Avoid a Crisis?
11.8 Chapter Summary
11.9 Further Reading
Chapter 12: The Monster Behind the Door: Technical Debt and Legacy Code
12.1 Technical Debt
12.2 Technical Debt Is the Same As “Bad Code”?
12.3 When We Go Bankrupt: Legacy System
12.4 Why Can’t We Just Move Away from a Legacy System?
12.5 When you have to work with a Legacy System
12.6 Fighting Back on Poor Quality
12.7 Learning from Legacy
12.8 What’s Next?
12.9 Chapter Summary
12.10 Further Reading
Part V: Human Aspects of Building Software
Chapter 13: A Deeper Look to What Influence Software Teams
13.1 On-Call Rotation
13.2 External and Unpredicted Work
13.3 Developer Tools
13.4 Interruptions
13.5 Interviews
13.6 Communication
13.7 Timezones Are Hard
13.8 Changing Priorities
13.9 Glue Work
13.10 Team Diversity
13.11 Team Moral and Mental Health
13.12 What Now?
13.13 Chapter Summary
13.14 Further Reading
Chapter 14: The Role of the Developer
14.1 What Does a Developer Do Anyway?
14.2 Which Level Am I?
14.3 The Fallacy of the Superhero Developer
14.4 The “Soft” Skills
14.5 Where Are the Juniors?
14.6 The Ideal Team
14.7 Chapter Summary
14.8 Further Reading
Chapter 15: Building Software Is More Than Developers
15.1 The Role of the Managers
15.1.1 The Developer Manager
15.1.2 The Product Manager
15.1.3 The Project Manager
15.2 The Role of the Business Specialist
15.3 The Role of the Designer
15.4 The Role of the Data Analyst
15.5 The Role of the Customer Support
15.6 The Role of the Technical Writer
15.7 The Role of... You!
15.8 Further Reading
Glossary
Acronyms
Index
About the Author
About the Technical Reviewer
Acknowledgments
Foreword
Preface
Part I: Getting to Know This Familiar Unknown World
Chapter 1: Welcome!
1.1 Why Am I Writing This Book?
1.2 How Will We Learn Together?
Chapter 2: The Birth of a Software Project
2.1 Understanding the Hypothesis
2.2 Validating the Hypothesis
2.3 Preparing for a User Interview
2.4 Creating JollyFarm User’s Questions
2.5 Allow Yourself to Change Directions
2.6 Defining Your Target
2.7 Narrowing Down the Users
2.8 Define What Should Be Built First
2.9 Understanding Software Requirements
2.10 Requirements Are Tricky!
2.11 Defining Requirements of the JollyFarm Ecommerce
2.12 Chapter Summary
2.13 Further Reading
Chapter 3: You Are Surrounded by This World!
3.1 Two Sides of the Same Coin
3.2 Accessing the Internet
3.2.1 The Logic Behind Web Addresses
3.3 Where Does Software Exist on the Internet?
3.4 Software and Programming
3.5 When Code Is Working
3.6 From the Developer’s Computer to the User
3.7 Chapter Summary
3.8 Further Reading
Part II: Let’s Get Technical!
Chapter 4: What Happens When You Open a Website?
4.1 Finding a Single Computer in the Web
4.2 Communication over the Internet
4.2.1 The Required Part
4.2.2 Where We Send Data
4.2.3 Information About Information!
4.3 Protecting Your Data: Why the S in HTTPS Means So Much
4.4 Status Code: Discover What Happened with Three Numbers
4.5 What Kind of Website Is Our Landing Page?
4.6 Dynamic Systems
4.7 An Introduction to Software Architecture
4.8 Chapter Summary
4.9 Further Reading
Chapter 5: Frontend: The Tip of the Iceberg
5.1 A Web Page Skeleton
5.1.1 HTML Is a Tree!
5.1.2 The Importance of HTML in Accessibility
5.1.3 HTML Is the Base of It All!
5.2 Let’s Add Color!
5.3 Let’s Add Movement!
5.4 Don’t Need to Reinvent the Wheel: Use Frameworks
5.5 Intelligent Clients
5.6 Mobile Technologies
5.7 JollyFarm’s Frontend
5.8 Chapter Summary
5.9 Further Reading
Chapter 6: Backend: What’s Underwater
6.1 A Closer Look on Servers
6.2 What Happens When We Create a New Product?
6.3 The Concept of APIs
6.4 Databases
6.4.1 Relational Databases
6.4.2 Retrieving Information on Relational Databases
6.4.3 Nonrelational Databases
6.4.4 Which One to Choose?
6.5 Chapter Summary
6.6 Further Reading
Part III: Working on Software Projects
Chapter 7: The Big Questions While Starting a Project
7.1 Which Programming Language?
7.1.1 Why So Many Programming Languages Exist?
7.1.2 Programming Languages Can Be More or Less Strict
7.1.3 Programming Language Beyond the Scopes of Your Project
7.1.4 I Still Don’t Know Which One to Use!
7.2 Which Framework?
7.2.1 What a Framework Can Do?
7.3 Which Architecture?
7.3.1 You’ll Never Get a 100%
7.4 Which Database?
7.5 Don’t Give Answers to Questions That Weren’t Made
7.6 Let’s Answer Some of These Questions!
7.7 Chapter Summary
7.8 Further Reading
Chapter 8: How Do We Build Software?
8.1 The Old Way
8.2 There Must Be a Better Way!
8.3 Shared Strategies
8.3.1 User Stories
8.3.2 Kanban Board
8.3.3 Daily Standups
8.3.4 Pair Programming
8.3.5 Continuous Delivery
8.4 Beyond Agile
8.5 Chapter Summary
8.6 Further Reading
Part IV: What You Should Consider When Building Software
Chapter 9: Building Today Thinking of Tomorrow
9.1 But What Does It Mean to Have a “Good” Code?
9.2 Naming Is Everything!
9.3 Software Is Made of Small Pieces
9.4 A Second Pair of Eyes: The Importance of Code Review
9.5 Versioning
9.6 Documentation
9.6.1 Documentation at Code Level
9.6.2 Documentation at Development Level
9.6.3 Documentation at a User Level
9.7 Maintainability at JollyFarm
9.8 Chapter Summary
9.9 Further Reading
Chapter 10: Guaranteeing Software Quality
10.1 What Does It Mean to Test a Software?
10.2 Is There Anything Else?
10.3 Beyond Unit Tests
10.4 Tests Save Money
10.5 Tests Also Increase Code Quality
10.6 When to Test?
10.7 Tests As the Driver of Development
10.8 Testing Performance
10.9 JollyFarm Is Launched!
10.10 Chapter Summary
10.11 Further Reading
Chapter 11: Working 24/7: Making Software Available at All Times
11.1 What Indicates a Reliable System?
11.2 Monitoring Is the Basis of Reliable Systems
11.3 What Happens When Something Is Wrong
11.4 What Can Go Wrong?
11.4.1 Hardware Faults
11.4.2 Software Errors
11.4.3 Human Errors
11.5 Some Strategies for Safer Deploys
11.6 Using Architecture to Prevent Known Points of Failure
11.7 Can We Avoid a Crisis?
11.8 Chapter Summary
11.9 Further Reading
Chapter 12: The Monster Behind the Door: Technical Debt and Legacy Code
12.1 Technical Debt
12.2 Technical Debt Is the Same As “Bad Code”?
12.3 When We Go Bankrupt: Legacy System
12.4 Why Can’t We Just Move Away from a Legacy System?
12.5 When you have to work with a Legacy System
12.6 Fighting Back on Poor Quality
12.7 Learning from Legacy
12.8 What’s Next?
12.9 Chapter Summary
12.10 Further Reading
Part V: Human Aspects of Building Software
Chapter 13: A Deeper Look to What Influence Software Teams
13.1 On-Call Rotation
13.2 External and Unpredicted Work
13.3 Developer Tools
13.4 Interruptions
13.5 Interviews
13.6 Communication
13.7 Timezones Are Hard
13.8 Changing Priorities
13.9 Glue Work
13.10 Team Diversity
13.11 Team Moral and Mental Health
13.12 What Now?
13.13 Chapter Summary
13.14 Further Reading
Chapter 14: The Role of the Developer
14.1 What Does a Developer Do Anyway?
14.2 Which Level Am I?
14.3 The Fallacy of the Superhero Developer
14.4 The “Soft” Skills
14.5 Where Are the Juniors?
14.6 The Ideal Team
14.7 Chapter Summary
14.8 Further Reading
Chapter 15: Building Software Is More Than Developers
15.1 The Role of the Managers
15.1.1 The Developer Manager
15.1.2 The Product Manager
15.1.3 The Project Manager
15.2 The Role of the Business Specialist
15.3 The Role of the Designer
15.4 The Role of the Data Analyst
15.5 The Role of the Customer Support
15.6 The Role of the Technical Writer
15.7 The Role of... You!
15.8 Further Reading
Glossary
Acronyms
Index
Alternative description
Software is everywhere, but despite being so common and useful, it remains magical and mysterious to many. Still, more and more people are finding themselves working for tech companies, or with an array of software products, services, and tools. This can segregate those who understand tech from those that don't. But it doesn't have to be this way.
This book aims to bring these two worlds closer together, allowing people to learn basic concepts of software development in a casual and straight-forward way. Assuming no previous technical knowledge, you'll embark on a journey where you can understand and build a new software project from scratch until it is an advanced product with multiple users.
A Friendly Guide to Software Development makes technical concepts broadly available and easy to understand. Imagine moving from a "traditional" company and suddenly finding yourself in one where software is the main product or is a foundational component to it. One is often left to wade through the infinite concepts while still doing their actual jobs. This book closes that gap. In doing so, you'll be able to achieve better communication, which will undoubtedly lead to better working relationships, a better working environment, and ultimately better software.
What You'll Learn
See how a new software project is created Examine the basics of software development and architecture Know which questions to ask to avoid potential problems and pitfalls Start using and building software projects
Who This Book Is For
Those without a traditional technical background people like business and project managers who need to work closely with software developers and teams People who are interested in building a software system but don't know where to start. Programmers who want to jump to development but have no experience in the industry and its common concepts
This book aims to bring these two worlds closer together, allowing people to learn basic concepts of software development in a casual and straight-forward way. Assuming no previous technical knowledge, you'll embark on a journey where you can understand and build a new software project from scratch until it is an advanced product with multiple users.
A Friendly Guide to Software Development makes technical concepts broadly available and easy to understand. Imagine moving from a "traditional" company and suddenly finding yourself in one where software is the main product or is a foundational component to it. One is often left to wade through the infinite concepts while still doing their actual jobs. This book closes that gap. In doing so, you'll be able to achieve better communication, which will undoubtedly lead to better working relationships, a better working environment, and ultimately better software.
What You'll Learn
See how a new software project is created Examine the basics of software development and architecture Know which questions to ask to avoid potential problems and pitfalls Start using and building software projects
Who This Book Is For
Those without a traditional technical background people like business and project managers who need to work closely with software developers and teams People who are interested in building a software system but don't know where to start. Programmers who want to jump to development but have no experience in the industry and its common concepts
Alternative description
Software is everywhere, but despite being so common and useful, it remains magical and mysterious to many. Still, more and more people are finding themselves working for tech companies, or with an array of software products, services, and tools. This can segregate those who understand tech from those that don't. But it doesn't have to be this way. This book aims to bring these two worlds closer together, allowing people to learn basic concepts of software development in a casual and straight-forward way. Assuming no previous technical knowledge, you'll embark on a journey where you can understand and build a new software project from scratch until it is an advanced product with multiple users. Imagine moving from a “traditional” company and suddenly finding yourself in one where software is the main product or is a foundational component to it. One is often left to wade through the infinite concepts while still doing their actual jobs. This book closes that gap, improving communication between technical and non-technical parties. A Friendly Guide to Software Development makes technical concepts broadly available and easy to understand. In doing so, you'll be able to achieve better communication, which will undoubtedly lead to better working relationships, a better working environment, and ultimately better software. You will: See how a new software project is created Examine the basics of software development and architecture Know which questions to ask to avoid potential problems and pitfalls Start using and building software projects
Alternative description
This book is a starter kit to the immense craft of software development. It lays out with clarity and purpose each of the many dependent, independent, and competing processes that make up successful software applications. For readers who want to better understand how the many software-driven automations that exist all around us are built, this book will shine a light on it all.The content is organized into five parts, following the experience of a person that is building a new e-commerce application:Part 1 guides you through the first steps of a software project. It also starts with some introduction to technical concepts assuming no previous knowledge from the reader.Part 2 provides a deep dive on the technical aspects of a web application, from the overview of how communication happens on the Internet to how web applications typically work. This is the most technical section of the book.Part 3 focuses on the more practical aspects of building software products like the critical decisions that need to be made and methodologies to actually build the product.Part 4 goes over the aspects that can guarantee a software project to be successful in the long run. It gives a clear idea of why there are so many things that one needs to do to guarantee good projects and that most of them aren’t visible to the user’s eyes.Part 5 talks about the people that build software, how teams work, and the different roles that are involved and takes a deeper dive on the role of developers in all of this.
date open sourced
2024-03-08
We strongly recommend that you support the author by buying or donating on their personal website, or borrowing in your local library.
🚀 Fast downloads
Become a member to support the long-term preservation of books, papers, and more. To show our gratitude for your support, you get fast downloads. ❤️
- Fast Partner Server #1 (recommended)
- Fast Partner Server #2 (recommended)
- Fast Partner Server #3 (recommended)
- Fast Partner Server #4 (recommended)
- Fast Partner Server #5 (recommended)
- Fast Partner Server #6 (recommended)
- Fast Partner Server #7
- Fast Partner Server #8
- Fast Partner Server #9
- Fast Partner Server #10
- Fast Partner Server #11
🐢 Slow downloads
From trusted partners. More information in the FAQ. (might require browser verification — unlimited downloads!)
- Slow Partner Server #1 (slightly faster but with waitlist)
- Slow Partner Server #2 (slightly faster but with waitlist)
- Slow Partner Server #3 (slightly faster but with waitlist)
- Slow Partner Server #4 (slightly faster but with waitlist)
- Slow Partner Server #5 (no waitlist, but can be very slow)
- Slow Partner Server #6 (no waitlist, but can be very slow)
- Slow Partner Server #7 (no waitlist, but can be very slow)
- Slow Partner Server #8 (no waitlist, but can be very slow)
- After downloading: Open in our viewer
All download options have the same file, and should be safe to use. That said, always be cautious when downloading files from the internet, especially from sites external to Anna’s Archive. For example, be sure to keep your devices updated.
External downloads
-
For large files, we recommend using a download manager to prevent interruptions.
Recommended download managers: Motrix -
You will need an ebook or PDF reader to open the file, depending on the file format.
Recommended ebook readers: Anna’s Archive online viewer, ReadEra, and Calibre -
Use online tools to convert between formats.
Recommended conversion tools: CloudConvert and PrintFriendly -
You can send both PDF and EPUB files to your Kindle or Kobo eReader.
Recommended tools: Amazon‘s “Send to Kindle” and djazz‘s “Send to Kobo/Kindle” -
Support authors and libraries
✍️ If you like this and can afford it, consider buying the original, or supporting the authors directly.
📚 If this is available at your local library, consider borrowing it for free there.
Total downloads:
A “file MD5” is a hash that gets computed from the file contents, and is reasonably unique based on that content. All shadow libraries that we have indexed on here primarily use MD5s to identify files.
A file might appear in multiple shadow libraries. For information about the various datasets that we have compiled, see the Datasets page.
For information about this particular file, check out its JSON file. Live/debug JSON version. Live/debug page.