Jan
26th

Big Programming Words or Phrases

Happy New Year! Marketing Technology finds and reports on the latest technology that will enable your business to effectively market to your audience, for acquisition or retention strategies. Subscribe now the Marketing Technology Blog RSS feed or to the Marketing Technology Email to have new content sent directly to your inbox. You'll also find my other business blog helpful, Social Media Domination.

Pocket ProtectorWorking with some exceptional programmers, I often find myself in meetings with architects, leads and developers who (I think) love to throw some big words or phrases out there to try and scare the heck out of Product Managers or their clients.

It’s one of those things that programmers like to do. Here’s ten of them with a very simple description (that will undoubtedly draw the ire of developers everywhere as I hack their terminology to death with my simple car metaphors):

  1. Abstraction - this is taking a difficult process or function and basically breaking it down logically… either by hierarchy (A belongs to B, B belongs to C, etc.) or by feature or function (color, size, weight, etc.). Abstraction makes object-oriented programming easier by organizing the functionality logically. To build my car, I build a frame, an engine, and a body separately.
  2. Deprecation - this means that there is some old code in the system that may remain but needs phased out. When code is deprecated, programmers don’t reference the code or utilize newer code until all references are gone to the old, at which time it should be removed. Sometimes, if it’s a feature that’s going away, you can keep it for a while with a warning to your users that it’s going away. I get a new stereo system with new wiring but I leave the old wiring and don’t use it.
  3. Encapsulation - this is the process of organizing your programming functions within a parent when the function doesn’t reach across any other parts of the system. If you have millions of functions, you want to have them efficiently organized and functioning within the areas that they operate rather than having them available globally. I put the engine’s supporting mechanics in the engine compartment… I don’t put the oil filter in the back seat.
  4. Inheritance - this is the ability to take on the properties of another piece of common code (a class) in order to reuse it for new functionality without having to rewrite it. Inheritance is another good object oriented development practice. My car seat can be used to carry a child or an adult - whoever sits in it.
  5. Normalization - this is the method of organizing data more efficiency in a database by building out references. An example would be if I had to record traffic lights all day… red, yellow and green. Rather than write each record with red, yellow, and green - I write 1, 2, and 3 and then make another table where 1 = red, 2= yellow and 3 = green. This way I only record red, yellow and green once. Each of my car doors has the same door handle. One handle, used in 4 different locations rather than 4 different handles.
  6. Object Oriented - in modern programming languages, this is a design method that allows you to write specific code in pieces, by functionality, and then reuse them. An example would be if I wanted to check for a validly constructed email address. I could build the function once, and then use it where ever I need to in my application. My car has 18″ rims that can be used on other cars by the same or other manufacturers.
  7. Polymorphism - This one is tough to explain, but basically it’s the ability to develop code that can be used dynamically for other situations. In other words, it can inherit unique and dynamic functionality simply by the way it’s referenced. This is a very efficient means of development. I can use my automobile’s electrical outlet to charge my phone or to supply juice to my tire pump.
  8. Recursion - this is a method where code references itself. Sometimes, it’s efficient and intentional, but other times it can wind up spiraling your applications out of control. I click seek on my car stereo and it loops through the radio stations. It never finishes, just keeps going.
  9. Refactoring - this is the process of rewriting code to make it easier to follow or to organize it better but not necessarily add any additional functionality. I rebuild my engine.
  10. Server Oriented Architecture (SOA) - take object oriented programming and apply it to large systems where you can have entire systems that do certain functions. You might have a customer relationship management system that speaks to an ecommerce system that speaks to a shipping system, etc. I pull a trailer with my car to ship items from one place to another. I use a trailor hitch (XML) to connect them.

I realize that my metaphors weren’t always perfectly on target. I hope they helped a little bit, though!

Some advice when you hear these words in your next meeting with a developer… don’t run back to your seat and look them up on Wikipedia, they’ll be watching. Don’t flinch, they’ll attack. Here’s what to do… ponder out the window as if you’re in deep thought and then look back with an inquisitive look or scratch your chin. Wait for them to follow up their declaration with more info.

… They’re watching.

RSS feed | Trackback URI

8 Comments »

Comment by AL
2007-01-27 01:05:21

LOL you really nailed it Doug :) Are you trying to put us out of business? You know damn well we bank on those concepts not being understood and therefore having our way with clients. Now we gotta figure out a way to blow them a way by combining those buzzwords to create one giant phrase that may go like this:

Well you know the feature you’re trying to put in can be abstracted to multiple objects that encapsulate the functionality and communicate through an service oriented architecutre.

Comment by Douglas Karr
2007-01-27 09:57:45

Thanks, AL! Your quote is brilliant.
Comment by AL
2007-01-27 10:07:04

Thanks. Hope you bought it!
Comment by Douglas Karr
2007-01-27 11:00:49

I’m looking out the window pondering it. :)
(Comments wont nest below this level)
 
 
 
 
Comment by Dean Taplin
2007-01-27 14:58:11

Being a software developer I can appreciate this post. We’re not all that bad though ;-) I would never bamboozle people with such techno babble :-)

Let me try and think up some more words for you….

Comment by Douglas Karr
2007-01-27 15:24:05

All in good fun, Dean! Thanks for stopping by! :)
 
 
2007-02-15 23:09:02

[...] are fancy programming terms that can be thrown out for all of these; however, my goal was to put these in common terms that [...]
 
2007-10-22 20:18:54

[...] or division. This is where I simplify my code. Rather than one huge monolithic script, I abstract as much of the code I can into include files and classes. With web development, I tend to work from [...]
 
Name (required)
E-mail (required - never shown publicly)
URI
Your Comment (smaller size | larger size)
You may use <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> in your comment.

My Comment Policy: I moderate comments. Please be patient:

  • Spam will happily be destroyed.
  • Use your real name, not some keywords. Otherwise it will be destroyed.
  • Mean comments aren't necessary. If I don't post them I will reply personally to let you know why.
  • Lewd comments will be edited, I don't want my readers leaving because of offensive content.
Great debate, criticism and colorful commentary is always appreciated and approved!