Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>The cold hard fact is that developer efficiency is going to go down with project size. This has been known for decades. There are methods to help, but they do require some discipline.</p> <p>The best solution is to go to a higher abstraction level. Write routines that will serve as building blocks, that you can use as if they were standard library or language constructs. Document their interfaces, and program only to the interfaces. If you ever feel like you need to know how a routine you're not working on is implemented, you're either using it wrong or didn't document the interface enough. Be slow to add to an interface, slower to delete anything, and remember that changing elements of it can bite you badly.</p> <p>Locality is your friend. The more you can focus on a small area, the better off you are. Programming to interfaces helps this. Keeping routines cohesive helps this, so that the routines are doing one thing at a time.</p> <p>Object orientation is very useful, since it promotes the above two. It promotes encapsulation and coding to an interface, and it groups related pieces of code together.</p> <p>Test-driven development is valuable for enforcing programming to an interface. Write tests based on the interface, not on the implementation. This has the nice side effect that the test suites themselves help define the interface. If it isn't being tested for, you don't count on it. Make sure you can run test suites easily, and get in the habit.</p> <p>Refactoring is going to be necessary. Plan on it, particularly when changing anything. You need clean code. Moreover, you will inevitably find that you've put functionality in the wrong place.</p> <p>Remember also that none of this is going to solve the problem entirely. Large software projects are inherently difficult.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload