-
内容大纲
要成为一名成功的软件工程师,你需要了解什么?本科课程和编程训练营或许会教授算法和编写代码的基础知识,但很少涉及对职业发展至关重要的主题。通过本书的实践性指导,你将掌握获得成功并持续成长所需的技能。
作者Nathaniel Schutta与Dan Vega将引导你的学习之旅,从实用建议到对特定主题的深入剖析,帮助你掌握作为软件工程师真正重要的技能。 -
作者介绍
-
目录
Preface
1. Programmer to Engineer
An Engineer by Any Other Name
Fundamentals Matter
The Many Paths to Becoming a Software Engineer
What You Were Taught Versus What You Need to Know
Embrace the Lazy Programmer Ethos
The Value of a Fresh Set of Eyes
Don't Solution Too Quickly
Apply the Golden Rule to Software
Wrapping Up
Putting It into Practice
Additional Resources
2. Reading Code
The Challenge of Working with Existing Code
Cognitive Biases
Approaching Unfamiliar Code
Software Archeology
Effective Code-Reading Strategies
Leveraging IDE Features
Reading Tests for Insight
Practice Makes Perfect
Wrapping Up
Putting It into Practice
Additional Resources
3. Writing Code
Don't Reinvent the Wheel
What Is Good Code?
Less Is More
The Zeroth Law of Computer Science
Beware Boilerplate Code
Favor Composition over Inheritance
Favor Short Methods
Write Code to Be Read
The Problem with Code Comments
Tests as Documentation
Avoid Clever Code
Code Reviews
Avoid the Checkbox Code Review
It Is Hard to Be Criticized
Fostering Trust
Learning New Languages
Wrapping Up
Putting It into Practice
Additional Resources
4. Modeling
What Is Software Modeling and Why Do We Do It?
Which Diagrams Do You Need?
Context Diagrams
Component Diagrams
Class Diagrams
Sequence Diagrams
Deployment Diagrams
Data Models
Additional Diagrams
Modeling Best Practices
Keep It Simple
Know Your Audience
Be Careful with Your Color Choices
Establish Standards and Templates
Tools
Wrapping Up
Putting It into Practice
Additional Resources
5. Automated Testing
Benefits of Automated Testing
Acts as Documentation
Improves Maintainability
Boosts Your Confidence
Leads to Consistency and Repeatability
Types of Automated Testing
Unit Tests
Integration Tests
End-to-End Tests
What Mix of Tests Should You Be Writing?
What You Should Not Test
Code Coverage
Writing Tests
Getting Started
Assertions
Writing Unit Tests
Mocking
Writing Integration Tests
Writing End-to-End Tests
Wrapping Up
Putting It into Practice
Additional Resources
6. Exploring and Modifying Unfamiliar Systems
Understanding Unfamiliar Codebases
Start with the Big Picture
Understand the Execution Flow
Build Mental Models Incrementally
A Sample Process
Making Changes Safely
Refactoring Safely
The Scout Rule
Small, Reversible Changes
Wrapping Up
Putting It into Practice
Additional Resources
7. User Interface Design
Designing for Everyone
What Is Usability?
What Is Accessibility?
What Are Localization and Internationalization?
Know Your User
Secondary Users
You Are Not Your User
Impact of Culture
Maximizing Usability
Principles of Design
Contrast
Repetition
Alignment
Proximity
Applying the Principles of Design
Make the Right Thing the Obvious Thing
The Importance of Good Error Messages
Destructive Actions
Wrapping Up
Putting It into Practice
Additional Resources
8. Working with Data
Understanding Data Types and Formats
Structured Versus Unstructured Data
Common Data Formats
Specialized Data Considerations
Storing Your Data Effectively
Database Types and Their Use Cases
Data Persistence and Management
Database Connections and Transactions
Consistency Models and Caching Strategies
Planning for Data Growth
Querying and Managing Data Performance
Efficient Query Writing
Tools and Best Practices
Data Migration and Transformation
Understanding Data Movement Fundamentals
Handling Schema Changes
Wrapping Up
Putting It into Practice
Additional Resources
9. Software Architecture
What Is Architecture?
Trade-Offs
Architecture Versus Design
Quality Attributes
Identifying Quality Attributes
Gaining Stakeholder Alignment
Architectural Styles
The Agile Architect
Fitness Functions
Architectural Diagrams
Architectural Decision Records
Wrapping Up
Putting It into Practice
Additional Resources
10. To Production
The Complexities of Production Environments
Users Are Unpredictable
"But It Works on My Machine"
Building Production-Ready Code
Performance Optimization
Environment-Specific Configurations
Error Handling and Logging
Security Essentials
Deployment Pipeline
Deployment Environments
Version Control Strategies
Deployment Automation
Deployment Strategies
Continuous Integration and Continuous Deployment
Production System Monitoring and Maintenance
Monitoring
System Maintenance
Wrapping Up
Putting It into Practice
Additional Resources
11. Powering Up Your Productivity
Optimizing Your Development Environment
Know Your Development Tools
Build Your Own Lightsaber
Leverage the Power of the Command Line
Harness the Power of Keyboard Shortcuts
Strategic Automation
The Perpetual Pursuit of Productive Habits
Collaborative Learning
Personal Knowledge Management
Wrapping It Up
Putting It into Practice
Additional Resources
12. Learning to Learn
Cramming Doesn't Work
Skills Acquisition
The Learning Habit
Learning Through AI
Fear of Missing Out
Where Should You Invest Your Time?
Practice Innovation
Architectural Briefings
Practice Grace
Wrapping Up
Putting It into Practice
Additional Resources
13. Mastering Soft Skills in the Tech World
Collaborative Communication
Communication Channels
Enterprise Operator
Know Your Audience
Practicing Influence
Understanding and Articulating Value
Strategic Approaches to Influence
Stakeholder Management
Time Management
Maker's Schedule
Staying on Task
Wrapping Up
Putting It into Practice
Additional Resources
14. Career Management
Plan Your Career Path
Find What You're Passionate About
Exploring Your Career Options
Walking Backward from Your Goals
Deliberate Skill Acquisition
Aligning Career Choices with Life Phases
Walking Your Career Path
Celebrate and Record Your Wins
Overcome Imposter Syndrome
Build Your Professional Community
Cultivating Your Professional Relationships
Acing Your Next Interview
Create Work-Life Balance
Wrapping Up
Putting It into Practice
Additional Resources
15. The AI-Powered Software Engineer
What Is AI Really?
Demystifying AI Terminology
Understanding AI's Capabilities and Limitations
AI as Your Pair Programmer
Standalone Chatbot Assistants
Inline IDE Assistants
Agentic AI IDE Environments
Prompt Engineering Fundamentals
What Is Prompt Engineering?
Essential Prompt Engineering Techniques
Advanced Prompt Engineering Techniques
How AI Might Shape Software Engineering
Will AI Take My Job?
Vibe Code Reviews
AI as Your Force Multiplier: From Writing Code to Problem-Solving
Wrapping Up
Putting It into Practice
Additional Resources
Index
同类热销排行榜
- C语言与程序设计教程(高等学校计算机类十二五规划教材)16
- 电机与拖动基础(教育部高等学校自动化专业教学指导分委员会规划工程应用型自动化专业系列教材)13.48
- 传感器与检测技术(第2版高职高专电子信息类系列教材)13.6
- ASP.NET项目开发实战(高职高专计算机项目任务驱动模式教材)15.2
- Access数据库实用教程(第2版十二五职业教育国家规划教材)14.72
- 信号与系统(第3版下普通高等教育九五国家级重点教材)15.08
- 电气控制与PLC(普通高等教育十二五电气信息类规划教材)17.2
- 数字电子技术基础(第2版)17.36
- VB程序设计及应用(第3版十二五职业教育国家规划教材)14.32
- Java Web从入门到精通(附光盘)/软件开发视频大讲堂27.92
推荐书目
-

孩子你慢慢来/人生三书 华人世界率性犀利的一枝笔,龙应台独家授权《孩子你慢慢来》20周年经典新版。她的《...
-

时间简史(插图版) 相对论、黑洞、弯曲空间……这些词给我们的感觉是艰深、晦涩、难以理解而且与我们的...
-

本质(精) 改革开放40年,恰如一部四部曲的年代大戏。技术突变、产品迭代、产业升级、资本对接...
[
