Home » Software Development » Not an Expert in All Levels of Abstraction

About Bozhidar Bozhanov

Bozhidar Bozhanov
Senior Java developer, one of the top stackoverflow users, fluent with Java and Java technology stacks - Spring, JPA, JavaEE, as well as Android, Scala and any framework you throw at him. creator of Computoser - an algorithmic music composer. Worked on telecom projects, e-government and large-scale online recruitment and navigation platforms.

Not an Expert in All Levels of Abstraction

Programming is not just writing code – it is working with a huge pile of abstractions. Starting from zeroes and ones, through processor instructions, memory addresses, low-level network protocols, data structures, up to web services, component frameworks and user interface. From low-level, often tedious stuff, to more pleasant to use and maintain stuff.

We are categorized as “senior developers”. Which, to some people, automatically means that we are experts in all these level of abstraction. And if we aren’t, then we are not good. I tend to disagree with this opinion. And not only to justify my lack of expertise in all levels of abstraction.
 
 
It’s basically a tradeoff – you either focus on some of the layers, and become really good there, or you do a little bit of this and that and become no expert anyway. You can argue that at some point you should reach an expert level in most levels, one after another, but this expertise becomes redundant and obsolete with time. If today I put my application design and framework knowledge aside, and plunge into algorithms or TCP programming, in 3 years I may no longer be expert in the former, due to the advancements of technology.

Abstractions are there for a reason – to shield you from knowing a huge amount of caveats down the whole stack. If it weren’t for the abstractions, we wouldn’t be able to write decent software at all. And focusing on higher levels is what we are supposed to do, because the lower levels are already handled. This turns low-level programming into some arcane art that is only for the enlightened, but that’s not the case. It is just that demand for it is lower.

This, of course, does not mean that by learning jQuery, rails or spring, you are the best out there and there’s no need to know anything else. By all means, you must be familiar how things work below your expert level, and also – above it. Mainly because all abstractions are leaky. You can’t ignore the fact that your application consumes memory, that you’d better use a hashtable when fast access is needed, and that a TCP connection may be firewalled, even though you don’t have to write destructors, implement the hashtable or know TCP. But knowing how things work in principle in other levels of abstraction doesn’t mean you are expert there. And you don’t have to be.

Why am I writing about this at all? Because people in many companies (including big ones) tend to think it’s a must to be an expert in all levels, and especially in the lower levels. Asking all these trivia questions on interviews, assuming you have worked with data structures and network programming all your life. Of course you haven’t, and this doesn’t mean you are not an expert.

Not being an expert in all these levels is fine. Be an expert in a couple. And be sure to know how the others below and above work in principle, so that you can become an expert when there’s a need for that.

Filed under: Opinions by Bozho
 

Reference: Not an Expert in All Levels of Abstraction from our JCG partner Bozhidar Bozhanov at the Bozho’s tech blog blog.

Do you want to know how to develop your skillset to become a Java Rockstar?

Subscribe to our newsletter to start Rocking right now!

To get you started we give you our best selling eBooks for FREE!

1. JPA Mini Book

2. JVM Troubleshooting Guide

3. JUnit Tutorial for Unit Testing

4. Java Annotations Tutorial

5. Java Interview Questions

6. Spring Interview Questions

7. Android UI Design

and many more ....

 

Leave a Reply

Your email address will not be published. Required fields are marked *

*


9 − two =

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Want to take your Java Skills to the next level?
Grab our programming books for FREE!
  • Save time by leveraging our field-tested solutions to common problems.
  • The books cover a wide range of topics, from JPA and JUnit, to JMeter and Android.
  • Each book comes as a standalone guide (with source code provided), so that you use it as reference.
Last Step ...

Where should we send the free eBooks?

Good Work!
To download the books, please verify your email address by following the instructions found on the email we just sent you.