Accelerate your software engineering career by understanding adjacent layers.

As a developer you are always between something. If you work on UI, you are between the user and the rest of your application. If you work on web services or APIs, you are between the web framework and a database, a library, or another service. Your executable code is between the compiler and the runtime (JVM/CLR) or CPU.

While it’s possible to work just in your area, ignoring what’s above and below you is not a good long-term strategy. Knowing at least a little about adjacent layers is invaluable because it:

  • makes debugging “weird” issues easier
  • can help prevent mistakes made due to incorrect assumptions
  • allows choosing more optimal design choices

How can you learn about adjacent layers? Here are a few ideas:

  • If you are using a popular framework, a library, or a product like a database there should already be a lot of documentation readily available
  • In case of open-source projects you can simply check out the code
  • For libraries or services created in-house you can talk to the team who built them or read the code
  • You can also look at the code for JavaScript (or TypeScript) libraries because they ship as code. Minification and uglification can make it challenging
  • If you don’t have access to code and you’re working with languages like C# or Java, you can use decompilers that do a decent job generating code from the IL/bytecode
  • Your last resort is looking at or debugging the assembly, but this is hard in general and your mileage may vary.

Once you get a good grasp of your adjacent layers you can take it further and understand layers your code doesn’t directly interact with. Keep doing this and soon you will be one of only few people who understands the entire stack.

Leave a comment