Tagged articles

software design

448 articles · Page 4 of 5
JD Tech Talk
JD Tech Talk
Mar 29, 2021 · Backend Development

Design and Implementation of a Lightweight Java Workflow Engine

This article explains why a custom lightweight workflow engine was built, outlines its micro‑kernel architecture, demonstrates incremental development from a Hello‑World example to a simple approval process with branching, and discusses future enhancements such as exception handling, persistence, and dynamic graph modification.

JavaMicrokernelProcess Engine
0 likes · 23 min read
Design and Implementation of a Lightweight Java Workflow Engine
Full-Stack Internet Architecture
Full-Stack Internet Architecture
Mar 26, 2021 · Fundamentals

Understanding System Architecture: Concepts, Importance, and Common Patterns

This article explains what system (software) architecture is, why it is crucial for handling software complexity, invisibility, changeability and conformity, and reviews common architectural patterns such as client‑server, peer‑to‑peer, MVC, layered, distributed‑cluster, micro‑service, event‑source, and hexagonal designs.

architecture patternslayered architecturesoftware design
0 likes · 14 min read
Understanding System Architecture: Concepts, Importance, and Common Patterns
DeWu Technology
DeWu Technology
Mar 26, 2021 · Backend Development

Summary of DDD Layered Architecture for the Bidding Team

The Bidding Team’s DDD layered architecture consolidates all traffic in an Interfaces layer, uses a thin Application service layer to orchestrate use‑cases, places core business rules in Domain aggregates, isolates data access in Infrastructure, adds an Anti‑Corruption adapter, and employs DTOs, entities, and domain events for decoupled, consistent processing.

DDDDomain-Driven Designanti-corruption layer
0 likes · 12 min read
Summary of DDD Layered Architecture for the Bidding Team
Programmer DD
Programmer DD
Mar 25, 2021 · Fundamentals

Why the Word “User” Is Killing Your Software Design (And How to Fix It)

The article warns that using the vague term “user” in software design creates security flaws and conceptual confusion, illustrated with ticket‑booking, Unix, and SaaS examples, and advises defining precise concepts like “team” and “member” early to avoid costly redesigns.

POSIXSaaSTerminology
0 likes · 7 min read
Why the Word “User” Is Killing Your Software Design (And How to Fix It)
vivo Internet Technology
vivo Internet Technology
Mar 24, 2021 · Backend Development

Componentization vs Serviceization: Definitions, Pros & Cons, and Application Scenarios

The article defines componentization (shared JAR) and serviceization (independent service), compares their performance, cost, maintainability, and resource trade‑offs, outlines ideal use‑cases such as high‑throughput, no‑DB calls versus DB‑access or lower‑concurrency needs, and provides Vivo case studies to guide selection.

Componentizationbackend architecturemaintainability
0 likes · 15 min read
Componentization vs Serviceization: Definitions, Pros & Cons, and Application Scenarios
Architecture Digest
Architecture Digest
Mar 22, 2021 · Fundamentals

DDD Layered Architecture: Four‑Layer, Five‑Layer, and Hexagonal Patterns

This article reviews Domain‑Driven Design and layered architecture fundamentals, then explains three classic DDD layered patterns—four‑layer, five‑layer, and hexagonal architectures—detailing their layers, responsibilities, advantages, drawbacks, and practical adaptations for microservice development.

DDDhexagonal-architecturelayered architecture
0 likes · 21 min read
DDD Layered Architecture: Four‑Layer, Five‑Layer, and Hexagonal Patterns
Laravel Tech Community
Laravel Tech Community
Mar 17, 2021 · Fundamentals

A Humorous Guide to 23 Classic Design Patterns Illustrated with Dating Analogies

This article humorously explains 23 classic software design patterns—such as Factory Method, Builder, Abstract Factory, Prototype, Singleton, Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy, Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method, and Visitor—using playful dating scenarios to illustrate each pattern’s intent, structure, and trade‑offs.

Programming FundamentalsSoftware Engineeringarchitecture
0 likes · 18 min read
A Humorous Guide to 23 Classic Design Patterns Illustrated with Dating Analogies
Java Interview Crash Guide
Java Interview Crash Guide
Mar 17, 2021 · Fundamentals

Why Naming Matters: Unlocking Code Readability and Design Power

Effective naming is a critical yet often overlooked aspect of software development that boosts code readability, facilitates communication, reduces cognitive load, and even influences design decisions, as illustrated by real-world examples from Alibaba to POJO, along with practical guidelines for variables, functions, classes, packages, and modules.

Code Readabilityself‑documenting codesoftware design
0 likes · 20 min read
Why Naming Matters: Unlocking Code Readability and Design Power
phodal
phodal
Mar 15, 2021 · Backend Development

Rethinking Layered Architecture: Lessons from Evolving the Coco System

The article chronicles the evolution of Coco's layered architecture, detailing the shift from a monolithic Clean‑Architecture‑inspired design to a modular, plugin‑driven structure, and discusses the trade‑offs of infrastructure layering, code reuse, and future adaptability.

modularizationplugin systemsoftware design
0 likes · 9 min read
Rethinking Layered Architecture: Lessons from Evolving the Coco System
Java Interview Crash Guide
Java Interview Crash Guide
Mar 10, 2021 · Fundamentals

Why Abstract Thinking Is the Secret Weapon for Better Code Design

This article explains how abstract thinking underpins software engineering, covering definitions, the relationship between language and abstraction, levels of abstraction, layered design, the pitfalls of duplicate code and forced casts, and practical ways to strengthen one’s abstract reasoning skills.

