The Design of Software (CLOSED)

A public forum for discussing the design of software, from the user interface to the code architecture. Now closed.

The "Design of Software" discussion group has been merged with the main Joel on Software discussion group.

The archives will remain online indefinitely.

Contemporary software & programming

What do you think about "contemporary software" and "contemporary programming"? What challenges separate these concepts from traditional ones?
Akko
Thursday, March 15, 2007
 
 
Perhaps you could define the concepts, or at least your interpretation of them?


Are you talking contemporary languages? Development methodologies?  Technologies?

One thing I've learned, in truth, if you look at things closely, there's actually very little that's really "new".  Most "new" things are old things in fancy suits.
Dan Fleet Send private email
Thursday, March 15, 2007
 
 
Dan, I am trying to define these concepts because it seems all we have are pretty old (at least, from 90s) and
boring :-)
Akko
Thursday, March 15, 2007
 
 
I think we're still evolving what "traditional" programming is, so trying to draw a distinction between "contemporary" and "traditional" seems a pointless exercise in buzz-wordism.

"Contemporary" usually means "modern".  Since the 'modern' platform of text editor, computer language, and compiler, running on an IDE of some kind, only came into existence around 1974 or so, almost by definition everything we do is 'modern'.

So it sounds like you're trying to re-define "contemporary" to mean "what we started doing less than 5 years ago" or something.  Which is a pointless distinction to try to draw.
AllanL5
Thursday, March 15, 2007
 
 
Allan, I am asking what you are thinking not what you are doing. Is it the same :-)
Akko
Thursday, March 15, 2007
 
 
I agree with Dan and Allen.

We use a lot of tools that have been around for only a year, and a lot of tools that have been around since the late 70's. We also use a lot of programming practices that are both "new" and "old". The only thing that divides them is the date they were introduced to the world.

For example, we have written some network software for Blackberry clients (relatively new) to interact with Lotus Notes servers (middle of the road), in C (very old) recently. Is that contemporary or traditional? My answer: both and neither.

It really depends on what you mean by traditional verses contemporary and everyone else will have a different opinion. For example, people with a UNIX background will draw a different line than people who grew up with Windows 98 onwards.
TheDavid
Thursday, March 15, 2007
 
 
"What do you think about "contemporary software" and "contemporary programming"? What challenges separate these concepts from traditional ones?"

What do I think about this, having answered what I think once already?

I think "contemporary software" is an empty buzzword.  I think there are no "challenges" that "separate these concepts from traditional ones" because "these concepts" are not different from "traditional ones". 

You're asking me how a rose-colored apple differs from a red-colored apple -- without specifying any further what differences YOU see that leads you to make any distinction at all, except for vocabulary.

So until you give a better definition for your terms, that's what I think.
AllanL5
Thursday, March 15, 2007
 
 
Contemporary is so yesterday.
getBent( )
Thursday, March 15, 2007
 
 
Allan: "I think "contemporary software" is an empty buzzword."

The books "Practical Statecharts in C/C++" by Miro Samek
and "Categories for Software Engineering" by Jose Luiz Fladeiro (for allplacations see the web site of ATX Software: www.atxsoftware.com), plus http://domino.research.ibm.com/comm/research_projects.nsf/pages/gac.index.html, I would definitely name as contemporary software & programming.
Akko
Thursday, March 15, 2007
 
 
+ two more classical (but for me ever-contemporary) books: "An Introduction to General Systems Thinking" by Gerald M. Weinberg about principles of meta-design and "Hidden Order. How Adaptation Builds Complexity" by John H. Holland.
Akko
Thursday, March 15, 2007
 
 
+ the book "Object-Process Methodology. A holistic Systems Paradigm" by Dov Dori (http://dori2.technion.ac.il/opm/) + many more...
Akko
Thursday, March 15, 2007
 
 
What do you consider "contemporary" about these examples?
Dan Fleet Send private email
Thursday, March 15, 2007
 
 
Probably, new excitement, new ideas, a paradigm shift in software & programming...

They are so different from what most of us are doing in their cubicles that we even started to think there is nothing else than… our Pleasantville :-)
Akko
Thursday, March 15, 2007
 
 
Do you read craigslist or Joel job's list? It's... boring to death! All smart students are trying to avoid our industry...
Akko
Thursday, March 15, 2007
 
 
Finally we have a definition to work with: contemporary = exciting bleeding edge stuff that attracts "rock stars" and lots of publicity and fame and fortune, and you normally would not expect to find contemporary work in companies that don't make innovative software their primary business.

