Table of Contents

CHAPTER ONE: Intro

  • Introduction

CHAPTER TWO: Should You Become a Developer?

  • Should I Become a Software Engineer/Developer?
  • What Is a Day as a Software Engineer Like?
  • Production Issues
  • Why Should I Want to Work as a Software Engineer?
  • Where Do Software Engineers Work?

CHAPTER THREE: What to Learn in High School

  • What Should I Learn in High School to Help Me Become a Software Engineer?
  • Learning a Programming Language
  • General Overview of Aspects of Programming Languages
  • What Programming Language to Learn First?
  • Why Should You Learn Programming?
  • How to Learn Programming for Beginners?

CHAPTER FOUR: What Computer to Buy

  • Which Type of OS/Computer Should You Buy for School/College for Someone Interested in Being a Software Engineer?
  • Why Not Linux? Most Web Servers Are Linux.
  • What Hardware Do You Need for Your Windows PC?

CHAPTER FIVE: College      

  • Choosing a College/School to Be a Computer Software Engineer
  • So How Do You Decide Your College/Major?
  • College Locations
  • Can You Become a Software Engineer without a Degree?
  • What Does a Software Engineer Education Cost?
  • How Much Do Software Engineers Make Out of College?
  • Co-Op

Intern Programs

One Person’s Experience

A Company that Helped Manage Money

A Consumer Electronics Firm

For My Company with a Friend—Not Co-Op

A Small Start-Up Document Imaging Company

  • Planning Your College Courses with an Eye toward a Software Engineering Job/Programming
  • General Electives
  • What Computer Language Classes to Take?
  • Planning to Transfer in the Future?
  • If You Prefer to Go Full-On Computer Science
  • Surviving College as a Computer Science Major (or a Variation of That)
  • Computer Labs/Home Computers, Assignments, and More
  • Multi-Person Programming Projects
  • Some Other General Trivia
  • What Do You Do If You Have Trouble with Your Classes?
  • When You Have Finished Your Degree

CHAPTER SIX: What They May Not Teach You in School

  • What They May Not Teach You in School about Working as a Software Engineer
  • Time Management
  • Source Control and Branching
  • Business Focus/Prioritization
  • The Rules and Business
  • Working with Others and the Art of Influence and Leadership
  • Continual Improvement
  • Creativity
  • What Do You Want?
  • Creating Your Own Opportunities or Taking Advantage of Them
  • Perfect Is the Enemy of Done/Money
  • Software Development Life Cycle (SDLC), Auditing, Etc.
  • Coding for a Production Environment
  • Professionalism
  • The Art of What You Should or Shouldn’t Say No To
  • Interviewing
  • Working with Your Manager
  • Managing Stress
  • Teamwork

CHAPTER SEVEN: Where to Work

  • Here Are Some of the Best Places to Work for a Software Engineer
  • How Company Size Can Affect Your Experience
  • Regulated vs. Unregulated
  • Working in a Place You Like the Most
  • Organization Culture
  • What Area of Software Engineering Should I Go Into?
  • Which Tech Stack Should You Learn/Work In?

CHAPTER EIGHT: Preparing to Find a Job

  • Your Resume
  • Consulting
  • W-2 vs. 1099 vs. Corp to Corp
  • 1099
  • Corp to Corp
  • Consulting vs. Full Time
  • A Consulting Gig
  • What Is a Full Stack Developer?
  • Staffing Firms and Recruiters
  • Do You Need Certifications?
  • Finding a Job
  • Colleagues, Friends, and Family

CHAPTER NINE: Interviewing

  • Portfolios
  • Things You Should Do to Prep for the Interview
  • Some Example Interview Questions
  • Things You Should Know
  • Recruiter Screening
  • Initial Screening
  • Interview (the Main Event)
  • Salary

CHAPTER TEN: Starting a New Job

  • Working with Others
  • Impressions
  • What Does It Mean to Be a Good Team Member?
  • Developing Large Features or Software Products
  • Mentor

CHAPTER ELEVEN: Deadlines, Estimates, Communication, Notes

  • Early Career: Software Engineering Deadlines, Target Dates, and Estimates
  • What Should You Do About Estimates And Deadlines?
  • Early Career: Team, Internal, External Conversations/Messaging
  • Keep Track of What You Need to Do
  • Keep Track of What You Learn

CHAPTER TWELVE: Working with Your Manager

  • What Does Your Manager Want?
  • Take Control of Your Career
  • Act Professional
  • Communicating with Upper Management
  • Managing Up
  • The Power of Taking Responsibility