Coding Practicesabstractionmodeling
0 likes · 22 min read
Why Abstract Thinking Is the Secret Weapon for Better Code Design
Architecture Digest
Architecture Digest
Mar 3, 2021 · Backend Development

Integrating Domain‑Driven Design with Microservices: Benefits, Drawbacks, and Practical Guidance

This article explains how Domain‑Driven Design complements microservice architecture by addressing functional partitioning, clarifying bounded contexts, and improving scalability, while also discussing microservice drawbacks and practical guidelines for splitting complex systems in modern applications.

DDDbackend architecturedomain modeling
0 likes · 9 min read
Integrating Domain‑Driven Design with Microservices: Benefits, Drawbacks, and Practical Guidance
Liangxu Linux
Liangxu Linux
Feb 19, 2021 · Fundamentals

Mastering Code Smells: Identify and Refactor Common Bad Practices

This guide explains the most frequent code smells—Long Method, Large Class, Duplicated Code, Long Parameter List, Shotgun Surgery, Speculative Generality, and excessive comments—detailing why they harm readability and maintainability, and provides concrete refactoring techniques with Java examples to produce cleaner, more modular software.

Best PracticesJavaSOLID
0 likes · 14 min read
Mastering Code Smells: Identify and Refactor Common Bad Practices
21CTO
21CTO
Feb 6, 2021 · Fundamentals

Why Are Reusable Components So Hard? A FP vs OO FizzBuzz Experiment

The article explores why building truly reusable components is challenging by comparing a concise functional F# implementation of FizzBuzz with a more verbose object‑oriented C# version, highlighting how language paradigms and design assumptions affect modularity, coupling, and extensibility.

C++Component ReuseF*
0 likes · 11 min read
Why Are Reusable Components So Hard? A FP vs OO FizzBuzz Experiment
ITFLY8 Architecture Home
ITFLY8 Architecture Home
Feb 6, 2021 · Fundamentals

Mastering Software Design Docs: A Practical Guide to Effective Specs

This article explains why software design documents are essential, outlines the key sections they should contain, offers concrete writing tips, and provides a step‑by‑step process for creating, reviewing, and iterating on design specs to improve project outcomes and reduce risk.

Best PracticesEngineering Processdesign specs
0 likes · 15 min read
Mastering Software Design Docs: A Practical Guide to Effective Specs
Programmer DD
Programmer DD
Jan 27, 2021 · Backend Development

Why Service Layer Interfaces Matter: Boosting Maintainability and Testability

The article explains that while a Service layer may seem unnecessary for simple business logic, it becomes essential as applications grow, offering benefits such as handling complex operations, supporting reuse across controllers, facilitating unit testing, and enabling flexible business logic composition.

Code MaintainabilityService Layerbackend architecture
0 likes · 3 min read
Why Service Layer Interfaces Matter: Boosting Maintainability and Testability
Selected Java Interview Questions
Selected Java Interview Questions
Jan 19, 2021 · Backend Development

Designing a Monolithic Application for Future Microservice Migration: Best Practices and Code Structure

The article explains how to design a monolithic Java application with clear business boundaries, modular code organization, MVC layering, and disciplined controller logic so that it can be smoothly refactored into a micro‑service architecture, illustrating the approach with directory trees, package schemes, and sample CommonResult code.

DDDJavaMVC
0 likes · 11 min read
Designing a Monolithic Application for Future Microservice Migration: Best Practices and Code Structure
Architect's Tech Stack
Architect's Tech Stack
Dec 21, 2020 · Fundamentals

Refactoring Principles, Code Smells, and Refactoring Techniques

This article explains the concept of refactoring, its motivations and timing, enumerates common code smells, and provides detailed refactoring techniques—including extracting methods, moving functions, encapsulating data, simplifying conditionals, and handling inheritance—to improve software design and maintainability.

Best Practicesclean codecode smells
0 likes · 21 min read
Refactoring Principles, Code Smells, and Refactoring Techniques
ITPUB
ITPUB
Dec 15, 2020 · Fundamentals

Essential Code Review Principles Every Engineer Should Master

This article compiles practical code‑review guidelines, well‑known architecture principles, and personal engineering habits—covering self‑explaining code, DRY, dependency inversion, error handling, testing strategies, and common pitfalls—to help developers write maintainable, high‑quality software.

Architecture PrinciplesCode Reviewgolang
0 likes · 46 min read
Essential Code Review Principles Every Engineer Should Master
Selected Java Interview Questions
Selected Java Interview Questions
Dec 6, 2020 · Fundamentals

Principles and Practices for Effective Code Review and Software Engineering

The article presents a comprehensive guide on why developers and leaders must perform code reviews, identifies common pitfalls such as duplicated code, premature optimization and over‑engineered OOP, and offers concrete principles, model‑design advice, and Golang examples to improve code quality and maintainability.

Best PracticesCode ReviewSoftware Engineering
0 likes · 42 min read
Principles and Practices for Effective Code Review and Software Engineering
Code Ape Tech Column
Code Ape Tech Column
Dec 1, 2020 · Information Security

Why Calling Everyone a “User” Is a Hidden Security Risk

The article explains how the vague term “user” creates design flaws and security vulnerabilities across domains such as airline booking systems, Unix environments, and SaaS platforms, and argues for precise terminology to avoid costly rework and confused‑deputy attacks.

