Linux lumps the entire operating system into one large program. A more
modern approach is to separate functionality into smaller units with
well-defined interfaces to one another. Under a monolithic kernel like
Linux, any line of code can essentially modify variables, call functions,
etc. that could wreak havoc with another portion of the system. If you do
any programming, it would be like writing an entire application as one big,
long routine.
All other things being equal, monolithic kernels, in the long run, are
probably more difficult to maintain, and more prone to inadvertent bugs,
than systems like the Hurd.
Using a microkernel also enhances portability, because the system dependent
portions of the OS are localized.
Kevin Musick