Appendix A. How Tools Scale

If you change the order of magnitude of a problem, then it becomes a different problem.

—Anonymous

This appendix discusses how tools scale as a project grows. When a project grows, there are a number of ways it can grow:

  • More files and directories, which demands more from the underlying filesystem. The subjective experience of working with 100 files in a single directory is quite different from that of working with 1,000 files.

  • Longer files, with more functions, methods, and classes in those files. A 1,000-line file can often be edited much more easily than a 100,000-line one. Generated source files can reach such sizes.

  • More generated files that need to be combined. Linking 100 object files into a library is much faster than linking 1,000 such files together. Creating a .jar file from 1,000 .class files is quite different from creating one with 10,000 .class files. That’s not even trying to resolve references between the files, just handling an order of magnitude more files.

  • Different versions of the same product are produced from the same source code.

  • More products are produced using the same source code in different ways.

One purpose of the results in this appendix is to encourage toolsmiths to measure the tools that they support. Writing small project generators is an interesting challenge of making sure that the generated projects resemble real projects. I’m not aware of any public project that generates skeletons of projects’ source code, but I think ...

Get Practical Development Environments now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.