Access ControlTerminologyUser Modeling
0 likes · 7 min read
Why Calling Everyone a “User” Is a Hidden Security Risk
Top Architect
Top Architect
Nov 16, 2020 · Mobile Development

Building a C++ Cross‑Platform Framework for the WeChat Pay Client

This article describes how a C++‑based cross‑platform framework was created to unify iOS and Android implementations of WeChat Pay, detailing the architectural challenges, the introduction of UseCase‑driven business flow, a routing mechanism, improved network request handling, and standardized data passing that together reduced code size, improved stability, and boosted development productivity.

C++Mobile DevelopmentWeChat Pay
0 likes · 14 min read
Building a C++ Cross‑Platform Framework for the WeChat Pay Client
Architect
Architect
Nov 7, 2020 · Fundamentals

Understanding System Architecture and Common Architectural Patterns

This article explains the concept of system architecture, why it matters, the challenges it faces such as complexity and changeability, and reviews major architectural patterns—including client‑server, peer‑to‑peer, MVC, layered, micro‑service, event‑source, and hexagonal—providing a solid foundation for designing robust software systems.

architectural patternssoftware designsystem architecture
0 likes · 16 min read
Understanding System Architecture and Common Architectural Patterns
IT Architects Alliance
IT Architects Alliance
Nov 2, 2020 · Backend Development

How DDD Can Tame Complex Business Logic in Modern Backend Systems

This article explores how Domain‑Driven Design helps the Tongtian Tower platform manage rapidly growing business complexity by separating business and technical concerns, introducing strategic and tactical design, bounded contexts, layered and hexagonal architectures, and complementary patterns such as CQRS and domain primitives.

CQRSDomain-Driven Designbackend architecture
0 likes · 40 min read
How DDD Can Tame Complex Business Logic in Modern Backend Systems
JD Cloud Developers
JD Cloud Developers
Oct 9, 2020 · Fundamentals

4 Programming Habits to Unlearn for Cleaner, More Efficient Code

This article identifies four common programming patterns—loops, conditional statements, vague variable names, and global scope—that hinder code clarity and maintainability, and shows how to replace them with higher‑order functions, data‑driven structures, purposeful naming, and encapsulation techniques.

JavaScriptcode refactoringfunctional programming
0 likes · 9 min read
4 Programming Habits to Unlearn for Cleaner, More Efficient Code
ITFLY8 Architecture Home
ITFLY8 Architecture Home
Oct 5, 2020 · Cloud Native

Should Microservices Be Your Default Architecture? Key Questions to Ask

Before defaulting to a microservices architecture, developers should evaluate whether their application is large enough, truly needs component scaling, can handle cross-service transactions, and can tolerate increased latency and complexity, as these factors determine if microservices will add value or unnecessary overhead.

Backendcloud-nativemicroservices
0 likes · 7 min read
Should Microservices Be Your Default Architecture? Key Questions to Ask
ITFLY8 Architecture Home
ITFLY8 Architecture Home
Oct 2, 2020 · Backend Development

How to Split Microservices: 3 Expert Strategies for Effective Service Decomposition

This article compares three seasoned experts' approaches to microservice splitting—vertical vs. horizontal, business‑driven, stability‑driven, and performance‑driven—highlighting trade‑offs, team size considerations, and practical guidelines for achieving scalable, maintainable architectures.

backend architecturemicroservicesservice decomposition
0 likes · 9 min read
How to Split Microservices: 3 Expert Strategies for Effective Service Decomposition
Programmer DD
Programmer DD
Sep 28, 2020 · Fundamentals

UML Relationship Cheat Sheet: From Dependency to Realization

This article explains the six core UML relationship types—Dependency, Association, Aggregation, Composition, Generalization, and Realization—detailing their semantics, visual notations, code representations in Java/C++, and practical distinctions such as lifecycle ownership and usage contexts.

AggregationCompositionUML
0 likes · 13 min read
UML Relationship Cheat Sheet: From Dependency to Realization
Programmer DD
Programmer DD
Sep 25, 2020 · Fundamentals

Why Your Code Is Overrun by if‑else and How to Refactor It Effectively

The article explains why developers often end up with excessive if‑else statements, outlines the drawbacks of deep nesting, and presents practical refactoring techniques—including condition merging, early exits, and polymorphism—to produce cleaner, more maintainable code.

Polymorphismcode refactoringif-else
0 likes · 12 min read
Why Your Code Is Overrun by if‑else and How to Refactor It Effectively
Alibaba Cloud Developer
Alibaba Cloud Developer
Sep 20, 2020 · Fundamentals

How Git’s First 1,000-Line Commit Shaped Its Core Design

An in‑depth exploration of Git’s initial 1,000‑line source code reveals the foundational design principles—workspace, index, objects, and three core object types—showing how early implementations of init‑db, update‑cache, write‑tree, and commit‑tree established the powerful, distributed version‑control system we use today.

Source Code Analysisgit internalssoftware design
0 likes · 19 min read
How Git’s First 1,000-Line Commit Shaped Its Core Design
OPPO Kernel Craftsman
OPPO Kernel Craftsman
Sep 18, 2020 · Fundamentals

Linux SCSI Subsystem Architecture and Design Framework

The article thoroughly examines the Linux SCSI subsystem architecture, illustrating how abstract hardware topology—hosts, channels, IDs, and LUNs—is modeled in software through structs such as scsi_host and scsi_device, and detailing initialization, scanning, path establishment, power management, and block‑layer integration to guide kernel storage driver design.

