Foreword
In the far-future year of 2364 2002, generation-ships carry humanity to distant worlds.
Somehow, we’re still using Java.
This is a book about the craft of software engineering, in story form.
This book is a community-edited omnibus collection of a series of short-fiction articles originally published serially in the (now-defunct) ObjectMentor and InformIT magazines, written by Robert C. Martin, a.k.a. "Uncle Bob." Some of the later articles come from Martin’s own blog, The Clean Coder.
The story of The Craftsman is told as a series of Socratic dialogues between a new apprentice programmer named Alphonse, and the more-experienced programmers he works with. It’s mostly just a framing device for talking about software, but there’s also a little bit of bildungsroman to it.
This book is intended to be a companion to nonfiction titles like Design Patterns and Martin’s own Clean Code series. Where non-fiction books can advocate for software-engineering practices and explain their benefits with retrospective object-lessons, the fictionalized treatment given here can give the reader a better sense of how it feels to apply — or fail to apply! — these processes in the moment; and can even build within readers a level of intuition for applying these skills.
About the Code Examples in This Book
That being said — please, do not try to learn Java from this book.
Much of the source material for this book was written more than 15 years ago.
When the earliest articles in the Craftsman series were being written, the
current version of the Java language was J2SE 1.4. Many language features we
take for granted today did not yet exist; and many practices we now avoid
(e.g. direct spawning of Threads) were still considered idiomatic.
The code in this book will likely eventually be modernized — or even translated into other languages with less boilerplate — to streamline the reading experience.
However, keep in mind that the code examples presented in each chapter aren’t the point of this book. Your focus as a reader should not be on what is being written, but on how it is being written — how source code is being taken from one revision to the next. The process of software engineering demonstrated in this book needs no modernization; it is as applicable today as it was 15 years ago.
(Also, some of the code is bad on purpose. In this story, inexperienced developers will write some rather bad code. And, as well, inexperienced code-reviewers won’t necessarily catch those devs' mistakes! Remember while reading, that a journeyman is not a master…)
New Edition progress
This book is currently a work-in-progress; only 3 chapters are yet available. Some chapters are still being imported from the original source material and/or being edited to fit this book’s formatting standards.
Please feel free to start reading, however. The chapters that are already published are considered "fit for print"; only minor pedantic changes will be made to these. New chapters will be made available as they reach the same level of quality.
| Task | % | Progress |
|---|---|---|
Import of source articles |
8/63 |
|
Joining of imported articles into chapters |
8/63 |
| Task | % | Progress |
|---|---|---|
Reformatting and content-editing text |
3/3 |
|
Reformatting code |
3/3 |
|
Modernizing code |
0/3 |
| Task | % | Progress |
|---|---|---|
Structural editing |
0% |
|
Soliciting feedback and QA |
0% |