Advanced or just obscure?

Sometimes it’s clear what’s meant by one topic being more advanced than another. For example, algebra is more advanced than arithmetic because you need to know arithmetic before you can do algebra. If you can’t learn A until you’ve learned B, then A is more advanced. But often advanced is used in a looser sense.

When I became a software developer, I was surprised how loosely developers use the word advanced. For example, one function might be called more “advanced” than other, even though there was no connection between the two. The supposedly more advanced function might be more specialized or harder to use. In other words, advanced was being used as a synonym for obscure. This is curious since advanced has a positive connotation but obscure has a negative connotation.

I resisted this terminology at first, but eventually I gave in. I’ll say advanced when I’m sure people will understand my meaning, even if I cringe a little inside. For example, I have had a Twitter account SansMouse that posts one keyboard shortcut a day [1]. These are in a cycle, starting with the most well-known and generally useful shortcuts. When I say the shortcuts progress from basic to advanced, people know what I mean and they’re happy with that. But it might be more accurate to say the shortcuts regress from most useful to least useful!

I’m not writing this just to pick at how people use words. My point is that the classification of some things as more advanced than others, particularly in technology, is largely arbitrary. The application of this: don’t assume that ‘advanced’ necessarily comes after ‘basic’.

Maybe A is called more advanced than B because most people find B more accessible. That doesn’t necessarily mean that you will find B more accessible. For example, I’ve often found supposedly advanced books easier to read than introductory books. Whether the author’s style resonates with you may be more important than the level of the book.

Maybe A is called more advanced than B because most people learn B first. That could be a historical accident. Maybe A is actually easier to learn from scratch, but B came first. Teachers and authors tend to present material in the order in which they learned it. They may think of newer material as being more difficult, but a new generation may disagree.

Finally, whether one thing is more advanced than another may depend on how far you intend to pursue it. It may be harder to master A than B, but that doesn’t mean it’s harder to dabble in A than B.

In short, you need to decide for yourself what order to learn things in. Of course if you’re learning something really new, you’re in no position to say what that order should be. The best thing is to start with the conventional order. But experiment with variations. Try getting ahead of the usual path now and then. You may find a different sequence that better fits your ways of thinking and your experience.

***

[1] Sometime after this post was written I renamed SansMouse to ShortcutKeyTip. I stopped posting to that account in September 2013, but the account is still online.

Related posts:

Accelerated learning
Picking classes
Endless preparation
Gritty coordinate systems