Block LayerData StructuresLinux kernel
0 likes · 20 min read
Linux SCSI Subsystem Architecture and Design Framework
Top Architect
Top Architect
Sep 15, 2020 · Fundamentals

Generating UML Class Diagrams in IntelliJ IDEA

This tutorial explains how to use IntelliJ IDEA's built‑in Diagram plugin to automatically generate UML class diagrams for Java classes, covering configuration steps, shortcut keys, example screenshots, and the tool's limitations for software design documentation.

IDE pluginIntelliJ IDEAJava
0 likes · 4 min read
Generating UML Class Diagrams in IntelliJ IDEA
Programmer DD
Programmer DD
Sep 9, 2020 · Fundamentals

Debunking OOP Myths: Does Object‑Oriented Design Really Hurt Performance?

This article examines the widespread popularity of object‑oriented programming, dispels two common myths— that OOP inevitably slows down applications and that using an OOP language automatically means practicing OOP—by presenting performance data, real‑world examples, and a Java procedural code sample.

Object-Oriented Programmingprogramming mythssoftware design
0 likes · 10 min read
Debunking OOP Myths: Does Object‑Oriented Design Really Hurt Performance?
Architect
Architect
Aug 17, 2020 · Backend Development

Various Approaches to Microservice Decomposition

The article examines microservice architecture as an abstract concept and presents three practical decomposition strategies—vertical/horizontal business split, business‑driven and team‑oriented considerations, and criteria based on logic, stability, reliability and performance—while also discussing cost, release frequency, and team size implications.

backend architectureservice decompositionsoftware design
0 likes · 8 min read
Various Approaches to Microservice Decomposition
Java Captain
Java Captain
Aug 16, 2020 · Fundamentals

Why Classes Should Not Be Too Long and How to Refactor Overgrown Classes

The article explains why excessively long classes with many responsibilities hinder readability and extensibility, outlines the problems of redundant code and SRP violations, and provides practical refactoring techniques—such as extracting methods, moving members, and creating new classes—using IntelliJ IDEA.

IntelliJ IDEASingle Responsibility Principleclass design
0 likes · 11 min read
Why Classes Should Not Be Too Long and How to Refactor Overgrown Classes
NetEase Smart Enterprise Tech+
NetEase Smart Enterprise Tech+
Aug 13, 2020 · Backend Development

How to Master Business Architecture with Layered and Domain‑Driven Design

This article explains how business architecture controls system complexity through layered structures and domain‑driven design, compares traditional three‑tier and microservice architectures, highlights common pitfalls, and offers a lightweight domain‑centric approach for scalable, maintainable backend systems.

Business ArchitectureDomain-Driven Designlayered architecture
0 likes · 8 min read
How to Master Business Architecture with Layered and Domain‑Driven Design
Liangxu Linux
Liangxu Linux
Aug 2, 2020 · Information Security

Why the Word “User” Is a Hidden Security Risk in Software Design

The article explains how the vague term “user” leads to design flaws and security vulnerabilities across systems like ticket‑booking platforms, Unix, and SaaS, and argues that precise terminology and early conceptual planning can prevent costly rework.

Access ControlBest PracticesUser Modeling
0 likes · 8 min read
Why the Word “User” Is a Hidden Security Risk in Software Design
QQ Music Frontend Team
QQ Music Frontend Team
Jul 20, 2020 · Fundamentals

Why Refactoring Matters: Principles, Timing, and Practical Techniques

Refactoring improves code understandability and reduces maintenance costs by reorganizing internal structure without changing behavior, and this guide explains its purpose, timing, principles, common code smells, measurement metrics, and practical techniques across data, statement, subroutine, class, and system levels.

Best Practicescode qualityrefactoring
0 likes · 20 min read
Why Refactoring Matters: Principles, Timing, and Practical Techniques
Top Architect
Top Architect
Jul 20, 2020 · Fundamentals

How to Create Effective Architecture Diagrams: Concepts, Types, and Best Practices

This article explains the value of technical diagramming, defines architecture and architecture diagrams, describes their purposes, outlines common diagram categories such as the 4+1 view, offers criteria for good diagrams, addresses typical pitfalls, and introduces the C4 model with concrete examples and a case study.

C4 modeldiagramdocumentation
0 likes · 10 min read
How to Create Effective Architecture Diagrams: Concepts, Types, and Best Practices
Full-Stack Internet Architecture
Full-Stack Internet Architecture
Jun 27, 2020 · Fundamentals

Understanding UML Class Diagram Relationships: Generalization, Realization, Aggregation, Composition, Association, and Dependency

This article explains how to correctly draw UML class diagrams by describing the six main relationship types—generalization, realization, aggregation, composition, association, and dependency—using clear examples and visual illustrations to help readers understand and apply each relationship in software modeling.

Class DiagramRelationshipsUML
0 likes · 5 min read
Understanding UML Class Diagram Relationships: Generalization, Realization, Aggregation, Composition, Association, and Dependency
Top Architect
Top Architect
Jun 26, 2020 · Fundamentals

Principles and Practices for Effective Code Review and Software Design

The article shares a senior engineer's insights on why code review is essential, outlines common pitfalls such as duplicated code, premature optimization, and poor design, and presents concrete principles and practical guidelines—including KISS, composition over inheritance, and disciplined logging—to improve code quality and maintainability in large‑scale backend projects.

Code Reviewengineeringgolang
0 likes · 41 min read
Principles and Practices for Effective Code Review and Software Design
Architects Research Society
Architects Research Society
Jun 13, 2020 · Backend Development