CHAPTER THIRTEEN: Mindset and Psychology

  • Think Like an Owner
  • The Power of Positivity
  • Impostor Syndrome
  • Don’t Be a Jerk
  • Change—The Only Constant

CHAPTER FOURTEEN: Continuous Learning

  • Programming Language
  • Constant Learning
  • Team Presentations

CHAPTER FIFTEEN: Getting a Promotion/Raise

  • Job Titles
  • What Purpose Do Job Titles Have?
  • How Do You Get a Promotion/Raise?
  • Titles, Role, Responsibilities, Money
  • Be Introspective

CHAPTER SIXTEEN: Changing Jobs/Roles

  • Leave on Good Terms
  • Counteroffers
  • Changing Teams

CHAPTER SEVENTEEN: Career

  • LinkedIn
  • Making Money from Your Own Software
  • Write an Android/IOS App, Websites, Desktop App, Etc.
  • Marketing
  • Publishing Your Software
  • Book Authoring
  • Your Company Has Been Bought—Now What?
  • Avoiding Layoffs

CHAPTER EIGHTEEN: Process: Waterfall

                Critiques against Waterfall

CHAPTER NINETEEN: Process: Practical Agile with Scrum

  • Scrum In the Real World for Software Development
  • What is Agile?
  • Agile Software Development Process Pros and Cons
  • Mitigating the Cons of Agile
  • Agile Sprints/Iterations
  • Agile Is Not Waterfall
  • What Is Scrum?
  • Daily Scrum
  • Scrum Roles
  • Planning, Grooming, Reveal, and Retro
  • Sprint Planning
  • The Reveal
  • The Retrospective (or Just Retro)
  • Backlog Grooming
  • Scrum of Scrums
  • Tracking Progress
  • Agile with Scrum How To
  • Agile While Managing New Features and Support
  • You Created Your Stories for Your Project, but Now You Need a Plan—Agile Project Plan
  • Builds/Continuous Integration
  • Agile Body Snatchers

CHAPTER TWENTY: Process: Requirements

CHAPTER TWENTY-ONE: Process: Architecture/Design

  • Architecture/Design
  • Enterprise Architecture (EA) Frameworks
  • The Open Group Architectural Framework (TOGAF)
  • Whole System Level Architecture Patterns
  • Designing Resilient/Redundant Systems
  • Discussions
  • UX Design
  • A Simplistic Architecture Approach
  • High-Level Solution Proposals
  • Incremental Action Plan

CHAPTER TWENTY-TWO: Process: Source Control Management

  • Source Control Management
  • Functionality and Workflow
  • Branch Plans
  • Workflow and Branch Plans
  • Gitflow Branching
  • Source Control Products

CHAPTER TWENTY-THREE: Process: Implementation

  • Implementing a Feature/Bug Fix
  • Unit Testing
  • Test Driven Development (TDD)
  • Pair Programming
  • Logging
  • Testing a Feature/Bug Fix
  • Builds/Continuous Integration
  • Merging the Change
  • Should You Comment Code—Write Them, How Much, or Not?
  • Software Development Environment
  • How to Write Cleaner, More Understandable Code
  • Environments
  • Dev-Ops
  • What Are the Main Correlating Factors to the Introduction of Bugs?

CHAPTER TWENTY-FOUR: Process: Testing/Validation

  • Testing
  • Automation Testing
  • Integration Testing
  • Fuzz Testing
  • Parity Testing
  • Performance Testing
  • Validation

CHAPTER TWENTY-FIVE: Process: Deployment

  • Deployment
  • Old/New (A/B) Deployments
  • Rollbacks

CHAPTER TWENTY-SIX: Process: Production

CHAPTER TWENTY-SEVEN: Process: Support

  • Coding, Testing
  • Cost
  • Performance and Hardware
  • Deployment
  • Logging
  • Tracing
  • Time Syncing
  • Network/Application Tracing
  • Monitoring
  • Alerting
  • Standard Operating Procedure (SOP) or Runbook
  • Training
  • Escalation Process for Critical Incidents
  • Operational Impact
  • How to Handle Support with Agile Scrum Teams
  • Prioritizing Investigations/Escalation Process for Noncritical Incidents

CHAPTER TWENTY-EIGHT: Process: Audits

  • Audits in Highly Regulated Environments
  • Preparing for an Audit
  • What Should You Expect during an Audit?

