Java Guild course · Mission
Workspace · mission
**Submit the Solirius Java Guild "Library Management System" tech test as a piece
of work that reads like a professional engineer's, and then defend every decision
in it out loud in an interview.**
Tom has been sent java-guild-candidate-test-intermediate — a Maven project from
Solirius Consulting containing a working but flawed Library Management System
and a README asking for it to be extended at Intermediate level.
The success condition is not "makes the menu work". It is:
Produce a submission whose commit history, tests, design and README together
demonstrate that the candidate saw what was wrong with the starter code, fixed
it deliberately, and can say why.
The README reads like a blank-page exercise ("Create a simplified Library
Management System"). It is not. The repository already contains a complete
implementation. That changes the task entirely:
exceptions/ package containing three exception classes —AlreadyBorrowedException, BookNotFoundException, NotBorrowedException —
and not one of them is referenced anywhere in the code. The Intermediate
requirement asks you to handle exactly those three scenarios. They have been
left on the table for you.
Library.borrowBook throws IOException for a domain failure, and it"Book not found" for a book that is found and merely already
borrowed. The library lies.
mvn test reports No tests to run. The Graduate requirement — unit testsBook and Library — is entirely unmet.
pom.xml declares mockito-core and sqlite-jdbc, neither of whichReading a codebase for what it is asking for is the actual skill under test.
Tom can, cold:
1. Walk a stranger through the starter code and name every defect in it, with the
failure mode, before running anything.
2. Drive each fix test-first — writing a test that fails for the right reason,
then the code that makes it pass.
3. Justify each design decision with a named principle and the concrete cost of
the alternative — not just "SOLID".
4. Produce a git history a reviewer can read top to bottom and understand the
work without opening the diff.
5. Package and send the submission so that an assessor can build, run and read it
with zero friction.
6. Answer, without hesitating: *checked or unchecked? Why Optional? Why not a
record? Where does persistence belong? What would you do next?*
~/Desktop/java-guild-candidate-test-intermediate-main