Architecture
Think in responsibilities, modules, boundaries, public APIs, and dependencies before jumping into implementation.
Go beyond small examples and build one complete C++ application while learning modern architecture, CMake, testing, Git, CI, Docker, Qt, and maintainable design — all in one practical, hands-on workflow.
Read a free sample
Practical. Focused. Exactly what modern C++ developers need.
“The book contains a lot of the information and recommendations I used to share with my teams. Now I can simply say, ‘Read these chapters,’ instead of trying to find some obsolete page on a wiki or Confluence.”
“One challenge I’ve repeatedly faced over the years is finding the right resource for interns and junior developers: something practical and comprehensive, covering not only C++ fundamentals but also architecture, processes, tools, and the way real-world software is built. For me, No More HelloWorlds is exactly that missing piece.”
“I don’t feel like I’m just memorizing definitions or concepts. I actually find myself imagining how I would build an application.”
“My biggest takeaway so far: ‘Don’t just write code that works. Build a project that can evolve.’ It has changed the way I think about my own C++ projects. Instead of asking only, ‘How do I implement this?’, I’m starting to ask, ‘How should I structure this so it remains maintainable as it grows?”
Learn each tool in context instead of treating professional C++ development as a pile of unrelated topics.
The book develops a realistic file-search application so architectural choices can be traced all the way into C++ code, tests, and build targets.
Think in responsibilities, modules, boundaries, public APIs, and dependencies before jumping into implementation.
add_library(files-search STATIC
impl/SearcherImpl.h
impl/SearcherImpl.cpp
)
target_sources(files-search
PUBLIC
FILE_SET HEADERS
BASE_DIRS include
FILES
include/files-search/Searcher.h
)
target_include_directories(files-search
PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}")
Use targets and dependency visibility to make your build system reflect and protect your architecture.
TEST(MatchSeekerTest, EmptyStream) {
std::stringstream ss;
MatchesCollectorMock matchesCollector;
EXPECT_CALL(matchesCollector,
matchedLine(_)).Times(0);
auto seeker = MatchSeekerImpl(
std::regex(".+"));
seeker.seek(ss, matchesCollector);
}
Design for testability and build unit and integration tests as part of the normal development workflow.
Professional C++ development is not just about making code work once. It is about controlling dependencies, choosing useful abstractions, designing clear interfaces, and keeping architectural boundaries intact.
main.cpp mainwindow.h mainwindow.cpp utils.h utils.cppEverything depends on everything.
PDF + EPUB on Leanpub, with free updates.
A physical copy for your desk, notes, and bookshelf.