A Friendly Guide to Software Development: What You Should Know Without Being a Developer

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

Author(s): Leticia Portella
Edition: 1
Publisher: Apress
Year: 2023

Language: English
Pages: 312

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