Overview of Application Architecture and Emerging Trends

The article examines modern application architecture trends, emphasizing service‑oriented and microservice approaches, the need to move beyond three‑tier designs, and adopting patterns, models, and structures that accommodate cloud, mobile, social, and big‑data influences.

SOAapplication architecturecloud integration
0 likes · 11 min read
Overview of Application Architecture and Emerging Trends
21CTO
21CTO
Jun 7, 2020 · Fundamentals

How to Eliminate Redundant Code: A Practical DRY Refactoring Guide in PHP

This article explains the DRY (Do Not Repeat Yourself) principle, demonstrates how duplicated PHP code in a Report class can be refactored by extracting shared logic into reusable methods, and shows the final clean implementation that improves readability and maintainability.

Best PracticesDRYPHP
0 likes · 7 min read
How to Eliminate Redundant Code: A Practical DRY Refactoring Guide in PHP
macrozheng
macrozheng
Jun 5, 2020 · Fundamentals

Why Interface‑Oriented Programming Makes Your Code Flexible and Extensible

This article explains the concept of interface‑oriented programming, using everyday analogies and Java code examples to show how defining contracts via interfaces decouples components, improves extensibility, and follows solid design principles such as the Open‑Closed Principle.

Open-Closed Principledependency inversioninterface programming
0 likes · 11 min read
Why Interface‑Oriented Programming Makes Your Code Flexible and Extensible
Programmer DD
Programmer DD
May 5, 2020 · Fundamentals

Why Long Classes Break Your Code and How to Refactor Them with IDEA

This article explains why excessively long classes are hard to read and extend, outlines the problems caused by redundant code and multiple responsibilities, and provides step‑by‑step refactoring techniques using IntelliJ IDEA to extract methods, move members, and create new classes.

IDEAJavaSingle Responsibility Principle
0 likes · 8 min read
Why Long Classes Break Your Code and How to Refactor Them with IDEA
Java Backend Technology
Java Backend Technology
May 5, 2020 · Fundamentals

Why Your 900-Line Class Is a Nightmare and How to Refactor It

The article explains why excessively long classes are hard to read, extend, and maintain, outlines the problems caused by redundant code and multiple responsibilities, and provides step‑by‑step refactoring techniques using IntelliJ IDEA to extract methods, move members, and create new classes.

IDEOOPcode quality
0 likes · 8 min read
Why Your 900-Line Class Is a Nightmare and How to Refactor It
Qunar Tech Salon
Qunar Tech Salon
Apr 28, 2020 · Fundamentals

Architecture Methodology: From Problem Identification to Application Logic Design

This article presents a comprehensive architecture methodology that guides engineers through problem identification, definition, classification, top‑down and bottom‑up derivation, model layering, and the systematic construction of product, business, logical, and physical architectures to achieve robust, maintainable software systems.

Business AnalysisR&DSystem Modeling
0 likes · 29 min read
Architecture Methodology: From Problem Identification to Application Logic Design
Youzan Coder
Youzan Coder
Apr 24, 2020 · Backend Development

What Are Architecture Patterns? Pipe-Filter and Microkernel Architecture

Architecture patterns provide reusable solutions, and this article explains the Pipe‑Filter pattern—where data passes through independent filters like a production line, used in web frameworks, compilers, and serverless functions—and the Microkernel pattern, which separates a minimal core from plug‑in modules to enhance extensibility, maintainability, and configurability.

Microkernelarchitecture patternsbackend development
0 likes · 13 min read
What Are Architecture Patterns? Pipe-Filter and Microkernel Architecture
Alibaba Cloud Developer
Alibaba Cloud Developer
Apr 7, 2020 · Fundamentals

Mastering System Architecture: A Proven Methodology for Building Robust Applications

This article shares a comprehensive architecture methodology from an experienced Alibaba senior engineer, detailing problem identification, various architecture classifications, top‑down and bottom‑up derivation techniques, and practical steps to design logical, physical, and business architectures for reliable software development.

architecturelogical architecturemethodology
0 likes · 31 min read
Mastering System Architecture: A Proven Methodology for Building Robust Applications
21CTO
21CTO
Apr 1, 2020 · Fundamentals

7 Core Skills That Separate Top Programmers from the Rest

The article examines why a small fraction of developers earn six‑figure salaries while many remain average, outlining seven decisive abilities—raw coding, debugging, simplicity, accurate schedule prediction, low‑level system knowledge, strict key‑design focus, and avoiding perfectionism—that together create a massive performance gap.

Programming FundamentalsSoftware Engineeringcareer development
0 likes · 11 min read
7 Core Skills That Separate Top Programmers from the Rest
Alibaba Cloud Developer
Alibaba Cloud Developer
Apr 1, 2020 · Fundamentals

How to Rapidly Boost Your Software Design Skills: Practical Steps for Developers

This article shares practical advice on improving a programmer's design ability, covering coding practice, theory study, hands‑on implementation, revisiting concepts, summarizing lessons, sharing knowledge, and additional tips such as designing before coding and avoiding blind reliance on patterns.

Design PatternsProgramming Fundamentalscoding practice
0 likes · 9 min read
How to Rapidly Boost Your Software Design Skills: Practical Steps for Developers
Programmer DD
Programmer DD
Mar 31, 2020 · Backend Development

Why Your Java Classes Shouldn’t Exceed a Thousand Lines—and How to Refactor Them

