@123olp: Programming Mindset ├── 0. Core Definition │ ├── Turn fuzzy problems into computable problems │ ├── Turn real-world objects into data representations │ ├── Turn the solution process into clear steps │ ├── Turn results into verifiable outputs │ └── Turn one-time solutions into reusable systems │ ├──…
Summary
A systematic tutorial on programming mindset, covering core definitions, problem modeling, data representation, process design, and multiple aspects of learning programming.
View Cached Full Text
Cached at: 05/26/26, 01:11 PM
Programming Thinking ├── 0. Core Definition │ ├── Transform vague problems into computable problems │ ├── Transform real-world objects into data representations │ ├── Transform solution processes into explicit steps │ ├── Transform results into verifiable outputs │ └── Transform one-time solutions into reusable systems │ ├── 1. Problem Modeling │ ├── 1.1 Clarify the Problem │ │ ├── What is the problem? │ │ ├── Why solve it? │ │ ├── Who uses the results? │ │ └── What are the success criteria? │ │ │ ├── 1.2 Define Inputs │ │ ├── Where do inputs come from? │ │ ├── What is the input format? │ │ ├── Is the input complete? │ │ ├── Is the input reliable? │ │ └── What are the exceptional inputs? │ │ │ ├── 1.3 Define Outputs │ │ ├── Who sees the output? │ │ ├── What is the output format? │ │ ├── How to judge if the output is correct? │ │ └── How is the output used subsequently? │ │ │ └── 1.4 Specify Constraints │ ├── Time limits │ ├── Space limits │ ├── Data scale │ ├── Security requirements │ ├── Maintainability requirements │ └── Usage scenario constraints │ ├── 2. Data Representation │ ├── 2.1 Basic Data │ │ ├── Numbers │ │ ├── Strings │ │ ├── Booleans │ │ └── Null values │ │ │ ├── 2.2 Data Structures │ │ ├── Lists / Arrays │ │ ├── Dictionaries / Hash tables │ │ ├── Sets │ │ ├── Stacks │ │ ├── Queues │ │ ├── Trees │ │ └── Graphs │ │ │ ├── 2.3 Type Awareness │ │ ├── What operations can the data perform? │ │ ├── What operations can the data not perform? │ │ ├── Type conversion │ │ └── Type errors │ │ │ └── 2.4 State Representation │ ├── Current state │ ├── Historical state │ ├── State changes │ └── State consistency │ ├── 3. Process Design │ ├── 3.1 Sequential Execution │ │ ├── What to do first? │ │ ├── What to do second? │ │ └── What does each step depend on? │ │ │ ├── 3.2 Conditional Logic │ │ ├── if │ │ ├── else │ │ ├── Multiple branches │ │ └── Edge cases │ │ │ ├── 3.3 Loops │ │ ├── Iteration │ │ ├── Counting │ │ ├── Accumulation │ │ ├── Search │ │ └── Termination conditions │ │ │ ├── 3.4 Recursion │ │ ├── Base case │ │ ├── Recursive case │ │ ├── Problem reduction │ │ └── Call stack │ │ │ └── 3.5 Algorithms │ ├── Sorting │ ├── Searching │ ├── Divide and conquer │ ├── Greedy │ ├── Dynamic programming │ └── Graph algorithms │ ├── 4. Abstraction and Decomposition │ ├── 4.1 Function Abstraction │ │ ├── Input parameters │ │ ├── Return results │ │ ├── Function responsibility │ │ └── Side effect control │ │ │ ├── 4.2 Module Abstraction │ │ ├── File organization │ │ ├── Functional layering │ │ ├── Internal implementation │ │ └── External interface │ │ │ ├── 4.3 Interface Abstraction │ │ ├── What does the user need to know? │ │ ├── What does the user not need to know? │ │ ├── Input contract │ │ ├── Output contract │ │ └── Error contract │ │ │ └── 4.4 System Decomposition │ ├── Break into subproblems │ ├── Break into components │ ├── Break into workflows │ ├── Break into data layers │ └── Break into interaction layers │ ├── 5. Correctness and Verification │ ├── 5.1 Correctness Awareness │ │ ├── Running doesn’t mean correct │ │ ├── Correct for examples doesn’t mean correct for all │ │ ├── Correct for small data doesn’t mean correct for large data │ │ └── Correct now doesn’t mean maintainable in the future │ │ │ ├── 5.2 Testing │ │ ├── Normal cases │ │ ├── Edge cases │ │ ├── Exceptional cases │ │ ├── Regression testing │ │ └── Automated testing │ │ │ ├── 5.3 Debugging │ │ ├── Reproduce the problem │ │ ├── Narrow down the scope │ │ ├── Form hypothesis │ │ ├── Validate hypothesis │ │ ├── Fix the issue │ │ └── Prevent recurrence │ │ │ └── 5.4 Complexity │ ├── Time complexity │ ├── Space complexity │ ├── Data scale │ ├── Performance bottlenecks │ └── Scalability │ ├── 6. Engineering Mindset │ ├── 6.1 Readability │ │ ├── Naming │ │ ├── Comments │ │ ├── Code structure │ │ └── Concise expression │ │ │ ├── 6.2 Maintainability │ │ ├── Low coupling │ │ ├── High cohesion │ │ ├── Single responsibility │ │ ├── Replaceability │ │ └── Extensibility │ │ │ ├── 6.3 Version Control │ │ ├── Git │ │ ├── commit │ │ ├── branch │ │ ├── diff │ │ └── merge │ │ │ ├── 6.4 Documentation │ │ ├── README │ │ ├── User guide │ │ ├── Design document │ │ ├── API documentation │ │ └── Changelog │ │ │ └── 6.5 Refactoring │ ├── Eliminate duplication │ ├── Extract functions │ ├── Improve naming │ ├── Simplify conditionals │ ├── Split modules │ └── Preserve behavior │ ├── 7. Systems Thinking │ ├── 7.1 Programs Are Not Isolated Code │ │ ├── Users │ │ ├── Data │ │ ├── Files │ │ ├── Network │ │ ├── Database │ │ └── External services │ │ │ ├── 7.2 Feedback Mechanisms │ │ ├── Logs │ │ ├── Error messages │ │ ├── Monitoring │ │ ├── User feedback │ │ └── Testing feedback │ │ │ ├── 7.3 Risk Awareness │ │ ├── Data loss │ │ ├── Permission errors │ │ ├── Security vulnerabilities │ │ ├── Performance crashes │ │ └── Dependency failures │ │ │ └── 7.4 Evolutionary Awareness │ ├── Requirements will change │ ├── Data will change │ ├── Users will change │ ├── Environment will change │ └── Code must be modifiable │ ├── 8. Toolchain Proficiency │ ├── 8.1 Editor │ │ ├── Code editing │ │ ├── Shortcuts │ │ ├── Search & replace │ │ └── Plugin management │ │ │ ├── 8.2 Command Line │ │ ├── File operations │ │ ├── Program execution │ │ ├── Environment management │ │ └── Automation scripts │ │ │ ├── 8.3 Package Management │ │ ├── Install dependencies │ │ ├── Manage versions │ │ ├── Virtual environments │ │ └── Dependency conflicts │ │ │ ├── 8.4 Debugging Tools │ │ ├── Breakpoints │ │ ├── Logging │ │ ├── Variable inspection │ │ └── Call stack │ │ │ └── 8.5 Collaboration Tools │ ├── GitHub │ ├── Issue │ ├── Pull Request │ ├── Code Review │ └── CI/CD │ ├── 9. Typical Application Scenarios │ ├── 9.1 Automation │ │ ├── File organization │ │ ├── Data cleaning │ │ ├── Batch processing │ │ └── Report generation │ │ │ ├── 9.2 Data Processing │ │ ├── Reading data │ │ ├── Transforming data │ │ ├── Analyzing data │ │ └── Visualizing data │ │ │ ├── 9.3 Web Applications │ │ ├── Frontend UI │ │ ├── Backend services │ │ ├── API │ │ ├── Database │ │ └── Deployment │ │ │ ├── 9.4 Tool Development │ │ ├── Command-line tools │ │ ├── Plugins │ │ ├── Mini programs │ │ └── Internal systems │ │ │ └── 9.5 Programming in the AI Era │ ├── Prompt to code │ ├── Code reading │ ├── Code validation │ ├── Automated testing │ └── Humans responsible for judgment │ ├── 10. Common Misconceptions │ ├── 10.1 Equating programming with syntax │ ├── 10.2 Equating copy-pasting code with programming │ ├── 10.3 Equating running code with correctness │ ├── 10.4 Equating problem-solving on platforms with engineering ability │ ├── 10.5 Equating frameworks with fundamentals │ ├── 10.6 Equating AI generation with understanding │ ├── 10.7 Equating lines of code with ability │ └── 10.8 Equating amount of learning materials with progress │ └── 11. Minimum Learning Loop ├── 11.1 Pick a small real problem ├── 11.2 Clearly define inputs and outputs ├── 11.3 Design data structures ├── 11.4 Break into functions ├── 11.5 Write a minimal runnable version ├── 11.6 Add test cases ├── 11.7 Debug and log errors ├── 11.8 Use Git for version control ├── 11.9 Write a README └── 11.10 Review design trade-offs
Similar Articles
@dashen_wang: https://x.com/dashen_wang/status/2062318606357303376
The author uses personal experience to introduce a tutorial on architect thinking in the AI era, emphasizing that the ability to understand the underlying essence when abstraction leaks is more critical than tool usage, and shares two modes: assembly thinking and object-oriented thinking.
@Russell3402: https://x.com/Russell3402/status/2056331558223786416
This article delves into the division of labor design in multi-agent systems, including trigger mechanisms, topology structures, and call chains, analyzing the engineering practices of systems such as Codex, Claude Code, OpenClaw, and Hermes Agent.
@cevenif: Using Claude Code or Codex for development, but feel like AI is running wild? This course might be the missing piece you need. There's an open-source course on GitHub called Learn Harness Engineering, which teaches you to establish a controllable workflow framework for AI coding assistants, centered around five core mechanisms...
GitHub open-source course Learn Harness Engineering teaches you to build a controllable workflow framework for AI coding assistants (e.g., Claude Code, Codex). It includes 12 theory lessons and 6 hands-on projects, covering core mechanisms: instruction, state, validation, scope, and session.
@NoraX2026: https://x.com/NoraX2026/status/2066499278449897564
This article explores how abstract modeling ability helps people quickly transfer across different domains by extracting variables, relationships, and constraints to capture the core structure, rather than memorizing specific content.
@bkdgiffug: The underlying principles of operating systems have always been a tough nut to crack in the computer field. With hundreds of thousands of lines of kernel source code laid out, one gets dizzy after just a few pages, unable to grasp the design thread, let alone read it thoroughly. The egos-2000 teaching project presents the core components of an operating system completely in just 2000 lines of code. The three-layer architecture of this system is particularly…
egos-2000 is a teaching operating system project that implements core operating system components in just 2000 lines of code. It features a clear three-layer architecture, supports the RISC-V platform, and comes with a textbook providing 9 course projects for convenient learning and practice.