Right?

Well, if that's the case, your chances of getting 15 minutes of fame is pretty much the only practical difference between contemporary and traditional. I mean sure, practical statecharts are cool, but they're just another tool to me, just like RoR, UML, OOP, ASM...
TheDavid
Thursday, March 15, 2007
 
 
David: "Finally we have a definition to work with: contemporary = exciting bleeding edge stuff that attracts "rock stars" and lots of publicity and fame and fortune, and you normally would not expect to find contemporary work in companies that don't make innovative software their primary business. Right?"

Wrong! Contemporary software deals primary with two issues: 1) complexity of business & software problems, and 2) adequacy of our solutions for these problems. It recognizes that common sense, the very foundation of our traditional approach, is not enough for it. It uses advanced terminological frameworks based on General Systems Theory, Category Theory, Complexity, etc. to articulate problems adequaly (without over-simplifications and lots of common-sense-assumptions). It uses advanced sciences: mathematics and statistics, modern heuristics, optimizations, and weak AI, to solve these problems correctly. It develops advanced software systems based on intelligence, adaptability (cybernetics), and evolution (genetic algorithms).
Akko
Thursday, March 15, 2007
 
 
Wrong are you Akko!

"Comtemporary" means what is done today,
which is mostly bloatware.

Most of the "solutions" you mentioned
are in fact very old research areas, and
never took off in terms of use - they
were consigned to the trashcan of history.
So, more "failed" than "contemporary".

And as for the "problems" you mentioned,
they just don't exist. Our "business problems"
are no more complicated than they were in
the late sixties, when THEY LANDED ON THE MOON!
Let me repeat THEY LANDED ON THE MOON!

Go look on wikipedia for the computer systems
they did that with. No stupid web or ERP app
we have today deserves more sophisticated
hardware or software than the moon lander.

The solution is not in software; we have had
good tools, such as high-level languages
and declarative programming, for decades.
We have sufficiently good tools to solve any
software problem if we wanted.

But because we have extremely bad software
purchasing and investment practices today
we get the bloatware I mentioned above, as
well as quality problems etc.

But we don't want good programs so we just
don't use the tools. Instead we waste time on
low-level garbage like object oriented
programming, UML, frameworks etc etc etc.

That's what comes from trying to solve
management and political problems by writing
code - a fool's errand.

You solve them by  political action:
"No you can't have it in cornflower blue"
"Just because you want it by that deadline
 it doesn't mean it's physically possible"
"No I'm not working overtime because you
 sold something that can't be built"
"No we can't push it out without testing"
Object hater
Friday, March 16, 2007
 
 
Do you mean AI? I am talking about weak AI (AI methods) not AI aim of 80s...

You can do very sophisticated functionality for one particular object ("embedded solution"). The problem is to make an off-the-shelf solution for diverse (with different degree of similarity) objects... to be profitable! That moon project wasn’t very profitable, it was the very political, prestigious (to save a face of the nation) one!
Akko
Friday, March 16, 2007
 
 
Plus, our legacy software wasn't adaptive at all. It's the very reason why in 90s we started to re-write it (if it was possible) using cheap labor of VB programmers.
Akko
Friday, March 16, 2007
 
 
Have you ever experimented with state machines as a way organize your objects?  If not, check out my previous post on Software Circuits. The fundamental concepts are definitely not new, but I think this implementation is greatly improved.
Mark Truluck Send private email
Friday, March 16, 2007
 
 
And about traditional approach: it deals mostly with SIMPLE systems (who cares about a size of code) and based on fixed, well-defined (without contradictions), and fully defined from the beginning business requirements. But business is dynamic, chaotic in some aspects, and constantly evolving! We need to learn how to build soft-systems with the same characteristics! I am afraid that today we just offer to business some technological models (from Wrox books, for example) without estimation of their ADEQUACY. Business is ILLITERATE in technological aspects… like our recruiters and most managers… and this is the very reason why they transform software & programming into COMMODITIES.