Long, monolithic Java classes with hundreds of methods become unreadable, hard to extend, and prone to redundant code, so this guide explains the drawbacks of oversized classes and provides step‑by‑step refactoring techniques using IntelliJ IDEA to extract methods, move members, and create new classes.

IDEAJavaSingle Responsibility Principle
0 likes · 8 min read
Why Your Java Classes Shouldn’t Exceed a Thousand Lines—and How to Refactor Them
Architecture Digest
Architecture Digest
Mar 21, 2020 · Mobile Development

Building a Cross‑Platform Payment Architecture with C++ for WeChat Pay

This article describes how a C++‑based cross‑platform framework was designed and implemented to unify iOS and Android payment flows in WeChat Pay, covering architectural motivation, business‑process abstraction, routing mechanisms, network request management, and standardized data transmission to improve quality and productivity.

C++WeChat Paycross-platform
0 likes · 15 min read
Building a Cross‑Platform Payment Architecture with C++ for WeChat Pay
WeChat Client Technology Team
WeChat Client Technology Team
Mar 20, 2020 · Mobile Development

How We Built a Cross‑Platform C++ Architecture for WeChat Pay on iOS & Android

This article explains the challenges of maintaining separate iOS and Android implementations for WeChat Pay, and details how a C++‑based cross‑platform framework—featuring abstracted business flows, a unified routing mechanism, managed network requests, and strict data‑transfer standards—dramatically improves code reuse, stability, and development productivity.

C++WeChat Paymobile architecture
0 likes · 15 min read
How We Built a Cross‑Platform C++ Architecture for WeChat Pay on iOS & Android
AntTech
AntTech
Feb 17, 2020 · Fundamentals

Top Programming Books Recommended by Alipay Researcher Wang Yi

During the pandemic, Alipay researcher Wang Yi—creator of SQLFlow and ElasticDL—shares his curated list of three influential programming books, explaining how SICP teaches abstraction and composition, how The Art of Unix Programming illustrates Unix design principles, and how Paul Graham's essays offer timeless insights for developers.

Paul GrahamSICPUnix programming
0 likes · 7 min read
Top Programming Books Recommended by Alipay Researcher Wang Yi
21CTO
21CTO
Jan 3, 2020 · Fundamentals

12 Warning Signs That Your Software Design Is Growing Too Complex

The article lists twelve danger signals—ranging from shallow modules and information leaks to vague naming and unreadable code—that reveal hidden complexity in software design and help developers identify and refactor problematic patterns.

Anti-PatternsComplexitycode quality
0 likes · 6 min read
12 Warning Signs That Your Software Design Is Growing Too Complex
Architecture Digest
Architecture Digest
Dec 27, 2019 · Fundamentals

Software Design and Modeling: Applying UML for Effective Architecture

This article explains how software architects can use UML‑based modeling to translate functional and non‑functional requirements into clear design documents, covering the essential steps, key concepts, and the seven major UML diagram types across requirement, conceptual, and detailed design phases.

Software EngineeringUMLarchitecture
0 likes · 12 min read
Software Design and Modeling: Applying UML for Effective Architecture
Continuous Delivery 2.0
Continuous Delivery 2.0
Dec 27, 2019 · Backend Development

Server‑Side vs Client‑Side Feature Flag Decision: Performance, Latency, Security, and Complexity Considerations

Choosing whether to evaluate feature flags on the server or the client impacts performance, configuration latency, security, and implementation complexity, with server‑side decisions generally offering better speed, reduced cache‑invalidation risks, protected data handling, and simpler architecture, especially for web and mobile applications.

Feature Flagsclient-server architecturesecurity
0 likes · 5 min read
Server‑Side vs Client‑Side Feature Flag Decision: Performance, Latency, Security, and Complexity Considerations
Sohu Tech Products
Sohu Tech Products
Dec 18, 2019 · Backend Development

Beware of Middleware: Why Overusing Middleware Can Be Harmful

The article argues that while middleware can simplify handling cross‑cutting concerns in HTTP APIs, overusing it leads to tangled, untestable code, and proposes refactoring middleware logic into pure functions with explicit inputs and outputs to improve clarity and maintainability.

BackendExpressHTTP
0 likes · 12 min read
Beware of Middleware: Why Overusing Middleware Can Be Harmful
58 Tech
58 Tech
Nov 22, 2019 · Fundamentals

Understanding Business Architecture: Evolution, Challenges, and Practices

The article explains what business architecture is, its evolution from monolithic to micro‑service and platform models, shares 58.com’s real‑world experience, discusses common difficulties, and offers practical guidance for architects on modeling, technology selection, and aligning with cloud and middle‑platform strategies.

Business ArchitectureCloud Computingmicroservices
0 likes · 11 min read
Understanding Business Architecture: Evolution, Challenges, and Practices
Programmer DD
Programmer DD
Nov 15, 2019 · Fundamentals

Why Concurrency Isn’t the Same as Parallelism: A Simple Analogy

This article explains the subtle difference between concurrency and parallelism using a ground‑hog and cart analogy, shows how task decomposition creates concurrent pipelines, and maps the model to scalable web‑service architecture, referencing Rob Pike’s talk “Concurrency is not Parallelism”.

ConcurrencyGoParallelism
0 likes · 7 min read
Why Concurrency Isn’t the Same as Parallelism: A Simple Analogy
21CTO
21CTO
Nov 5, 2019 · Fundamentals

Mastering Software Design: Proven Strategies to Reduce Complexity