18 thoughts on “Advanced or just obscure?

  1. If it helps you cringe less, translate ‘advanced feature’ to ‘feature typically used by advanced users’ in your mind.

    Sometimes the easiest way to organize features is by their users.

  2. That’s a good way to think about it: typically used by advanced users.

    You might then ask why something is typically used by more advanced users. It is because it requires more skill to use, and so only advanced users would be capable of using it effectively? Or is it something that is rarely useful, and so only advanced users would have had enough experience to have a need for it?

    I like UIs with an “advanced” button and hide less common features by default. And “Advanced” is a good label for it because people know what that means. But it’s fun to think of possible other labels, such as “Arcane”, “Anal retentive”, or “Show off”. :)

  3. This means that developers use the word ‘advanced’ like athletes use the word ‘developed’? And so both professional developers and professional athletes use the word ‘professional’ in the same way?

  4. I think the same about the word “elementary” in the context of “Elementary Mathematics” textbooks. These always seemed to be the hardest (and best) books at school.

    In the UK we have a qualification/curriculum called Advanced Level (A-level) for ages 16-18. These “Advanced Level” textbooks are typically far simpler than the “Elementary” ones.

    I associate “elementary” with “elementary school”, or “elementary, my dear Watson!” Perhaps the elementary books were foundational in the context of undergraduate mathematics, whereas Advanced Level (A-level) is advanced in the context of secondary school (high school).

  5. In Physics book titles give the impression of being more and more advanced until university level is reached, after which they give the impression of being more and more basic, elementary or fundamental.

    Computing has not yet reached a stage of maturity where it is cool to progress to a state that is anything other than advanced. I get some strange looks from people when I suggest that “C for Dummies” contain lots of useful insights for experienced developers.

  6. The “for dummies” books are light-hearted, but not necessarily easy to read. They’re really “for people who like flippant dialog.” If you don’t realize that, it could be a blow to your ego if you find one of them difficult to follow.

  7. I would avoid making the assumption that if something is less commonly used, that it is less useful. In other words, frequency of usage does not collate to functionality. The idea reminds me of one of Joel Spolsky’s early essays on “Bloatware” and the 80/20 rule.

    A lot of software developers are seduced by the old “80/20″ rule. It seems to make a lot of sense: 80% of the people use 20% of the features. So you convince yourself that you only need to implement 20% of the features, and you can still sell 80% as many copies.

    Unfortunately, it’s never the same 20%. Everybody uses a different set of features. In the last 10 years I have probably heard of dozens of companies who, determined not to learn from each other, tried to release “lite” word processors that only implement 20% of the features.

    I regard Advanced in its usage for user interfaces as a label for features that are not utilized by either a large percentage of the user base, or is considered contribute to an overwhelming sensation for a new or infrequent user. I see it as a generic alternative for “expert” features, which may be perceived as condescending to a new or tepid user.

    To go back to the word processor as an example, mail merge is a feature not utilized by a large portion of any user base, but it was one of the earliest examples of “office automation” that was considered a critical or important feature for those workplace users who did use it.

    I guess I view features or functionality as more akin to a free-form graph, not as monotonic plot of complexity (advanced / obscure).

  8. Reminds me of when some non-tech will suggest that a database is far more complex simply because it is larger in terms of records (and not tables, relationships, etc.)

  9. I’m in documentation, and we’ve had this discussion many times, but from the perspective of how we should present things. An analogy that works for many people is the college-level one: 100 level, 200 level, 400 level. This seems not to violate your observation, inasmuch as a 400-level class is not necessarily “harder” than, say, a 200-level class; it might just be more focused on a specific detail of the field. (Asynchronous programming: hard, or just obscure?) That said, for most usages, it’s probably safe to assume that “advanced” implies that you have some basic knowledge of the subject already, and that this applies in many developer scenarios as well.

    A dilemma we also have in documentation w/r/t “advanced” is that the spectrum of “advanced” is tricky when you’re trying to sort your audience. For example, let’s say a reader is quite proficient with programming languages and with developing applications, but is new to (e.g.) creating applications for mobile phones. The ramp-up documentation that that reader needs is considerably different than the documentation that someone needs who is new to programming, even tho both audiences need an overview of phone programming. An advanced developer can get information from a simple intro, but not only is it likely to have of lot of gee-whiz cruft in it for the beginner, but it’s unlikely to have in it the sort of conceptual, what’s-going-on depth that would be useful to the experienced programmer. So: can there be such a thing as an “advanced” introduction? Theoretically, yes. (The life cycle of documentation often reflects an ever-widening audience for it, getting more and more descriptive as the audience broadens: see Engineers who write/Writing for engineers.)

  10. Makes me think of the difference between “low-level” and “high-level” languages. I was complaining to my non-techie girlfriend once of some function or other I was dealing with being “obscurely low-level”; she looked at me like I was some sort of programming elitist before I explained the meaning of the two terms to programmers.

  11. @john:
    “You might then ask why something is typically used by more advanced user”
    because advanced features are usually used for advanced problems. for instance maybe most people will never need to set up a proxy, manually configure their tcp/ip settings, or edit their routing tables, but some people will and these are not normal problems but advanced problems, problems for which you need advanced knowledge to understand.

  12. So what? JL’s comment above seems like it says it all. You are expressing that what is advanced for on Je person may not be for another. Well, all to do about nothing. Just a bunch of observations.

Leave a Reply

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

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=""> <strike> <strong>