References:
1. www.craigslist.org;
2. http://jobs.joelonsoftware.com;
3. all jobs postings sites.
Akko
Friday, March 16, 2007
 
 
It seems to support such simple systems we do outsourcing, hire cheap immigrants and pay lots of money (saved from design & development) for customization, maintenance ( the "favorite technique" of many programmers is refactoring :-) ), and to army of network, DB, etc. administrators.
Akko
Friday, March 16, 2007
 
 
Akko, the moon lander was not "simple".
Business logic just is.

Really business logic is never a difficult problem.
It starts to look infinitely difficult if you keep
saying yes to every extra demand business people make.

They make these demands because they want to have
everything without paying, and because they don't
want to know about technological aspects. I bet
they really want to be "technologically illiterate"
so they don't have to face the facts that they can't
have everything without paying.

For example, they want everything done by yesterday,
even though they don't provide any stable requirements
and keep changing their minds, making things "chaotic".

This means that *they* are "inadequate", not the
engineers. If you go an extra step to try and put up
with their inadequacies, they will expect it next time
and pile even more problems up on you - a "moral hazard".

In addition to which, many business people see life
as a negotiation, so they simply don't believe what
you tell them and will keep pushing you till you push
back.

So the solution is not to give them an AI to cope with
their contradictory requirements, it is to tell them
"No fuck off and fix your requirements" though perhaps
more diplomatically.

All this is besides the point, which is that you asked
about "Contemporary Programming". The meaning of
"contemporary" is that which is done today, not this
wierd stuff you are pushing.

"Contemporary Programming" is projects that greatly
overrun the budgets and deadlines they were started
under, usually for internal IT, usually written in Java,
Cobol, Visual Basic or possibly C, with arbitrary
constraints, ridiculous dependencies, running on older
hardware and operating systems, where the code is insanely
bloated in size, for a negative return.

It differs mostly from older ("Traditional")
programming in that there are more Legacy  issues
to deal with (because what is "Legacy" today used
to be state-of-the-art), the bloat is worse
(because they couldn't afford the hardware to
support the bloat before - Moore's Law) and that
truly large projects are no longer attempted
(because of the history of IT failure).

Perhaps you were confused and meant to use the phrase
"state-of-the-art" instead of "Contemporary".

<not sarcasm/> I assume English is not your first language.
Object hater
Friday, March 16, 2007
 
 
And now why I am talking on this forum: It's about Joel's articles and books… Promoting his not very sophisticated products he creates some clichés, well-defined-and-simple-enough-for-managers-formulas to view / standardize the chaotic world of diverse living creatures: programmers, software practices, techniques, and languages, etc. and to take "appropriate" decisions...
Akko
Friday, March 16, 2007
 
 
Object hater: <not sarcasm/> I assume English is not your first language.

Smart design & programming is the universal language :-) Let's speak on it!
Akko
Friday, March 16, 2007
 
 
Lets open up a new thread.
<Joke/> Salad cream.
Object hater
Friday, March 16, 2007
 
 
Object hater: Really business logic is never a difficult problem. It starts to look infinitely difficult if you keep
saying yes to every extra demand business people make.

Business is living thing and much more complicated that those "mechanical systems" that we build to "approximate" it.

Object hater: Perhaps you were confused and meant to use the phrase "state-of-the-art" instead of "Contemporary".

I use the word "contemporary" because it's fresh. "State-of-the-art" is associated for different people with different meanings. Go to Google and you will find each software company sells only the "state-of-the-art" :-)
Akko
Friday, March 16, 2007
 
 
Examples of traditional thinking: 1) the very popular now term "software usability". It means someone designed and developed a software application without much of thinking about an average user who will use it and latter under the pressure of sales is trying to "refactor" its UI... 2)refactoring is a two-edge word. And it seems for many programmers it's the final solution of the deeper problem: adaptability of our soft-systems (see http://norvig.com/adapaper-pcai.html).
Akko
Friday, March 16, 2007
 
 
I would highly recommend a web site of Peter Norvig http://norvig.com.
Akko
Friday, March 16, 2007
 
 
"But business is dynamic, chaotic in some aspects, and constantly evolving!"