This article distills key principles from John Ousterhout’s “A Philosophy of Software Design”, offering practical guidelines on defining and reducing software complexity through modularization, layering, thoughtful commenting, and disciplined design practices for developers.

code commentingcomplexity reductionmodular architecture
0 likes · 21 min read
Mastering Software Design: Proven Strategies to Reduce Complexity
Java Captain
Java Captain
Oct 6, 2019 · Fundamentals

Prioritizing Fundamentals Over Frameworks: A Programmer’s Reflection

The article argues that programmers should devote the majority of their limited time to mastering transferable fundamentals such as clean code, design patterns, and domain‑driven design, while allocating only a small portion to learning ever‑changing frameworks and tools, illustrated through a mentor dialogue and book recommendations.

Continuous DeliveryProgramming FundamentalsSoftware Engineering
0 likes · 8 min read
Prioritizing Fundamentals Over Frameworks: A Programmer’s Reflection
21CTO
21CTO
Sep 25, 2019 · Fundamentals

How to Reduce Software Complexity: Principles from Ousterhout’s Design Philosophy

Drawing on John Ousterhout’s “A Philosophy of Software Design,” this article explores how to lower software complexity through clear definitions, modular design, layering, information hiding, thoughtful commenting, and strategic development practices, offering actionable principles for building maintainable systems.

coding principlescomplexity reductionmodular architecture
0 likes · 20 min read
How to Reduce Software Complexity: Principles from Ousterhout’s Design Philosophy
21CTO
21CTO
Sep 22, 2019 · Fundamentals

Why Reducing Complexity Is the Key to Better Software Design

This article distills the core principles from John Ousterhout's *A Philosophy of Software Design*—defining software complexity, presenting a quantitative model, and offering practical strategies such as layering, modularization, information hiding, and effective commenting—to help engineers build maintainable, low‑complexity systems.

code commentscomplexity reductionmodular architecture
0 likes · 20 min read
Why Reducing Complexity Is the Key to Better Software Design
Meituan Technology Team
Meituan Technology Team
Sep 19, 2019 · Fundamentals

Principles for Reducing Software Complexity

Drawing on Ousterhout’s philosophy, the article defines software complexity as cognitive load multiplied by development effort and offers principles such as iterative design, layered architecture, deep modules, information hiding, and purposeful documentation to systematically reduce ripple effects, dependencies, and unknowns in code.

code qualitycomplexity reductionengineering principles
0 likes · 18 min read
Principles for Reducing Software Complexity
ITFLY8 Architecture Home
ITFLY8 Architecture Home
Sep 18, 2019 · Fundamentals

Mastering System Architecture: From Purpose to Practical Methods

This article explores the core purpose of system architecture, identifies technical, business, and project-management challenges, and presents a systematic approach—systemic thinking, decomposition, abstraction, and patterns—to effectively design and implement robust architectures.

business modelingproject managementsoftware design
0 likes · 12 min read
Mastering System Architecture: From Purpose to Practical Methods
ITFLY8 Architecture Home
ITFLY8 Architecture Home
Sep 17, 2019 · Fundamentals

What Is System Architecture? A Simple Formula to Master Its Core

This article breaks down the concept of system architecture, derives a concise formula—elements plus connections plus solving specific problems—and explores its classifications, characteristics, and practical implications for designing coherent, goal‑oriented software systems.

Software Engineeringarchitecture fundamentalssoftware design
0 likes · 11 min read
What Is System Architecture? A Simple Formula to Master Its Core
Java Backend Technology
Java Backend Technology
Sep 14, 2019 · Fundamentals

Master Code Refactoring: Principles, Smells, and Practical Techniques

This article explains what refactoring is, why and when to apply it, lists common code smells with concrete examples, and provides step‑by‑step techniques for reorganizing functions, moving responsibilities, restructuring data, simplifying conditionals, and improving overall software design.

clean codecode smellsobject-oriented
0 likes · 27 min read
Master Code Refactoring: Principles, Smells, and Practical Techniques
Alibaba Cloud Developer
Alibaba Cloud Developer
Sep 11, 2019 · Fundamentals

What Makes Code Truly Good? Essential Principles and Practices

This article explores the essential characteristics of clean code, emphasizing high cohesion, low coupling, readability, proper naming, formatting, concise classes and functions, effective comments, error handling, and common code smells, while providing practical guidelines and examples for developers.

clean codecode qualityrefactoring
0 likes · 11 min read
What Makes Code Truly Good? Essential Principles and Practices
21CTO
21CTO
Aug 9, 2019 · Backend Development

Mastering Microservice Design: 5 Essential Architectural Constraints

This article explains how microservices differ from traditional monolithic delivery, outlines the five key architectural constraints—scalability, elasticity, composability, minimality, and completeness—and provides practical guidance for designing robust, loosely‑coupled services.

Backendarchitectureelasticity
0 likes · 7 min read
Mastering Microservice Design: 5 Essential Architectural Constraints
21CTO
21CTO
Aug 9, 2019 · Fundamentals

How Clean Architecture Can Simplify Your Codebase: A Deep Dive into Layered Design

This article explores the principles of Clean Architecture, explains layered thinking and dependency rules, discusses how to apply them in real projects, and reflects on the broader meaning of software architecture, including domain‑driven design and practical advice for developers seeking to improve their design skills.

Dependency RuleDomain-Driven Designclean architecture
0 likes · 15 min read
How Clean Architecture Can Simplify Your Codebase: A Deep Dive into Layered Design
Architecture Digest
Architecture Digest
Aug 7, 2019 · Fundamentals

