10

In April, I'm going to be giving a talk called **English 2.0 - Understanding the Language of Developers" to a group of English teachers. The purpose is in two hours to give them a quick background in key concepts so that they can better understand developer blogs and podcasts and are able to ask better questions when talking to developers.

What do you think are the most important concepts to understand, concepts that developers take for granted but the general public is not familiar with? Here are a few ideas:

  • version control
  • abstractions
  • pub/sub
  • push vs. pull
  • debugging
  • modularity
  • three-tier architecture
  • class/object
  • "spaghetti code" vs. OOP
  • exception throwing
  • crowd sourcing
  • refactoring
  • the cloud
  • DRY - don't repeat yourself
  • client/server
  • unit testing
  • designer/developer
11
  • 2
    I wonder if it's possible taking them through several websites (open source projects etc) and then getting them to pick out words/terminology they don't understand? Jan 21, 2011 at 9:08
  • 2
    @Martijn: this page would be perfect for that ;-)
    – Syg
    Jan 21, 2011 at 13:05
  • 9
    Spaghetti code vs. OOP? You can have Spaghetti OOP code and well structured, readable non-OOP code. Jan 21, 2011 at 14:16
  • 4
    Why do English teachers particularly want to talk to software developers as opposed to, say, medical doctors or physicists? Jan 14, 2014 at 17:16
  • 2
    Can I ask why an English teacher has any need to know these terms? Most of these are implementation level information where if the English teacher was a stakeholder they would care more about some very different terms.
    – Rig
    Jan 14, 2014 at 17:49

8 Answers 8

7

For definitions of these terms see the Network Dictionary

This will give you an almost complete list of all terms that you'll ever encounter (this covers any phrases that may be missed on this page). Obviously, you'll want to trawl through these looking for those that are relevant to you and your intended audience.

As an example, consider some of the entries under D:

Daemon
Data Architect
Database Normalization

All seem quite useful. However, there are millions of entries so you may want to apply some rules (if you've heard of it, then it's in, otherwise it's out):

  1. No acronyms (e.g. TCP/IP is in, OOD is out)
  2. No specific application names (e.g. Microsoft Word is in, Kazaa-Lite is out)
  3. No specific language names (e.g. Java is in, Haskell is out)

Hope it helps

EDIT: Originally sourced from: http://www.networkdictionary.com/software/dictionary.php but the site appears to have been abandoned.

EDIT 2: It appears that the Internet Archive have a copy: https://web.archive.org/web/20120507195610/http://www.networkdictionary.com/software/d.php Thanks to @locster for the link.

4
  • Daemon nice one! +1
    – user2567
    Jan 21, 2011 at 16:14
  • 3
    The link does not seem to work anymore.
    – Jan Hudec
    Jan 14, 2014 at 15:10
  • @JanHudec Edited to reflect that it's gone. Shame - it was a good source of material.
    – Gary
    Jan 14, 2014 at 17:29
  • 1
5

A few words from mathematics:

  1. Canonical. The distinguished representative of a group of equivalent items.
  2. Hash. Not usually made from cabbage.
  3. Heuristic. An imperfect solution that may be fine given the circumstances, and that does not over-promise.
  4. Linear / exponential. How the rate of memory or processor is affected by the size of the input.

A few words that are often misinterpreted:

  1. Proxy. Something that acts on behalf of another.
  2. Client/Server. Like your browser vs a web server.
  3. Master/Slave. Nothing to do with human slavery or S&M, usually.
  4. Daemon. A process that usually runs without human interaction. Nothing diabolical.
  5. Wizard. A user-interface element that guides a human through a procedure.

A few words whose violent connotations are usually unintended:

  1. Kill. When applied to processes, not kittens.
  2. Thrash. A process that is not getting anything done due to lack of memory to expand into.
  3. Bash. A scripting language.
  4. Crash. Eminently survivable for anything capable of rebooting.
  5. Bang. Another name for the symbol '!'.
  6. etc.

And it may be worthwhile including a list of epithets since everyone wants to know when they're being talked about : pointy-haired boss, etc.

2

I would add those:

  • agile
  • KISS (Keep It Simple Stupid)
  • refactoring
  • application programming interface
1
  • They are thrown around often enough in blogs and programers.se often enough. I was raised off of KISS. (we won't talk about the band...) Jan 21, 2011 at 13:09
1
  • YAGNI - You ain't gonna need it
  • Scrum
  • KISS
  • Ajax
  • Encapsulation
  • Inheritance
  • Web Service
  • Components
1

You might want to discuss the precision of language. I sometimes joke that software development necessarily turns us into pedants, not because we enjoy it, but because when you're programming you very often need to be precise. This then leads into the large amount of jargon, because domain-specific language allows you to be both quick and precise.

1
  • +1 this is very true. Witness all the questions here that ask if X is 'required' or 'needed', when the asker really means 'recommended'. If one can't ask questions precisely, they are at a disadvantage because our field requires precision. Jan 14, 2014 at 16:40
1

I'd love it if you'd address non-standard uses of punctuation typical with some programmers, like "I refuse to put the comma in a string literal quotation when the source did not use a comma", <----- said Brian.

The use of brackets, [], and mustaches (or braces, for the less hip crowd) {} could be similarly given treatment.

3- Recursion might be fun to point out. See point 3.

For a fun break, it might be enjoyable to point out some purely cultural inspirations that are common to much of the developer community, from raptors (thanks, XKCD), to Monty Python, to a pointer back to some of the early common grounds that founded the modern community: IRC, bulletin boards/forums, and Usenet.

0

SDLC would be my suggestion for another topic to cover.

A few other terms that may be worth covering:

  • Application
  • System
  • Program
  • Requirements

If you get outside of technical folks some of these terms can take on other meanings. Applying for a job can mean taking an application so some people may not think of software in terms of applications. Similarly, there are recreational activities and government initiatives that some people may view as programs. Thus, there may be a difference between program managers at Microsoft and program managers at the YMCA, just to give a specific example here.

I'd be tempted to see if you could solicit ideas from the participants in advance and have part of the talk be a bit more interactive. This is just an idea for the talk itself that I don't know if you already considered this or not.

0

I would include a reference card/cheat-sheet for everyone to take home. Remembering all that stuff will be hard if a lot of it is new.

On the subject, I would definitely add "design patterns" as a general concept.

Not the answer you're looking for? Browse other questions tagged or ask your own question.