This isn't contemporary programming. This is flexible programming. Or dynamic. Or extendable. Or user defined. Or adaptable. Or evolutionary. Or iterative. Or "fourth generation programming."

Akko, I actually agree with what you're trying to say but the word "contemporary" means something other than what you think it means. More specifically, contemporary means existing at this moment in time.

As an example, contemporary art refers to the current art style in use today, and is often used as a temporary label until enough history has passed that critics can apply a definite label like impressionism, post-impressionism, neo-impressionism, etc.

Something can be both traditional and contemporary - that just means it hasn't changed much over its lifetime. What you're really asking for is a comparison between traditional developer-oriented programming practices verses dynamic and flexible user-driven programming practices.
TheDavid
Friday, March 16, 2007
 
 
David, I don't like an idea of using words like, for example, dynamic programming. I like this term but it's already used for a number of decades(!) for something else. I want a fresh term not associated with previous ideas. But more important, it's not the label, it's to attract software designers & programmers for such discussion… Let's deal with the semantics of things and, by product, we will find all appropriate words...
Akko
Friday, March 16, 2007
 
 
Plus, it's about some meta-..., an umbrella for many still different ideas and techniques. Therefore, don't specify this too narrow.
Akko
Friday, March 16, 2007
 
 
In that case, I think referring to 1st, 2nd, 3rd, 4th and 5th generation programming languages is the typical nomenclature. For example, see the Wikipedia entry on the 4th generation, it refers to many of the concepts suggested so far.

http://en.wikipedia.org/wiki/4GL
TheDavid
Friday, March 16, 2007
 
 
5th generation programming language: if I am correct, it was Japanese project - response to American attempt to create AI in 80s.
Akko
Friday, March 16, 2007
 
 
And for me this term correlates with... the book "A New Kind of Science" by Stephen Wolfram.
Akko
Friday, March 16, 2007
 
 
I would like to mark several companies: Google, Complexica, IcoSystem, Spanish iSOCO, German Whitestein Technologies, Cougaar Software, TradingDynamics (acquired by Ariba), and Frictionless Commerce, associated for me with this new approach.
Akko
Friday, March 16, 2007
 
 
"I would highly recommend a web site of Peter Norvig"

That site is a usability nightmare.

What you are trying to talk about about seems elusive and to mutate with each post.

On one hand you talk about simplicity and on the other think we need to be looking at "cool stuff" like AI variants and genetic algorithms to solve business problems.

Business problems tend to boil down to "I have resources I need to manage according to a set of rules."  Whether that's people, customers, inventory, money, documents, data..

That's why business applications are not particularly glamorous and people call them "good old CRUD apps".

Now, if you're proposing a solid alternative to a CRUD style application, then lets hear it, in your own words.  How would you apply genetic algorithms or AI to the problems of keeping your warehouses stocked, for example?

Or are you trying to argue for more development of "cool software" for the sake of it?  The problem there being, it's pretty rare to find a new niche that makes it business worthy.

I agree that some projects can benefit from some shakeup of "common sense" (i.e. "we do it this way because that's the way it's always been done"), but when you have a new method or tool to present, you have to be able to demonstrate its effectiveness conclusively.
Dan Fleet Send private email
Friday, March 16, 2007
 
 
Dan, see examples of other companies like LostWax and NuTech Solutions...

P.S. I never try to convince people, they always have enough reasons to stay where they stay. Fortunately, there are lots of other people...
Akko
Friday, March 16, 2007
 
 
I'll argue Akko's side for a change.

Here in my own corporate corner, Microsoft Excel is the solution to the vast majority of problems we're asked to provide solutions for. Quite often, customers will request data and perform some calculations in order to test a hypothesis about how the business is being runned. In short, your basic CRUD application. Unfortunately, such applications often have a shelf life measured in days. The boss asks for something on Monday, expects an answer by Friday, and beyond that, who cares?

