If an employer asks for a large code sample, one for an entire project, what characteristics should the project have to show architectural skills and the ability to manage a large codebase?
For example, should I show off managing modules/dependencies? writing test/build scripts? design patterns? etc.
1
Your sample codebase can only show what you are knowledgeable about. For example, if you know how to write tests, then it can (and should) include tests.
Some good design principles can include:
- Single Responsibility
- High Cohesion
- Don’t Repeat Yourself (DRY)
- Keep It Simple Stupid (KISS)
- Separation of Concerns (SoC)
Your codebase should also have well-named language elements (classes, functions, etc.), be well-documented and use a consistent coding style to make it easier to read.
It’s not the size of the code base so much as the scope and complexity of the problem that was addressed and solved. Compare:
- A website with one product for sale and paid for through PayPal.
- A commercial site that displays thousands of products in hundreds of categories, indicating realtime quantity-in-stock, expected shipping time and taxes for international customers, connected to the main production systems so that the warehouse pick-pack-ship process is triggered automatically, invoices (with appropriate discounts) are generate as product is shipped, etc., etc.
Yes, the second system will be larger, but it’s the complexity of getting all of these systems humming the same tune that makes this an architectural challenge. (Especially when half the systems are legacy and if you touch them/screw them up you die.)
So I would say this: give the person interviewing you the Big Picture® (either verbally or in an Executive Summary type document), and then offer to go into any level of detail they desire of any of the workflows or subsystems.
2