Understanding Clean Architecture: Principles, Layers, and Practical Reflections

This article revisits the author’s earlier talk on software architecture, reorganizes and expands it with detailed explanations of Clean Architecture’s layered design, dependency rules, and related concepts such as DDD, while reflecting on how these ideas can reduce code modification difficulty and guide personal growth as an architect.

Architecture PrinciplesDependency RuleGo
0 likes · 15 min read
Understanding Clean Architecture: Principles, Layers, and Practical Reflections
Continuous Delivery 2.0
Continuous Delivery 2.0
Jul 11, 2019 · Fundamentals

Seven Practical Techniques for Writing Testable Code

Writing unit-testable code often requires refactoring, and by focusing on minimizing function size, dependencies, and complexity, developers can adopt seven practical techniques—including limiting function lines, single responsibility, dependency injection, avoiding complex parameters, using abstractions, extracting testable units, and handling private functions—to improve testability and team efficiency.

Best Practicesrefactoringsoftware design
0 likes · 6 min read
Seven Practical Techniques for Writing Testable Code
21CTO
21CTO
May 31, 2019 · Information Security

Why Using the Word “User” Can Sabotage Your Software Design

The article explains how the vague term “User” leads to poor requirements, hidden security flaws like the Confused Deputy problem, and costly redesigns, urging developers to adopt precise terminology such as “team” and “member” early in a project.

Access ControlTerminologyUser Modeling
0 likes · 8 min read
Why Using the Word “User” Can Sabotage Your Software Design
Alibaba Cloud Developer
Alibaba Cloud Developer
May 14, 2019 · Fundamentals

Why Mastering Architecture Principles Keeps Your Code Future‑Proof

This article distills the core ideas of "Clean Architecture"—explaining software system value, architecture goals, programming paradigms, design principles, component splitting, dependency handling, and boundary management—to help engineers build maintainable, extensible systems that stand the test of time.

Programming Paradigmscomponent decompositiondesign principles
0 likes · 22 min read
Why Mastering Architecture Principles Keeps Your Code Future‑Proof
Programmer DD
Programmer DD
May 3, 2019 · Information Security

Why Calling Everyone a “User” Can Cripple Your Software Security

Using the vague term “user” to describe diverse actors—passengers, agents, services, or system accounts—creates ambiguous models that lead to design flaws and serious security risks such as the Confused Deputy problem, urging developers to adopt precise terminology like “team” and “member” from the start.

Terminologyconfused deputysoftware design
0 likes · 8 min read
Why Calling Everyone a “User” Can Cripple Your Software Security
Java Backend Technology
Java Backend Technology
Mar 10, 2019 · Fundamentals

Mastering Code Refactoring: Principles, Smells, and Practical Techniques

Refactoring transforms messy code into clean, maintainable structures without altering observable behavior, covering principles, common code smells, and step‑by‑step techniques such as extracting functions, moving methods, simplifying conditionals, and reorganizing data, empowering developers to improve design, reduce bugs, and accelerate development.

Best Practicesclean codecode smells
0 likes · 26 min read
Mastering Code Refactoring: Principles, Smells, and Practical Techniques
Xianyu Technology
Xianyu Technology
Jan 31, 2019 · Backend Development

Business Isolation and Domain Modeling for Xianyu Detail Page Architecture

The article shows how to refactor a tangled Xianyu detail‑page built on legacy MVC by isolating each vertical business with the Strategy pattern, extracting shared services, packaging them as libraries or JARs, and then applying domain‑driven design to create a clean, layered, maintainable architecture.

Business IsolationDomain-Driven Designarchitecture
0 likes · 11 min read
Business Isolation and Domain Modeling for Xianyu Detail Page Architecture
ITFLY8 Architecture Home
ITFLY8 Architecture Home
Jan 3, 2019 · Fundamentals

What Is Software Architecture? Core Principles, Types, and How to Evaluate Them

Software architecture defines the structural skeleton of a system, encompassing components, connectors, constraints, and guiding principles; this article explains its essence, various classifications—from business to deployment—and offers practical criteria for assessing stability, efficiency, and security in modern server‑based applications.

Backendscalabilitysoftware design
0 likes · 15 min read
What Is Software Architecture? Core Principles, Types, and How to Evaluate Them
Architects Research Society
Architects Research Society
Dec 2, 2018 · Backend Development

Governance, Trade‑offs, and Complexity in Microservices Architecture

The article examines the nuanced challenges of microservices—including governance trade‑offs, reuse considerations, complexity versus complication, and the risks of multi‑master data—while arguing for pragmatic, centrally‑guided design to harness their potential without over‑marketing.

governancemicroservicessoftware design
0 likes · 8 min read
Governance, Trade‑offs, and Complexity in Microservices Architecture
UC Tech Team
UC Tech Team
Oct 9, 2018 · Fundamentals

Goodbye Object‑Oriented Programming: The Collapse of Inheritance, Encapsulation, and Polymorphism

The article critiques the core pillars of object‑oriented programming—inheritance, encapsulation, and polymorphism—illustrating their practical pitfalls with real‑world analogies and code examples, and proposes containment and delegation as safer alternatives before urging a shift toward functional programming.

EncapsulationInheritanceObject-Oriented Programming
0 likes · 11 min read
Goodbye Object‑Oriented Programming: The Collapse of Inheritance, Encapsulation, and Polymorphism