It seems to me that modern offices have a bad model of operation. They usually involve a strict hierarchy of employees with orders given directly down one level. Information filters down when needed, and flows up when requested. Changing the hierarchy itself is a very slow process, and has little to do with the type of information that moves.
Allow me to geek out a moment. Object-oriented programming is a Good Thing because it abstracts out some messy details from other types of languages. Rather than having a function like do-something(with, some, values) you get object-with-state.do-something(another-object). This is important for several reasons:
It’s often easier to think about objects and interaction than processes with specific inputs and outputs. For example, you kick a football. It makes more sense to say you kick it [
you.kick(football)] than to say there is a kick occurring, with you and the football being primary participants. [kick(you, football)]Objects abstract away ugliness. A lot of things in a program can logically be thought of as objects. Say you’re getting information from the web. The site is an object, the receiving computer is an object, (perhaps the stream is an object) and all these objects interact nicely. Each thing knows how to deal with its own information, each thing can exist alone or it can accept input from others. A football object knows to slightly deform and rocket away when it’s kicked. The kicker doesn’t have to know that. If everything had to do every job, it couldn’t be as efficient. Abstraction creates efficiency.
Object-orientation isn’t a one-size-fits-all solution, but it’s often a godsend.
Duck Typing is a concept from Ruby, or at least it was popularized by Ruby. Type systems in general determine how a language deals with different types of objects or values. Static typing systems bind variables to specific data types, whereas dynamic typing allows a variable’s type to change. Duck typing, on the other hand, doesn’t care what type a variable is - if it responds to certain signals of a type, it is that type. If it walks like a duck and quacks like a duck, it is a duck. (thanks Dave)
Where am I going with all this? These models are a perfect fit for an efficient office.
Each employee is a separate object that knows how to do its own work - it specializes in one area or another. Each object answers to different signals with different responses. These responses are customized towards one type of job, a Class if you will, that other classes can rely on to deliver responses to certain signals. The office workflow is just like a well-structured program:
The main program body (the CEO) contains (hires) various classes (employees) that do specific tasks (positions), and some bit of code to start it all off and organize it (his job). The classes then do their own work and interact with each other, and outside programs, to accomplish the purpose of the program (the company). The classes, being specialized, don’t need to worry about doing everyone else’s job - and because everyone is designated to one thing, this both gives them more time to concentrate and increases efficiency. Return values (TPS reports) flow freely and honestly, and everyone gets exactly the information they want. Information flows through both return values (up) and parameters/objects (down) so no one is excluded. Private class methods (internal security) can still ensure some secrecy where needed. In short, perfect optimization.
What does all this mean? The Programmer Is God. Muahaha… er, no, just that businesses should listen to their programmers more often, and they might just be efficient.

Home > About This Post
This entry was posted by redshift on Friday, January 14th, 2005, at 2:51 pm, and was filed in Programming, Work.
Subscribe to the
RSS feed for all comments to this post.
Post a Comment