CHAPTER TWENTY-NINE: General Development

  • Languages
  • Algorithms/Data Structures
  • Naming Classes, Methods, Properties, Etc.
  • Building Software to Reduce Risks and Handle/Recover from Errors
  • Code Performance and Improving
  • Code Reviews
  • Principles
  • Getting in the Zone
  • Windows Debugging
  • Overengineering
  • Minimum Viable Product (MVP)
  • Thinking Like Your Customer
  • Solving Hard Critical Support Issues
  • Avoid Duplicating Code
  • Improving Testing
  • User Interfaces
  • Technical Disagreements
  • Deciding If You Should Fix a Bug Now
  • Testing Private Methods
  • Coupling / Decoupling
  • Root Cause Analysis
  • Understanding Hardware
  • Networking
  • File Systems
  • XML/HTML/CSS
  • Resource Utilization
  • Prototyping
  • Windowing Systems
  • Double Check Locking
  • Unicode
  • Security
  • Privacy
  • Public Key Crypto Systems
  • Exception Handling
  • Proof of Concept (POC)
  • Object Oriented Languages
  • Software Patterns
  • Upgrade Path
  • If I Have a Hammer Everything Looks Like a Nail
  • Fail Early
  • Asserts
  • Contracts
  • Operating Systems
  • Databases
  • Data Science
  • Dependency Injection
  • Time Use for Event Ordering
  • How to Handle Tech Debt
  • Open Source Software
  • Data Pipelines
  • Context and Notetaking
  • Managed Languages
  • Floating Point Numbers
  • NP_Complete Problems
  • C# Using Var
  • Perceived Speed
  • Holy Wars
  • Message Streaming
  • Should You Learn Assembly Language?
  • Writing Apps for Profit and Fun
  • Will AI Replace Software Engineers
  • Highly Regulated Environments
  • Recursion
  • Cross-Platform Development
  • Rate Limiting Algorithms
  • Plugin Framework
  • Discrete Math
  • Finite-State Machine
  • Compiler/Interpreter Design
  • Deterministic Disposal at End of Function Scope
  • Data Objects
  • .NET Source Code

CHAPTER THIRTY: Multithreading

  • Threading Synchronization Primitives
  • Threading Topics
  • Threading Issues
  • Threading Patterns
  • Multithreaded Events
  • Does Your Sleep(0) Smell?

CHAPTER THIRTY-ONE: Time Management

  • Email
  • Which Communication Method to Use?

CHAPTER THIRTY-TWO: Management

  • Intro
  • How to Become a Software Engineering Manager
  • One on Ones
  • Performance Discussions
  • Compensation Discussions
  • Don’t Micromanage
  • Planning a Project
  • Time Off
  • The Power of Questions
  • Role in Scrum
  • Role as Architect
  • People Reviews (Yearly or Ideally More Often)
  • Project Management
  • Mentoring/Career Path
  • Employee Concerns
  • Project Details
  • Example Day in the Life of an Engineering Manager
  • Team Size
  • Managing Management Expectations vs. Team Capability
  • Delegating
  • Staffing/Hiring
  • Onboarding
  • Outsourcing of Development Work
  • Team Collaboration
  • Managing Large Multi-Team Projects
  • Project Manager(s)
  • Dependency Management
  • Scrum of Scrums Meetings
  • Be an Advocate for Your Team/Members
  • Compensation
  • The Gray Area
  • Clean Up Your Backlog
  • Aligning Code with Your Teams
  • When/What to Escalate?
  • Agile Team Management

CHAPTER THIRTY-THREE: General Topics

  • When Good Architecture Isn’t Good Right Now
  • How to Reduce Overhead Costs for Your Business—Keep Processes Under Control!
  • Reinvention
  • Generating Ideas/Solutions
  • Failure
  • Turning Failure into Success
  • Integrity and Playing Fair
  • Cryptocurrency
  • Ideal vs. Practical
  • Rant On Why Software Architecture Is Not Exactly Like Building Architecture
  • Operations and DBA Teams
  • Why Patch Rather Than Fix?
  • Computer Science and Life
  • Third Party Products/Libraries
  • Why Is X More Reliable Than Software?
  • Diagnosing Windows Issues
  • Staying Safe in the Digital Age
  • Your Own Website
  • Smaller Releases
  • Impact on Society
  • How to Be the Worst Software Engineer
  • Useful Tools and Websites
  • Best Developer Blogs
  • Reading List

CHAPTER THIRTY-FOUR: Notable Software/Technologies

  • Windows
  • Linux/Unix
  • Android
  • iOS
  • Machine Learning
  • Docker Containers/Kubernetes
  • NoSQL

CHAPTER THIRTY-FIVE: Appendix

  • Sites/Links/Information
  • More Information / Errata
  • Dedication