Traditional software development lifecycles such as the infamous waterfall method, are simply impractical for this kind of development. One proposed solution is to streamline the SDLC such that you can go through the various stages quicker. Example: Agile.

The other general solution is to provide the customers with the tools to build their own applications as needed. As an analogy, "developers" are responsible for Lotus Notes and Lotus Domino, whereas "users" are responsible for the databases/applications within Notes. Crystal Reports similarly needs developers to hook up the databases and do the heavy lifting, but it's expected that users will build the individual reports. These are not a perfect analogy, but bear with me.

It's something of a paradigm shift - I'm seeing lots of vendors these days throw around buzzwords like "frameworks" where they construct a skeleton, hook up all the wiring and plumbling, but expect you to build the walls and doors and install the carpet and furniture. Or in this case, business users can write Excel-macro-like code to solve their immediate needs, freeing developers to focus on the hard stuff.

It's really not a new concept, it's been around since the early 90's that I know of. 70's if you count the UNIX concept of pipelining shell scripts. That said, I just don't remember so many vendors rushing to offer me workflow process management tools or something of the ilk.

In the long run, I think these 4GLs are a good thing because quite honestly, I'm way overpaid to create basic CRUD applications. I'd rather do stuff that truely needs what I learned in my computer science classes.
TheDavid
Friday, March 16, 2007
 
 
Dan: "How would you apply genetic algorithms or AI to the problems of keeping your warehouses stocked, for example?"

Things in your warehouses are dynamic entities. The problem isn't in keeping your warehouses stocked (how most managers think), but in optimization and prediction what you must be ordered from your suppliers next.
Akko
Friday, March 16, 2007
 
 
I suspected something along those lines, although arguably you can do that with straightforward reporting on what is selling and how fast.

However, I think that at least 50% of what you are trying to accomplish, if not more, is to sell novel techniques and novel applications of various computer and statistical science theories to the business people.  It might take getting into a business situation where you are able to convince someone to take a risk. 

When (if) it shows an appreciably larger rate of return for the input price, you could start your revolution  -- and start seeing general job ads for more than the grunt applications, as opposed to niche locations.

The problem is, there are a lot of esoteric ideas out there, but most of them die in the academic stage, or don't come to light until 20 years after their introduction.  Perhaps the real world just rides the tail of the research curve.
Dan Fleet Send private email
Friday, March 16, 2007
 
 
Dan, I am constantly researching what smart companies around the world are doing (including military companies like BAE Systems in Arlington, VA) and clearly see emergence of new things. And I want to be with this new waive. Business will come to the same door sooner or latter. Smart one. Another will be crashed. Globalization is bloody competition of smarties... and Detroit began to understand it.
Akko
Friday, March 16, 2007
 
 
Akko I suspect you are a troll. There are just so
many flaws with your posts.

Firstly, you should use correct terms. Your "fresh"
terms just make everyone else as confused as you.
I tried to help with this but you ignored my new
thread.

Secondly, stop confusing programming and computer
science. Making a big system is programming or system
administration. Making a complex system is computer
science. Techniques for one do not apply to the other
so you can't discuss them both at the same time.

Third, get your problem domain straight. A large
file server or web site is a fiendishly sized,
trivially complex system. A small finite capacity
scheduler is a trivially sized, fiendishly complex
system. Which problem are you trying to solve?

Fourth, stop making idiotic comparisons. Most business
systems are trivially complex. Business is not smart.
Business sells hamburgers; it does not fly to the moon
or make atom bombs.

You shouldn't even mention the military in the same
sentence; the military is much smarter and does fly
to the moon and does make atom bombs, so they are
willing to pay for smart systems. Business will not
pay the price, so they will never get smart software.
Period.

I believe that the difference between the best software
and the norm is that the people who build the best
software do not live with the kind of mental fog you
have exhibited here.
Object hater
Saturday, March 17, 2007
 
 
Can I just ask: when have the military flown to the moon?
John Topley Send private email
Saturday, March 17, 2007
 
 
The space program is part of the military.
If we are referring to the US, parts of
the space program have in fact officially
been USAF rather than NASA projects.
Object hater
Saturday, March 17, 2007
 
 
To Hater: it's the very reason why I ignored your new thread. Are you revenging by trolling this? :-)
Akko
Saturday, March 17, 2007
 
 
"Most business systems are trivially complex. Business is not smart. Business sells hamburgers; it does not fly to the moon or make atom bombs."

I know your point, but don't brush off the complexity of critical business systems just because it's "business" versus "government." Trading systems, banking systems can seriously screw up and cost a company millions a day and real harm to the economy if not engineered properly with backups for the critical paths and robustness enough to respond correctly to any unforseen input, hack attempt or unanticipated event. Fedex's routing and tracking system could cause them probably billions in refunded fees if it screws up. Any major manufacturing system that is poorly engineered and doesn't handle blown sensors or jammed belts can cause tens of thousands in losses as the inventory crashes to the ground or the laser burns the holes the wrong size.

Anyway, most government engineering work is outsourced to business. NASA may be the one exception -- defense though definitely is business (Lockheed, BAE, Raytheon, Northrup... all public companies).
Steve
Saturday, March 17, 2007
 
 
> the military is much smarter

Sorry, but that's piffle.

> Business will not pay the price, so they will never get smart software.

I may be wrong but perhaps Walmart for example is reputed to have developed smart-ish software (for its inventory).

Global telecommunications (the data networks, public phone networks, the internet, etc.) is as big *and* complicated in its implementation as anything I know: and that's been developed by civilian telecom equipment manfacturers, and paid for by civilian operators.
Christopher Wells Send private email
Saturday, March 17, 2007
 
 
Sorry, gentlemen (I don't see ladies here), but I got the impression that this topic is totally out-of-the-box here!? Lots of confusion… or my English is not comprehendible.
Akko
Sunday, March 18, 2007
 
 
To Steve and Christopher Wells:

Don't you think it's a bit of a dodge to classify
aerospace and telecoms companies as civilian rather
than military? OK, after years of government R&D
that gives you things like semiconductors and the
Arpanet, and years of life support and incubation
on Pentagon contracts when the market wouldn't
touch your products with a barge pole, when all
that's left for you to do is the sales, you can
stay in business as a private company doing, say,
satellite telecoms.

But even if I concede the point, the problem is
that the economy is typified by the neighbourhood
corner store not WalMart, and certainly not
Xerox Parc. It's more accurate to view the few
outlying stars at the top as noise that distorts
the true picture: a depressingly long tail of dunces.
Object Hater
Sunday, March 18, 2007
 
 
Christopher, re: Wal-Mart's smart inventory software;

You mean the inventory software that suggested a bunch of African-American-interest movies to people who viewed the Planet of the Apes product page? :P
R.M.
Thursday, March 22, 2007
 
 
> :P

I think I mean the software that keeps its stores stocked with just-in-time deliveries: I know nothing of it but it's often cited, e.g.  http://discuss.joelonsoftware.com/default.asp?joel.3.302070.16#discussTopic302229
Christopher Wells Send private email
Thursday, March 22, 2007
 
 
P.S. Today I found the book "Contemporary Logic Design (2nd Edition)" by Randy H. Katz and Gaetano Borriello

http://www.amazon.com/Contemporary-Logic-Design-Randy-Katz/dp/0201308576/ref=pd_bbs_sr_1/002-5423988-9983264?ie=UTF8&s=books&qid=1174686923&sr=8-1

So, I think the name of this discussion is legitimate.
Akko
Friday, March 23, 2007
 
 
P.P.S. I found similar thoughts by Dr. Tim Stucke, AEYE Ltd, in his Artificial Intelligence Club (Ecademy,  see his posts from 09-Jul-05 12:39pm & 20-Aug-05 11:18am). I also like his company’s slogan "tomorrows solutions today, AI to business".
Akko
Saturday, March 24, 2007
 
 

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics
 
Powered by FogBugz