Slashdot Mirror


Reusing and Recycling Code

An anonymous reader sends us to a writeup about when and how to recycle code, excerpting: "As developers, once we start separating our code into abstract ontological typologies, we make use of the human mind's phenomenal ability to work with types. Our code becomes less about jump tables and registers and more about users, email messages and images. What once was a problem of allocating resources and operations within the computer becomes an abstract, logical problem within a collection of objects....Over time, by constantly working to reuse our own code, we choose practices that work well for ourselves and discard practices that don't work as well or slow down our workflow. For developers flying solo or those working on small projects, this evolutionary process is a sufficient way of going about things. But there's trouble when we add other players into the mix--other developers, a user interface person, a database person, a sysadmin, a project mana-jerk: as a developer, they don't have access to our 'experience' of the code and we don't have access to theirs. "

114 comments

  1. Saving the environment by VincenzoRomano · · Score: 5, Interesting

    If you think about how much energy is needed to produce (good) code, recycling it will also help to save the environment!
    Seriously!

    --
    Maybe Computers will never be as intelligent as Humans.
    For sure they won't ever become so stupid. [VR-1988]
    1. Re:Saving the environment by PunkOfLinux · · Score: 1

      Interesting point, although I really think they would view this more as a time/cost/boredom saver.

    2. Re:Saving the environment by xaxa · · Score: 2, Funny

      It's "reduce, reuse, recycle", so we should first try and reduce the amount of unnecessary code that's written, especially when it just duplicates functionality we already have.

      Development of vi will now cease. And Gnome.

    3. Re:Saving the environment by marcosdumay · · Score: 2, Insightful

      I reluctantly have to say that if we want to avoid writting unnecessary code, we should abolish emacs, not vi.

      I'll miss it :(

    4. Re:Saving the environment by Anonymous Coward · · Score: 0

      vi is the perfect text editor unless you really prefer using ed.

  2. Nothing to see here.... by panda · · Score: 4, Interesting

    To quote from the fine article itself:

    My psychic abilities tell me you're wondering why this wall of text was worth your time. It probably wasn't.

    What he talks about in terms of PHP is precisely what Lisp macros are about: you identify common patterns in your code, and then you generally break the patterns into a couple of short, generic functions and a macro, or sometimes, just a macro will do.

    In any other language you build a library of functions, classes, etc. to do the common things that you want to reuse.

    The above applies to PHP as well. It has the include filename construct for a reason.

    --
    Just be sure to wear the gold uniform when you beam down -- you know what happens when you wear the red one.
    1. Re:Nothing to see here.... by Gorobei · · Score: 4, Insightful

      I think the article actually hints at a deeper problem. If we broadly divide programmers into categories:

      1. Code monkeys. Write code, happy when it kind of does what is required.
      2. Architects. Design and implement libraries and their APIs to make stuff easily usable.
      3. Ontologists. Design and implement philosophical frameworks that make big systems work.

      then we can put LISP macros somewhere between levels 2 and 3.

      In terms of reuse, level 1 code should just be ignored, level 2 code is a good candidate, and level 3 ideas will be automatically reused.

      Unfortunately, it is natural for programmers to want to crawl up the scale: code monkeys create bad APIs; architects create bad ontological systems; ontologists wander off into category theory. Sometimes, the developer gets it right, but 90% of the time she just leaves an attractive nuisance lying around.

      Given a big system (say 1m+ LOC,) I want something like 3 ontologies, 100 subsystem APIs, and 3000 enduser things (reports, feeds, GUIs, etc.) If I see another 5m LOC system with hundreds of AbstractFactories and XXXFacades and YYYAdaptors, I am going to start shooting people.

    2. Re:Nothing to see here.... by Anonymous Coward · · Score: 0

      It's called metaprogramming, and any serious modern language has it.

    3. Re:Nothing to see here.... by Anonymous Coward · · Score: 0

      Perhaps, and I'm trying to channel Alan Kay (Smalltalk, OOP fame) here - perhaps it is a good thing that people try and climb out of the primordial soup.

      (Kay may entirely have problems with the following) - I promote more coding. We need evolutionary dead ends. We only know they are dead ends in hindsight. We need the continuous re-creation. However, not all of us need to do it. Most animals are perfectly happy with the "Using four legs" framework and just build on that. But at some point some idiot made the "One thousands legs are better" framework. It worked ok and we still find it under rocks.

      Perhaps we need a conversation on how to promote evolution. And that conversation needs to include chipset manufacturers and kernel coders because not everyone exists at the comfy "just making another email client" ring of development.

      Yes, I like using quotes and damn it, I couldn't think of a good car analogy. Besides, I live in California and there's no such thing as car re-use. New and shiny only, please.

  3. Recycling isn't always good by Anonymous Coward · · Score: 2, Insightful

    This assumes the code is good. If it isn't, it's akin to eating your own vomit.

    1. Re:Recycling isn't always good by Javagator · · Score: 2, Interesting

      This assumes the code is good. If it isn't, it's akin to eating your own vomit.

      In my current project we are using a third party library that is very powerful and comprehensive, but the API is overly complex and poorly documented. It takes a year or two before it stops being mysterious and becomes merely frustrating. Writing code that is easy to re-use is an uncommon art.

    2. Re:Recycling isn't always good by AuMatar · · Score: 1

      Then why are you using it? Find a better library, or create a facade in front of it that provides a better API.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    3. Re:Recycling isn't always good by Javagator · · Score: 1

      Then why are you using it? Find a better library, or create a facade in front of it that provides a better API.

      We have to use it because this stuff dominates the market niche we are in. I tried the facade approach in my last project but, unfortunately, my approach didn't fit in very well with the way the chief architect wanted to do things. I am starting a one person project, now. I am planning on giving it another shot. Of course, if I don't do an exceptional job, it won't do anyone any good.

  4. A great example of code re-use by Lord+Byron+II · · Score: 5, Funny
    1. Re:A great example of code re-use by Anonymous Coward · · Score: 0

      I show myself "how it's done", by simply not 'throwing away' my older code, from older apps I have done over time... quite a bit!

      E.G.=> I rewrote a HOSTS file mgt. tool I created around 2001-2002, because 1st time around, I didn't do as good a job as was possible (yes, I learn new things over time & usually "get better" as I go in doing so), here, where I literally 'documented' this program's progress (did it in my spare time @ night/weekends, maybe 1 wk. total time earlier this summer - bigger plans exist for it though, such as an FTP system to allow users to download newly updated HOSTS files from a central FTP server (still setting this part up though))

      APK Hosts File Grinder 4.0++::

      http://www.thenewtech.com/forums/chit-chat/today-4378/index32.html

      This program allows me to:

      ----

      1.) Build a CUSTOM HOSTS FILE that is in * THE * MOST EFFICIENT FORM THERE IS (0URL) line-by-line format, so the file loads as FAST as possible (since it is tinier on disk, e.g.-> going from 127.0.0.1 to 0.0.0.0 alone? Well, I went from 19mb to 14mb - & THEN, in going from 0.0.0.0 to 0?? I went from 14mb to 11mb size on disk), AND also consumes the LEAST RAM in your local DNS cache...with NO repeat entries & alphabetically ordered.

      2.) It builds the CUSTOM HOSTS FILE that secures you vs. the threats on bad sites &/or adbanners out there too

      3.) Also, in addition to speeding up your websurfing (by NOT loading adbanners (again, especially malware infested ones) & such) - it will also optionally speed-up your fav. websites, by your hardcoding your fav sites into it, as far as IP to URL conversions - doing this, locally, is FAR faster than calling out to DNS servers (which can be poisoned, or "man-in-the-middle" attacked, too)).

      4.) It will graphically allow you to search thru a HOSTS FILES' listings (mine are done in alphabetically-arranged order, so if you choose to do them in notepad.exe even, it is simpler) in their "sites to block" list, for adding in new ones (or, it will reject them as already existing, preventing repeat entries, aiding further in "normalization" (lack of repeats)).

      5.) It will also, in BOTH the original list to process (on left) & in the "FINAL LIST" (on right) for save to disk, allow you to selectively remove elements in its lists, @ YOUR discretion, prior to saves to disk (easy to do, via rightclick on list popup menus)

      ----

      By reusing my old code for various routines in it, I was able to finish it FAR FASTER, because I had done code for various portions in it, before in the past!

      (From having done various freewares in the past (pinger & ftp tools) & also using the same code for MIS/IS/IT related programs (you do have to do "ping" apps quite a lot, & FTP code is great for updates or file transfers (especially sftp)), I have code that's PROVEN/SOLID, since 1997-2002, for various routines... those are just 2 examples, where I was able to "reuse" portions of code I have (Object Pascal UNITS, analogs to Basic .bas modules, or .h C/C++ headers I suppose), with little minimal effort in removing code that was "application specific" (once in a bit, I will STILL get "caught in that trap", even with modules... bit worse w/ objects & classes though @ times here (give me time, lol))).

      I guess what I am trying to say is, the old adage:

      "NEVER THROW AWAY YOUR OLD CODE!"

      APK

      P.S.=> Trying to put it into UNITS/HEADERS/MODULES is the best way, OR classes (if not full-blown objects) imo, but, the trouble is, sometimes... @ least here? I tend to put in code that's a "wee bit" too specific to the application @ hand, so, code reuse during design is still something I have to overcome @ times & get better @ I suppose... still, having your old code around? It can be a "lifesaver" (& certainly TIME SAVER), for sure... apk

    2. Re:A great example of code re-use by MightyMartian · · Score: 1, Flamebait

      1977 called. They want their name resolution system back.

      --
      The world's burning. Moped Jesus spotted on I50. Details at 11.
    3. Re:A great example of code re-use by Anonymous Coward · · Score: 0

      Hehe, good one - Too bad though, I will stick to using custom HOSTS files, due to this & others like it:

      DNS Root Servers Attacked:

      http://it.slashdot.org/it/07/02/06/2238225.shtml

      &, more recently (bug in DNS that Mr. Dan Kaminsky discovered):

      DNS Flaw in BIND:

      http://blogs.zdnet.com/security/?p=1460

      So, no thanks... I also don't need "javascript/iframes" poisoned attacks from badwebsites or bad adbanners either, per this example (1 of MANY like it the past 2-4 yrs. now no less, with even Microsoft & other notables falling victim to it no less):

      http://blogs.zdnet.com/security/?p=1460

      &/or

      http://www.wired.com/techbiz/media/news/2007/11/doubleclick

      For just a couple examples thereof... there are FAR more.

      Plus, I don't "burn time" calling out to DNS servers either (IP to URL resolutions) for access to my personal list of fav. websites (250 or so)!

      I instead, act as my OWN "DNS Server" more-or-less, which is a heck of a lot faster too, than calling out to a potentially exploited DNS server (poisoned, myself being "man-in-the-middle" attacked (only helps some here though), etc. et al)...

      PLUS - I do NOT see "adbanners" either (I block them - why on earth would I forego "HBO 'no commercials' Internetting" vs. otherwise? I pay for my linetime, sorry webmasters, & I don't want to get any poisoned adbanners either)...

      (That alone is orders of magnitude F A S T E R, than calling out to DNS servers that may be compromised, & my app (noted in my last post) makes SURE their IP address to URL conversion is current (via the PING code I reused no less)... combined w/ NOT SEEING ADBANNERS? Hey - I fly online... even on "low speed" DSL (what I currently use)).

      APK

    4. Re:A great example of code re-use by foniksonik · · Score: 1

      Oh he's just enjoying his walled garden... I'd say 1996 called, it's AOL and they want their business model back.... ;-p

      --
      A fool throws a stone into a well and a thousand sages can not remove it.
    5. Re:A great example of code re-use by Anonymous Coward · · Score: 0

      "Oh he's just enjoying his walled garden... I'd say 1996 called, it's AOL and they want their business model back.... ;-p" - by foniksonik (573572) on Monday July 21, @10:02AM (#24273249) Homepage

      Thought I wouldn't be around to reply, eh? Well, here goes:

      You can keep your illusions of "modernity" & go get infected, ok... myself?

      Well, in reply??

      I'll just let the words of others who use this file & & other techniques that work, vs. virus/spyware/trojan/rootkit/malware-in-general that I have put down online since late Dec. 2007 in a guide across 15 forums, to the tune of 125,000 views @ this point + even got me PAID @ PCPitStop for it, winning the January prize for it no less SPEAK FOR ME:

      PERTINENT QUOTE FROM USER THRONKA (who has applied what is in this guide, inclusive of this HOSTS file, to his business network, clients' machines, kids machines, & home machines too - he is also QUITE proficient/skilled, not a coder afaik, but decent tech + networker):

      HOW TO SECURE Windows 2000/XP/Server 2003 & even VISTA, + make it "Fun To Do", via CIS Tool Guidance:

      ----

      http://www.xtremepccentral.com/forums/showpost.php?s=e58383209896ad17ea72808e2b5215ec&p=207534&postcount=59

      "I recently, months ago when you finally got this guide done, had authorization to try this on simple work station for kids. My client, who paid me an ungodly amount of money to do this, has been PROBLEM FREE FOR MONTHS! I haven't even had a follow up call which is unusual. Now I don't recommend this for the average joe, but it if can work for a kids PC it can work for anything!"

      ----

      As well as his earlier findings too, using that guide:

      ----

      http://www.xtremepccentral.com/forums/showpost.php?s=e58383209896ad17ea72808e2b5215ec&p=207534&postcount=50

      "APK, thanks for such a great guide. This would, and should, be an inspiration to such security measures. Also, the pc that has "tweaks": IS STILL GOING! NO PROBLEMS!
      Only time I have done anything was to remove the hdd and image over to a new one because the hdd"

      ----

      That's just a SMALL SAMPLE from users who applied techniques I use to stay safe(r) online, today, this century mind you... want more?

      I'll gladly supply them upon request, from many others who have applied techniques I myself use, & show others how to as well... ones that not ONLY secure you online, but massively speed you up also, deal??

      Just ask...

      APK

      P.S.=> All the sarcasm in the world won't change what users are finding really works & doesn't slow you down or bug your system up either (like some AntiVirus programs & such as reputed to do)... Keep using whatever it is you THINK are "more modern ways of staying safe" (lol, so much for that - go & spend your monies on OS' &/or tools that won't do the job fully, vs. using what your OS + freewares supply that DOES work for safety online, today... ok?)... apk

  5. Ontological Typologies? by Apple+Acolyte · · Score: 5, Funny

    Ontological typologies? Am I reading a philosopohy essay here?

    --
    Part of the hardcore faithful who believed in Apple long before it was cool again to do so
    1. Re:Ontological Typologies? by Anonymous Coward · · Score: 0

      Yes. Welcome to Slashdot.

    2. Re:Ontological Typologies? by Anonymous Coward · · Score: 0

      Yeah, abstract ontological typologies. Why there's nothing I like better when I'm coding and I manage to separate another abstract ontological typology. It encourages less of the inherent obfuscation that is usually expressed in any computation-related gnosiology.

      Why, it's the best thing since sliced bread.

    3. Re:Ontological Typologies? by Anonymous Coward · · Score: 0

      More like someone has found a reuse for his recycled CS thesis. Everything was there except the bibliography.

    4. Re:Ontological Typologies? by azgard · · Score: 1

      I wonder what is the difference between ontological typology and typological ontology.

    5. Re:Ontological Typologies? by _Hellfire_ · · Score: 2, Funny

      I recently read through some policy documents at my work. The introduction had a paragraph about how "...notoriously expensive documentation is..." to write and maintain.

      The next sentence was all about making said documentation leaner and thus less expensive. How is that done? By aligning with the principles of [some phrase written in latin] (!), and through "...the principles of ontological parsimony (!)". No Shit!

      I had to use a dictionary to work out what the hell it was saying.

      Talk about the very definition of irony...

      --
      "And then I visited Wikipedia ...and the next 8 hours are a blur..."
    6. Re:Ontological Typologies? by karbyn-aceous · · Score: 0

      I don't know ... Are you?

  6. That guy is management material! by Anonymous Coward · · Score: 5, Funny

    A programmer who says so little in so many words is a rare sight. Promote promote promote!

    1. Re:That guy is management material! by Thiez · · Score: 4, Funny

      EXTERMINATE! EXTERMINATE!

    2. Re:That guy is management material! by ricebowl · · Score: 1

      Promote promote promote!

      Steve? Is that you? Can I have my chairs back..?

    3. Re:That guy is management material! by Eudial · · Score: 1

      EXTERMINATE! EXTERMINATE!

      See, even Daleks hate the management.

      --
      GAAH! MY PRINTER IS ON FIRE!!! PUT IT OUT! PUT IT OUT!
  7. Knows his stuff by Anonymous Coward · · Score: 1, Insightful

    Drink a lot of vodka and red bull and black out when you code so that you can approach it with a fresh mind the following day

    A solid recommendation from an insightful article. Should be in every corporate coding guide.

    1. Re:Knows his stuff by jcuervo · · Score: 3, Funny
      --
      Assume I was drunk when I posted this.
  8. what the hell is the question? by roman_mir · · Score: 3, Insightful

    What is the question in this 'story'? Is this about coding for money or free source or what?

    If the question is about coding for money then it is the responsibility of the team lead/designer/architect to make sure that the business problem is divided into pieces in a way that allows different people to work in parallel (if there are multiple people on the project.)

    If the question is just about some abstract idea of 'code reuse', then the answer is simple: libraries. Create libraries and document them (otherwise they are useless really, without anyone knowing what the hell is inside.)

    In any case, please document the purpose of the code, and then break the higher level requirements into more granular ones with clear specifications.

    In all cases divide, concur and document well seems to work best...

  9. Hell is other people by leereyno · · Score: 4, Insightful

    Hell is other people.

    Having to work with people for whom the Peter principle has reached its end state is exasperating at best.

    Then you have the emotionally unstable, the delusional, the political operators, the empire builders, the saboteurs, the goldbrickers, and of course the fearful.

    Is there some reason why I would WANT to work with this motley crew of idiots, assholes, nutjobs, and losers?

    Success isn't about a paycheck. Past a certain pay grade the money ceases to be a factor. I'd much rather get an adequate paycheck to work in an environment that is conducive to success than be paid generously to work someplace that sucks.

    --
    Muslim community leaders warn of backlash from tomorrow morning's terrorist attack.
    1. Re:Hell is other people by Anonymous Coward · · Score: 0

      Is there some reason why I would WANT to work with this motley crew of idiots, assholes, nutjobs, and losers?

      Programmers like you are an interesting breed. You guys (females with your attitude are rare) degrade your fellow co-workers, often labeling them as "idiots" or "losers". You have huge egos, and are sure that your code is the greatest there's ever been. You think you're an expert at every programming language and environment in the universe. Nobody else's advice or input has any value, according to you.

      But the reality is, you're just a shitty programmer. Your code is usually rubbish; it has no comments, no structure, and usually incorrect. You're responsible for 85% of the bugs recorded in your bug tracking system, yet only contributed 5% of the overall code. The high school co-op student they brought in for the summer is a more productive, efficient coder than you are.

      Truly good programmers enjoy working with other people. They like the learning experience the others provide. They work as a team, capable of working together to handle the largest of challenges. It's too bad there are fuckers like you to get in the way of such progress.

    2. Re:Hell is other people by wkitchen · · Score: 5, Insightful

      And then there's the skilled but arrogant jerks who deride anyone they think they're better than, which is almost everyone. Just one of those guys can bring dysfunction to what would otherwise have been a productive team. You REALLY don't want to get stuck with one of them on your team project.

      And it's a real shame, too. Some of those guys actually are as talented as they believe themselves to be, and if they weren't such assholes, could have made the team better by showing the others better ways to do things. And no, I don't mean hand-holding or playing teacher, but just the influence of having the others see what really good work looks like. Leading by example, in other words.

      These guys aren't useless, however. There are problems that are well-suited to single-handed solutions. Just keep them far away from anything that requires close collaboration, and both they and their employer's will be happy.

    3. Re:Hell is other people by Anonymous Coward · · Score: 0

      ...a project mana-jerk...

      I lost interest in the story at exactly this point.
      Come on, f-king grow up.

    4. Re:Hell is other people by Anonymous Coward · · Score: 2, Insightful

      Success isn't about a paycheck. Past a certain pay grade the money ceases to be a factor.

      Actually, after a couple of decades in IT and enough financial inertia along the way to avoid becoming rich, success is **only** a paycheck. I see the march of cybernetic progress as a superstructure upon which the march of coral-like growth of business and science proceeds. It proceeds, by and large, by the energy system known as money economics with a few motivational impurities thrown in for colloidal structure.

      Very, very few of us code monkeys have reached that pay grade where money ceases to be a factor. After enough years at it, the challenges to be solved aren't that challenging any more and reach a certain "meh" stage. And unless you're one of those rare minds who are both bright as XKCD and willing to stay in the same channels, you'll reach a point where any IT job becomes just a money pump. You need to transcend.

    5. Re:Hell is other people by HangingChad · · Score: 1

      I'd much rather get an adequate paycheck to work in an environment that is conducive to success than be paid generously to work someplace that sucks.

      A bit harsh perhaps but I agree with the gist of the post. A small, tightly knit group can work bigger than a room full of dysfunctional developers. And working alone is more productive and less stressful than working with idiots. It's really difficult being trapped in a team of people you didn't have any say in picking and whose skill level and motivation may vary widely. One or two toxic personalities can undermine the productivity of the entire group.

      That's not the same as being socially inept. If someone is less skilled as a programmer but works hard and listens, I can work with them. It helps to be able to fire the discordant personalities. I recently let two people go and the stress level in the office came down almost immediately, accompanied by a surge of relief from the other departments. Nothing substantive has changed, just getting rid of the shoes in the gears gave everyone else a sense of relief.

      The parent may have been a little abrupt in tone but the sentiment is quite accurate. You don't want to drag down your high fliers by yoking them with oxen.

      As far as a "motley crew" goes, I resemble that remark. ;)

      --
      That's our life, the big wheel of shit. - The Fat Man, Blue Tango Salvage
    6. Re:Hell is other people by hostyle · · Score: 1

      Typed like a true emacs user. Heretic!

      --
      Caesar si viveret, ad remum dareris.
    7. Re:Hell is other people by Mutatis+Mutandis · · Score: 4, Insightful

      Ah well, sometimes I think I am like that. Often, really. Yes: Actually, I do think that in comparison with everybody in our IT department, I am a better coder, and a better architect, and a better ontologist. Arrogant nuisance? You bet.

      So, from a certified jerk's perspective, let me tell what we need to be effective members of a team: An effective sparring partner. Seriously. What makes me a frustrated, tired and emotional team member, is that so many supposed team meetings are only unidirectional exchanges. Sometimes I sit there and watch the other members of the team grinding their way through all the little problems of system integration. Sometimes they sit there and watch me sketch a new ontology, architecture and object model.

      Such a grouping of people is not a team. It is a group of people sitting in the same room, but at cross-purposes, because we are not talking at the same level. At best we succeed in confusing each other, at worst only in boring each other. I think they are parasites. They think I am an arrogant jerk. Rate of progress, in that constellation? Nil.

      Yet I can work in a team. I've worked for years in highly effective teams, and with success. I can tell you what made all the difference: The presence of equals to debate issues with, so that we could talk each other through the problems and emerge from the session with the feeling that we had defined better solutions. Perhaps we are all arrogant nuisances, but as long as we understand and respect each other we keep each other in check, and can function as effective team members.

      The moral of the story, as far as I am concerned: Effective teams need a core group of several people with the same high level of skill. You can put in a few people with less skill, so that they can learn from the others. But you should never try to assemble a team of one wolf and five sheep, because that becomes either a classroom or a dinner opportunity, never a team.

    8. Re:Hell is other people by Anonymous Coward · · Score: 0

      Well said.

    9. Re:Hell is other people by Zaurus · · Score: 0, Redundant

      Oops. Wasn't logged in. Let me say it again:

      Well said.

    10. Re:Hell is other people by Anonymous Coward · · Score: 0

      So true! I've worked with people who hack something up quickly, bask in the glow of their genuis for a few minutes, then hand it off to someone else to "finish up" and maintain. God help them - the code is awfully structured, has poor error handling, no comments. It's shit.
      But yeah, these are the guys who make the big bucks. So sad.

    11. Re:Hell is other people by Jamie+Lokier · · Score: 1

      Well put. I have to agree with you: I've been in a similar situation for the last few years, as the only really experienced programmer, contracted to a company that needs a lot of IT development but doesn't have programmers to do it.

      It's been very enjoyable to be free to explore the design space as I like - I appreciate that. Some really interesting stuff has come out of it, that will do me well for years in other situations I'm sure. Lately I've come to realise that what I'm doing is at the forefront of modern development in some ways, that's nice.

      But it's been frustrating to have nobody to peer with at my skill/experience level within the company. Especially someone to direct and refine ideas, and call out the bad ones, and propose better ones, or even just help make useful executive decisions and get a perspective. I do "spar with myself" but it is a lot less effective than doing it with others.

      That looks like changing: the company is recently in the process of merging with another, which does have an experienced development team, and I'm being slowly reeled into their management processes, and presumably my work will increasingly involve their team.

      I'm rather looking forward to that, and will do my utmost to work well with the new processes and new team, it will do me a lot of good to stop working like a lone designer.

      Even so, in the long run I do relish that freedom to design new things in my own novel ways. :-)

  10. -1 brain fart by Anonymous Coward · · Score: 2, Insightful

    I fear TFA is not a joke! Unobtrusive script starts with valid markup, not garbage like this...

    <input type="star" name="rating" value="4.5" size="5" />

    That (type=star) is fine if you're going to pre-process it on the server, only a moron would boast about sending markup like this to the client. If the author of this rambling bullshit article knew what he was doing, he would have used an input image type and class name of "star".

    The rest of his article is similar 'junior developer above their station' type stuff. I do like the way the author of this article on code reuse makes a swipe at the concept of an "API" before going on to detail his own API (making a decorator with an Event_Manager $events property).

    Being charitable, I could say TFA is incoherent nonsense. I've almost made all my charity contributions for this fiscal year, hopefully the author will keep that in mind before writing any further ludicrous articles.

  11. Simple metaphors... by argent · · Score: 4, Insightful

    That should be called "the lesson of UNIX". UNIX provided an amazing simplification that provided almost everything users and developers needed with fewer than 40 system calls (maybe half a dozen frequently used) and a single way of talking to all the objects in the computer system. People who haven't used older operating systems can't really appreciate this, but just opening and reading files used to require understanding something the size of the X11 documentation, you typically had umpteen kinds of files with half a dozen access methods each, with different calls to read blocks, fixed-size records, variable-sized records, padded and unpadded records, three varieties of carriage control, and if you wanted to read or write to a terminal or printer or card reader you had completely separate sets of calls for each. And to simplify this you had record management systems which had their own walls of documentation. And you had to understand this if all you wanted to do was to read a report from a program, because of course every programmer had learned their own bits of this and used them... so even if you didn't care about block-padded variant numbered record files with Fortran carriage control, you had to be able to deal with it. When I ported a Forth interpreter to one system, I had the whole interpreter called from a Fortran main because that let me push the whole problem off on the Fortran runtime instead of figuring it out myself.

    This was worse than the line ending differences between UNIX and Windows, which are bad enough.

    It's like *every* file, even plain text files, was in its own OOXML format.

    Even if you only dealt with one computer and one OS.

    UNIX didn't do any of that. It just made everything into a stream of bytes. For the cases where that wasn't enough, you got the whole records-oriented stuff back... in libraries. And when you used those libraries you had to deal with all the old complexity, but you only had to deal with it when you actually needed to. And lots of old timers insisted that this was backwards, that the OS was the best place to do that, so all the programs worked the same way... but the fact was that all the programs didn't work the same way, because (just as for text files) they all handled their own files and didn't handle anyone else's, and you still had to have utilities to convert data from one format to another. And you had to do it for everything.

    When you're designing an API, look for simple metaphors. Look for a model where most of the time you don't need to specify any complex parameters or callbacks or helper routines. Leave a way to hook extensions in, sure, but for most software you should be able to do 80% of the things you want without having to turn to the second page of the documentation.

    1. Re:Simple metaphors... by flajann · · Score: 1
      I like your approach. Simplicity is good. Elegant Simplicity is better. The elegant simplicity is harder to come by, because it requires you to do a LOT under the hood to make the API/GUI/Framework easy to master conceptually.

      Still, a noteworthy goal.

    2. Re:Simple metaphors... by Metasquares · · Score: 1

      I think this is the best advice posted on this thread so far. A complex system is not a better system, it's just a more difficult system to understand.

  12. Old School Old Fart by superid · · Score: 4, Insightful

    I'm probably going to be shouted down but in my 30 years of coding, I *rarely* reused code. Platforms change, toolchains and libraries change (glibc vs libc6), languages change, system architectures change (heavy client, client/server, n-tier, distributed) and system requirements change.

    Example, a lot of what I have done over the past 10 years uses some standard navigation libraries that probably could have been 100% portable. Lat/lon to range bearing, rb2ll, etc. We've never even discussed IF it would help to make a single standard project library, even though I can absolutely tell you we will rewrite these again on the next platform.

    I can't even look back on 10 years of coding and say "Oh things would have been so much better if we had shared code". I don't think that is the case. And fwiw, this is teams of 5-20 programmers on significant projects.

    1. Re:Old School Old Fart by Jerry+Coffin · · Score: 2, Insightful

      I'm probably going to be shouted down but in my 30 years of coding, I *rarely* reused code.

      Donald Knuth recently said: "I also must confess to a strong bias against the fashion for reusable code."

      Personally, I think a lot depends on the sorts of things you do, and (probably more importantly) the way you tend to think. A few decades ago (or so) when I started college, Pascal was the cool new thing, and top-down development was going to save the world. At least IMO, top-down development has some very good points -- but code reuse isn't one of them.

      OTOH, some people tend to work and think primarily bottom up. For them, work on a particular project basically consists of building a good library for that type of work, and once they have a good library, that particular project is little more than building a user interface to give access to those components.

      One big problem is that code reuse has been pushed as a good idea for long enough not that a lot of people who simply don't have the mindset to produce reusable code still feel that they should do so, and feel guilty if they don't. IMO, this is silly -- there's a lot of room for both kinds of development, and IME, successful projects rarely stick to one direction or the other -- rather, there's a tendency towards some people working bottom up, and others top-down, and the project as a whole is more or less a "meet in the middle" approach.

      Of course, getting this to work requires a fair amount of care -- in particular, you need to ensure against a major "fault line" where the top and bottom sides meet. Unfortunately, I don't have an easy prescription for preventing that -- if I did, I'd probably be the author of a famous book instead of some unknown guy writing on slashdot... :-)

      --
      The universe is a figment of its own imagination.
    2. Re:Old School Old Fart by Anonymous Coward · · Score: 0

      Well, you do use APIs, don't you? Therefore...

    3. Re:Old School Old Fart by jgrahn · · Score: 1

      I'm probably going to be shouted down but in my 30 years of coding, I *rarely* reused code. [---] I can't even look back on 10 years of coding and say "Oh things would have been so much better if we had shared code". I don't think that is the case. And fwiw, this is teams of 5-20 programmers on significant projects.

      A reminder: reuse != building libraries. Copying a piece of code is also reuse, even if you have to hack it to make it do what you want.

      I find the more code I write, the more I cut & paste. If it has a well-defined interface, if I use and trust it elsewhere, especially if it has unit tests -- then I have no qualms about copying it (and cutting away the parts I have no immediate need for).

      But building those general libraries which I assume the purists equate with code reuse -- that's hard. Especially if management thinks you can assign a group to write such libraries, but never write code which use them.

    4. Re:Old School Old Fart by Duffy13 · · Score: 2, Interesting

      You also have a hidden point in there. A lot code is just not useful for more then the app it was originally designed for, and breaking it down into smaller modules and functions usually just creates simple loops or recursive functions, and thus no point in saving them for later use as they can be replicated in the same amount of code space.

      I don't really understand what the OP is trying to convey, anyone who has learned programming in the last 5-10 years (probably longer) from a half way decent school should be familiar with OO design, which is all he's blathering on about. I mean, almost anything I develop relies on a collection of APIs and libraries to do a majority of the functionality, its just a matter of combining the blocks to get the desired effect. The "tedious" functions in most development enviroments have already been done for us, hell the only time I can recall adding anything to the development libraries was when I added a split function to the dumb Delphi Pascal crap we were using.

      I'm all for code reuse, as long as it makes sense.

      --
      "Now you know, and knowing is half the battle!"
    5. Re:Old School Old Fart by Nefarious+Wheel · · Score: 1
      I think the problem with reusable code is "who is asking for reusable code". The idea that it's a sin something expensively built can only be used once. That's a meme embedded by an accountant somewhere, I think, not a programmer. If you didn't need creativity, you wouldn't hire creative people, would you? I'm in superid's coder demographic, and very firmly against attempts to force old code where new code belongs.

      If you want reusable code, buy a package, or a library from somewhere but know that when you do, you're buying an interface with friction in it somewhere and it will show up in the quality and overall costs.

      --
      Do not mock my vision of impractical footwear
    6. Re:Old School Old Fart by LEMONedIScream · · Score: 1

      ...but you're the Jerry Coffin!

    7. Re:Old School Old Fart by dvice_null · · Score: 1

      I think that code should be reused at the point when someone is writing something that has been written before. At that point it is IMHO better to rewrite the old code into a shape that both programs can use it, so that they both can share that code.

      Simple reasons:
      - Now you KNOW that this code can be shared aka reused. So it won't be used by just one application.
      - If you needed that code in 2 applications, there is a high chance that you need it in others also.

      But this is often not done, because short term thinking and deadlines beat long term thinking. And stable applications are something one does not want to touch.

    8. Re:Old School Old Fart by dodobh · · Score: 1

      Don't Repeat Yourself is a good principle.

      --
      I can throw myself at the ground, and miss.
    9. Re:Old School Old Fart by Anonymous Coward · · Score: 0

      Don't Shit Yourself is a good principle, too.

    10. Re:Old School Old Fart by Tablizer · · Score: 1

      I find that the best reuse comes from not over-engineering stuff for genericness. If you keep it simple, then its easier to adapt for another project. If you try to stick every conceivable feature into it, its too hard to change for those features you missed anyhow.

      Thus, keep your reuse-able libraries simple and full of small independent or semi-independent parts that can be used, changed, or ignored as needed. Date frameworks, don't marry them.
           

  13. Ubiquitous Language everyone? by Anonymous Coward · · Score: 0

    "there's trouble when we add other players into the mix--other developers, a user interface person, a database person, a sysadmin, a project mana-jerk: as a developer, they don't have access to our 'experience' of the code and we don't have access to theirs."

    some one should read eric evans's "domain driven design" and take some notes.

  14. Simple by pjt33 · · Score: 2, Insightful

    Without RFTAing, I would estimate that it's 95% certain that the question behind this story is "How can I get a few thousand people to hit my ad-laden page?" And the answer is "Anonymous posting of a link to Slashdot."

    1. Re:Simple by Anonymous Coward · · Score: 0

      There were ads on the page?

    2. Re:Simple by Anonymous Coward · · Score: 0

      There are no ads on that page.

  15. The exact thing.. by LordThundering · · Score: 1

    .. i'm working on atm. the Team-project is trying to build an intention around what you're doing and sharing that with your peers. pretty cool concept, especially as it's integrated into the worlds best ide - eclipse.

    1. Re:The exact thing.. by Jerry+Coffin · · Score: 1

      ...except that it's integrated into a completely unusable ide - eclipse.

      There, fixed that for you.

      Seriously, looking at the website, it looks more like what I'd expect from a project still looking for funding, not something that's supposed to be close to completion. In particular, it talks about objectives and such, but doesn't seem to have any code available for download/testing. By my count you've used up about 18 of the 30 months for which you were funded, but if there's anything to show for that work, it's not apparent from the web site.

      --
      The universe is a figment of its own imagination.
  16. Pontification by Animats · · Score: 4, Interesting

    That's quite a rant on programming for a Javascript form field validator.

    The right answer to this problem was probably WebForms, which added support to HTML for basic form validation. WebForms provided for simple regular expressions in HTML forms like this one for a credit card number:
    <input type="text" pattern="[0-9]{16}" name="cc" />

    If the field didn't match the pattern, the browser would tell the user, in a standardized way, probably at keystroke time. The browser would also do things like prevent alpha entries in a numeric field, something that IBM green screen terminals were doing in the 1970s. (You could even program a keypunch machine to do that.) It's kind of lame that HTML forms never had any built in input validation.

    For some reason, the WebForms proposal made very slow progress and never caught on.

    1. Re:Pontification by Anonymous Coward · · Score: 1, Informative

      First off your example is flawed. Not only can credit card numbers be 13-16 characters - CC type validation is useless without applying the mod10 check algorithm to the field.

      My point is while there is utility in pattern matching via regular expressions webForms themselves won't solve everything and you can largly solve the problem already with a dizzying array of javascript validation functions freely avaliable online which essentially do the same thing on all browsers today.

      For example instead of extending base language one could very easily write a javascript function that accepted the input parameters...

      validateField('cc','\d{16}');

      Another problem is that you also need to implement server side validation so many people either ignore client side alltogeather or have a system for exposing the same internal validation rules to the web form automatically which lends itself more to a programatic/javascript approach than a prescribed web-forms approach which *still* requires javascript for full coverage.

      I'm a **huge fan** of domain specific languages and using the right tool for the right job... however sometimes too much specialization can be a bad thing. In this user case choice trumps prescribed technology implementation.

      I would also jokingly argue making form based validation too easy only encourages the less experienced to shrug off the need for server side validation.

    2. Re:Pontification by Anonymous Coward · · Score: 0

      While I agree that some in-built HTML validation would be useful, we need to remember that even with universal browser support it would be very easy to bypass these restrictions.

      Which is why every web system should have decent server-side validation on top of any client-side stuff, regardless of it existing in a spec or not.

      So, while this might make for a slightly more useful user interface, it will not save any programming time on input validation.

    3. Re:Pontification by Anonymous Coward · · Score: 0

      That's quite a rant on programming for a Javascript form field validator.

      The right answer to this problem was probably WebForms, which added support to HTML for basic form validation. WebForms provided for simple regular expressions in HTML forms like
      this one for a credit card number:


      <input type="text" pattern="[0-9]{16}" name="cc" />

      If the field didn't match the pattern, the browser would tell the user, in a standardized way, probably at keystroke time. The browser would also do things like prevent alpha entries in a numeric field, something that IBM green screen terminals were doing in the 1970s. (You could even program a keypunch machine to do that.) It's kind of lame that HTML forms never had any built in input validation.

      For some reason, the WebForms proposal made very slow progress and never caught on.

      Quote: "For some reason, the WebForms proposal made very slow progress and never caught on."
      Reason: Probably because it's reasonably easy to roll your own with a JavaScript function sending arguments to a validation function. There's an example at http://www.w3schools.com/jsref/jsref_onkeydown.asp that refuses numbers in text field. If you want to validate on the server side as well, you could write code to both validate the form results and generate the JavaScript validation function from the same rule set.

    4. Re:Pontification by l0b0 · · Score: 1

      Try XForms. It's what web forms wanted to be when they grew up. Validation, direct editing of data, creates and removes form elements dynamically, abstract input types, and much more.

    5. Re:Pontification by gknoy · · Score: 1

      I realize this is almost certinaly preaching tothe choir, but:

      > Not only can credit card numbers be 13-16 characters - CC type validation is useless without applying the mod10 check algorithm to the field

      The trouble with this is that one must always validate input server-side, as the user client can never be trusted. The web application must always assume that bad data will come in, by intent or accident.

      So, the point of client-side validation is to help avoid the most likely accidental mistakes: make sure they put a number in a field expecting a number, make sure the credit card has the right number of digits (or is all digits and no dashes), etc. You're quite right that making sure it IS a valid number (checksum) is a great thing to have -- and the more complicated checks don't appear to be supported by a simple regex based validation. (Insert regex-fu here proving me wrong ;)) Still, that's still not failsafe (as swapped digits that are 2 digits apart aren't caught), so whether to use javascript (for client convenience) or not is a UI design decision.

      Still, for things that don't need more than a regex (addresses, phone numbers, etc) to validate, the Forms 2.0 way is pretty cool looking. (I'll have to read more; is it even supported by any browsers?)

  17. Older OSes by Frankie70 · · Score: 1

    People who haven't used older operating systems can't really appreciate this

    Here is a full book about Unix written by people who have used older operating systems - Click here.

    1. Re:Older OSes by mi · · Score: 1

      Here is my metaphor: your book is a pudding stuffed with apposite observations, many well-conceived. Like excrement, it contains enough undigested nuggets of nutrition to sustain life for some. But it is not a tasty pie: it reeks too much of contempt and of envy.

      Dennis Ritchie's response to the above-linked "Unix-Haters Handbook"...

      --
      In Soviet Washington the swamp drains you.
  18. I'll show you metaphor... by Nazlfrag · · Score: 5, Funny

    ShadowBane strode into the room, his pale Night-Elf features enveloped in the shadows of his Technomancer robes. Before him stood the artefact, an eerie light emanating from its crystal face.

    He sat on the throne, in one hand brandishing a strange rune-encrusted clattering device, whilst in the other he wielded a smooth object with wheels and levers emitting a demonic red glow. His hands moved swiftly and glowing runes etched themselves on the crystal device, spelling out:

    "#include <stdio.h>"

    He clicked again, and the runes mystically floated upwards. The next runes were even more cryptic:

    "void main(int argc, char *argv[]) { printf("Hello world"); }"

    He paused, taking a sip from his recycled aluminium goblet, then taking a sheet of recycled parchment and dipping his pen into a pot of genuine organic squid ink. Out of the corner of his eye he glanced a peasant rummaging through his garbage pile. He mused about all of this, then inscribed:

    "I have unlocked a mystery of great potential. By invoking the sacred word of inclusion I have unlocked a compendium, nay a veritable library of invocations and chants. Like the peasant sifting through my rubbish, so can I reuse my incantations. These shall empower me further into my research for the solution to the factorial function, a problem of seemingly infinite complexity."

    1. Re:I'll show you metaphor... by Jasonjk74 · · Score: 1

      That was without a doubt, the most creative thing I've read on Slashdot!

    2. Re:I'll show you metaphor... by Edgar.Hassler · · Score: 1

      A pointer to a character array? You already had me at void main. Apparently we need copy editors.

    3. Re:I'll show you metaphor... by autophile · · Score: 1

      Rick Cook, is that you?

      --
      Towards the Singularity.
    4. Re:I'll show you metaphor... by Anonymous Coward · · Score: 0

      And you've completely lost me.

      void **argv and void *argv[] mean the same thing in C...

    5. Re:I'll show you metaphor... by smellotron · · Score: 1

      void main(int argc, char *argv[])

      I think you mean int main.

  19. Please refrain from insulting people by RAMMS+EIN · · Score: 1, Offtopic

    ``project mana-jerk''

    It took me a while to understand that, until I realized he probably meant "manager". While I see the joke, I think it is insulting to managers in general. While some managers probably are jerks, I don't think insulting all of them is a good idea, and I would ask that you not do that.

    --
    Please correct me if I got my facts wrong.
    1. Re:Please refrain from insulting people by werwerf · · Score: 1

      Completely agree...

      I've been through all roles in an IT dept; from Helpdesk in my younger years, to Developer, Sysadmin, Infrastructure responsible and now Demand manager (that is, I lead the IT projects for our business clients) and I have always thought that within IT our main problem is that we really don't know each other, we don't understand how important is what "that other jerk" is doing for the whole process and we think that what we do is "the most vital part"... So, we insult, since we don't understand.

      Instead of insulting, try to understand.

    2. Re:Please refrain from insulting people by Katalyst23 · · Score: 1

      Haha, when I read "mana-jerk" my first interpretation was to define it as a jerk who was stealing everyone's mana...been playing too many video games as of late I guess.

      --
      It's turtles all the way down!
  20. !saving environment by Anonymous Coward · · Score: 2, Insightful

    I tire of people who claim that _anything_ we do helps to "save the environment". Everything we do helps to _destroy_ the environment! So long as the "saving" factor is less than 100% of the damage we produce, we have done nothing to "save the environment".

    I'm sick of the "we want to have our cake and eat it too" attitude people have over these issues. The way corporations and the majority of consumers live today, almost NOBODY can claim to care about the environment. If you own anything manmade, you've directly contributed to the planet's destruction. Yes, really.

    1. Re:!saving environment by omfgnosis · · Score: 1

      Sometimes, rarely, I read something on slashdot that's remotely encouraging. This is one of those rare times. I know the parent you replied to was kind of tongue in cheek, but in the context of mass corporate greenwashing this response is golden, and I thank you. Anyone with mod points please mod parent up.

    2. Re:!saving environment by foniksonik · · Score: 2, Insightful

      Uh i tire of people who think that we humans are somehow not a part of the environment... and that everything we do somehow is "destroying it".

      We are a part of the environment and what we do certainly changes it but that doesn't mean we are destroying anything.... in fact the law of conservation of energy states very explicitly that we are quite incapable of destroying anything at all. We can only change things.

      Now given that we can and do change things, some changes we make impact ecosystems which otherwise would not be impacted by other natural phenomenon. The degree to which this can be construed as "destroying the environment" is debatable. As is the nature of this so-called "environment" which you speak of .

      So really what you want to say is :"Save MY environment... the one that i have come to know and love - as change scares me and i'm worried that whatever environment may result if we don't save this one could make my life difficult"

      --
      A fool throws a stone into a well and a thousand sages can not remove it.
    3. Re:!saving environment by harry666t · · Score: 1

      > "as change scares me"

      At one end, people sitting in their caves, scared of any change, afraid of abandoning the place that gives them a false illusion of being safe. It's okay to be there, as long as you're fully aware of why are you there.

      At the other end, people who are afraid of nothing, who consciously jump right into "the danger", laughing at everything the people of the first group are scared of. They want to live their lifes, embrace whatever the future brings, be happy no matter what it takes to do so.

      And a lot of people somewhere in between.

      I'm closer to the second end, but IMHO everyone has their own set of crayons and their own world to color.

    4. Re:!saving environment by Anonymous Coward · · Score: 0

      Fuck yeah!

      We should embrace change!

      Those damn environmentalist pansies, opposing progress because they're afraid of it. Afraid of the iron dust in the air, and the mercury in the water. Fuck'em, I say!

      They are just afraid because they are weak, and they know that they'll die along all the inferior animals and plants! Let all of them die, and the strong and brave prevail!

    5. Re:!saving environment by foniksonik · · Score: 1

      you do know that is how we managed to climb our way out of the muck right? Just swap out "iron dust" for "oxygen". Then later oxygen became less plentiful which is why we no longer have giant insects roaming the earth... and for millions of years the oceans were more acidic than they are now... still life managed to thrive there.

      Humans are an environmental effect like any other... volcanoes, earthquakes, massive land fires, meteor impacts... they all wipe out life and ecosystems. They also leave new ones behind them... just as we do. Our cities provide huge ecosystems for various types of life... even though they displace other populations... but it's not important which life forms survive, only that some life forms survive. Large animal Biodiversity is important to US because we don't want to live in a world without it.... to life in general there is plenty of biodiversity regardless of what we do. There are millions of species of insects and bacteria which thrive in our cities.

      --
      A fool throws a stone into a well and a thousand sages can not remove it.
    6. Re:!saving environment by Anonymous Coward · · Score: 0

      We are a part of the environment and what we do certainly changes it but that doesn't mean we are destroying anything.... in fact the law of conservation of energy states very explicitly that we are quite incapable of destroying anything at all. We can only change things.

      For certain values of "destroy".

      We can destroy a car, not the metal.
      We can destroy a life, not the meat stuff.
      We can destroy an economy.
      We can destroy a balance, not the weights.
      We can destroy enlish speling.

  21. Anonymous Coward by Anonymous Coward · · Score: 0

    I always put these lines into About: This software is made from 100% recycled bytes, not tested on animals, does not contains cholesterol and conservants.

    1. Re:Anonymous Coward by Anonymous Coward · · Score: 0

      So why the f... are you posting anonymously when anyone can grep for these words and find out who you are? (:

  22. A Master of Masters... by flajann · · Score: 2, Interesting
    I have been in the computer field for 30 years, and have done everything from writing low-level drivers for operating systems to creating large applications, and everything in between.

    I am currently a database manager where I work, but that title belies the complexity of what I have to deal with on a daily basis. We are producing our "next gen" web application whilst keeping the old, but money generator up and running under the pressures of increasing user load.

    Even though I am the database guy, my vast experience with software engineering has given me a "unique" role in knowing the developer's side and having a lot of input on their design decisions, as well as having huge impacts on systems.

    One poster mentioned not having access to various skills and expertise in a variety of areas, and yes, there's a lot of that at my shop, so I tend to try to "bridge the gap" as it were, to help my DBA team interactt smoothly with Dev and Systems, etc.

    Code reusability is a big issue in our development of the NextGen system, because the old code (that's currently pulling in the $$$$$) is not supportable, being written badly in PHP4 has resisted all attempts to upgrade. The NextGen approach uses OOP ery heavily, and also relies on stored procedures to keep the SQL out of the code and allow my DBA team to tweak and enhance performance without impacting the code base. It makes for a sweet division.

    But I do find myself doing lots of talking and less actual "hands-on" development these days. Kinda crazy running around talking to various department heads, managers, project leaders, QA, and the like.

    I guess I am speaking to a greater issue than code usability -- human communication to keep us all on the same page and to allow us to leverage each other's expertise. All of our efforts together represent the future success of our endeavors.

    1. Re:A Master of Masters... by Anonymous Coward · · Score: 0

      Why don't we all follow parent's lead and post a little something about ourselves and how important we are.

      I'd start, but I can't top 'database guy, but much more badass than that'.

    2. Re:A Master of Masters... by flajann · · Score: 1
      I don't mean to trigger a boasting flame war. I only state things about myself to prove a point. The fact that I'm great and glorious is merely a side issue.

      (Tongue planted firmly in cheek...)

      Kidding aside, I do take great pride in creating reusable code. The downside is that the lifetime of software is so short it all gets tossed aside eventually, anyway.

      Databases, on the other hand, do tend to hang about a bit longer, and so the pride factor increases by several orders of magnitude...

      Sorry, couldn't help myself.

  23. Wii, for example? by grikdog · · Score: 1

    Developers are notorious for having a two-year attention span. Once version 1.0 is out the door, experienced coders know better than to hang around for iterations n+1. They want UP or OUT, and there's no sideways. New hires and Recent College Grads (a second level caste, at best) come in to maintain and expand a codebase that took the original developers a lifetime of experience to shape, command and release into the world. The result? Information entropy, institutional amnesia, competing visions of ultimate goals, anarchy, chaos, death marches and bankruptcy. I'm really beginning to think that the only folks who get their own paradigm right are gamers: After 10 minutes of Wind Waker or 10 hours of Metroid Prime, you've explored all there is to know about Game Cube, and it's off to Wii, where the synergies are obvious and not a single user has to be told how.

    --
    ``Tension, apprehension & dissension have begun!'' - Duffy Wyg&, in Alfred Bester's _The Demolished Man_
  24. synergy by ionix5891 · · Score: 1

    100 comments and no one mentioned my PHB's favorite buzzword :p

  25. Nonsensical fluffery by Anonymous Coward · · Score: 0

    "As developers, once we start separating our code into abstract ontological typologies ..."

    As soon as that came out of the mouth of the prospective candidate, I'd figure that they were full of shit, and probably covering for an inability to simply sit down and crank out some good code.

  26. stopped reading here by Anonymous Coward · · Score: 0

    An anonymous reader sends us to a writeup about when and how to recycle code, excerpting:
    "As developers, once we start separating our code into abstract ontological typologies

    My cue to stop reading was the word "ontological" and luckily I was able to stop on the very next word. A close call, no doubt, though I didn't read any of your comments either so it's hard to say.

  27. Master of the Obvious Award by Udigs · · Score: 1

    Wow. From TFA:

    "The magicianâ(TM)s spell is our codebase, and as they toil in their laboratories collecting newts and dragon finger-nails, so we assemble libraries or components and frameworks."

    Yeah, that's what I do at work all day. :) No, seriously, I can't make out what this is supposed to mean. Who toils? Who is doing witchcraft at work? Indeed, this is a very wordy article containing very little information.

    1. Re:Master of the Obvious Award by harry666t · · Score: 1

      > Who is doing witchcraft at work?

      I'm neopagan, you insensitive clod!

  28. A great example of Slashdot re-use by infidel13 · · Score: 1
    --
    quia potentia mens mentis
  29. Africanized bees bzzzz by Anonymous Coward · · Score: 0

    ontological, evolutionary, reuse. Yup, stick to MS Project and let us do work.

  30. Shooting libraries and ontologies by davidwr · · Score: 1

    Will you come up with a one-off method of assassination, or will you create a nice set of assassination instructions that can be reused?

    Or will you clime the scale and come up with some philosophical framework to best keep idiots from doing jobs they aren't qualified to do?

    --
    Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
  31. Who cares about Ubisoft? by Jane+Q.+Public · · Score: 1

    They absolutely ruined Myst IV. By insisting that users have graphics card capabilities that are NOWHERE needed for that game, they cut their own potential market by probably around 80%, and the game will not play on a lot of machines it is advertised to run on. I can do without game companies that display that kind of stupidity. I spoke with a programmer at Cyan -- the actual maker of the game -- who told me that as far as he was concerned, Ubi (the distributor) had taken an excellent product (as the Myst games historically were) and stomped all over it.

  32. This guy is behind the times! by Jane+Q.+Public · · Score: 2, Insightful

    I strongly suggest he read a few (5 or 6 year-old) books on Agile programming techniques, and maybe start working in a modern language like Ruby.

    Do not misunderstand! I do not dispute much of what he writes. The problem is: what he writes about are old problems that have already been addressed by others. Maybe he should spend a bit of time studying what others in the industry are doing/have done, before wasting his time writing what others have already written, and better. Far better.

    If you want to be a cutting-edge programmer (which is what you had better be if you are writing about how others should write their programs), I think it behooves the writer to be more-or-less up-to-date on the subject himself.

  33. Titration, titration, titration by davidwr · · Score: 1

    Precision is important.

    --
    Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
  34. The complexity-lovers handbook. by argent · · Score: 1

    Yeh, I've talked to some of the people who wrote that book. You know that bit I wrote about having to understand how a database engine works to open a text file? That's exactly the kind of thing they're unhappy about losing. Oh yeh, lots of misplaced nostalgia about the DECsystem, which I used and found at best lesser evil than IBM... it was still full of the same kinds of needless complexity and internal incompatibility.

  35. Humble experts can "sparr" with themselves by RexDevious · · Score: 1

    If you'd like to be able to be an effective leader even in situations where you're clearly the best, but you feel the need to have some push-back in order to do that - why not try second-guessing yourself? Surely you've programmed something single-handedly at some point - were you able to be an effective one-man "team" even though you had no equals? Of course, because you come up with a plan and then think it over, look for holes, better approaches, etc - and can usually give your first attempts a run for their money.

    If you treat those with less skill, experience, or talent than you badly; not only do you create a poor working environment, you also pass up to opportunity to benefit from the things they may be better at than you.

    A good team leader should inspire, not annoy. And if you're the top banana and you find your team annoying you, make sure you've let them know before hand that you feel personally responsible for the end result of *everyone's* work. They'll be more likely to cut you some slack if you seemed stressed by their short-comings - if they remember it's mostly your butt on the line if they screw up.

    You sound like you're satisfied with your current situation - I only offer this advice in case you'd like to try having the same level of success in any team make-up, and without being perceived as a jerk by your co-workers.

    1. Re:Humble experts can "sparr" with themselves by Jamie+Lokier · · Score: 1

      Hi RexDevious,

      I do agree with you, that someone striving to be an effective leader has to treat all their team well, and somehow handle the difficulties including wanting peers at their own level.

      And that we all have to program something by ourselves occasionally.

      And that "sparring with ourselves" is useful.

      But I think the GP is right too, it is really useful to have at least one peer who is about equally skilled and has complementary knowledge.

      I think that becomes more important with complex projects that will take a long time to develop, and also when pressures are high.

      There is something about having two minds see a problem from their different perspectives, but similar skill level so they can communicate and refine their perspectives together, which is just different somehow from one mind.

    2. Re:Humble experts can "sparr" with themselves by Mutatis+Mutandis · · Score: 1

      Actually, I am or was not the leader of those teams I was referring to. In my experience it matters relatively little who is the 'top banana', as you put it. I have been in team meetings of all kind of composition, and I find that the key to successful teamwork is to have people with the self-confidence and skills to have an effective debate, regardless of whether they are junior or senior.

      The necessary condition for reaching the kind of inspirational educational context you describe is that there should be enough room for useful debate and activity by the other team members. If there is at least a core group of people who can debate things, the others can listen, absorb the issues, and try to formulate their own ideas. But a one-against-all arrangement in which a single person sets the pace and the other people merely follow, reduces most of the people to passivity and effectively deprives them of the opportunity to learn. Alternatively, and even worse, it can lead to "holy wars" in which people stubbornly repeat their own point of view without listening to others.

      I find that meetings in which I have an effective counterpart to have a fluid debate with, are much more useful for everybody. It brings potential difficulties out in the open, highlights which technical choices are being made, and provides a much more stimulating environment. Yes, when you work on your own you debate the issues with yourself. However, doing so in team meetings might just be considered slightly eccentric. And there is no real replacement for an independent mind with a fresh look.

      By the way, I am notoriously dissatisfied with the current situation -- but hiring the right people to remedy the situation is not easy.

    3. Re:Humble experts can "sparr" with themselves by RexDevious · · Score: 1

      Glad to hear back from you. While I fully agree that having equally great minds on a task is ideal (for the same reason that you don't let programmers QA their own work: you need different yet equally valuable perspectives); it sounds like the immediate problem your facing in the less-than-ideal situation of not having that stems from the attitude of those who must eventually give ground.

      My personal attitude when someone else must call the shots, set the agenda or whatever - regardless of how I feel about their decisions, is feel confident I've done my best to give them the benefit of my experience, and then follow that up by using my experience to carry out their agenda to the best of my ability. Again, whether I think that's the best approach or not. I do this because a)I recognize I may not all the "big picture" information the leader has and b)either way, you cross the finish line faster when everyone is pulling in the same direction.

      If that's not the attitude your seeing in that type of situation, here's an article my friend wrote that I thought put things in perspective, whether you want to try to hire people with better attitudes, or improve the outlook of those already on a team.

      http://www.perspectivepm.com/2007/10/10-reasons-your.html

      Hopefully, if you can improve your approach to these problems, not only will you wind up with better prepared teams, but you won't find yourself feeling so frustrated that you rub people the wrong way socially. The women who wrote the article btw is one of the best project managers I know, but when she was overwhelmed, behaved in a way that made me want to quit my job - something I've never done. She recognized this and quit the company first, and we're both now very happy in our jobs.

      Cheers,
      -Rex

  36. Quoting Robert Love. by cabazorro · · Score: 1

    On code reuse.. a flexible driver.

    From the Book Linux Kernel Dev.
    more or less..

    "provide mechanism, not policy"

    The policy is WHAT (data) they want and WHEN (time/event).

    The mechanism is the HOW (language, libraries, ADT's, Architecture(eg. I'm going to use a generic container class, or No1 I'll use an array..or no1 I'll use pointers to my managed memory, and a huge private library of home-brewed accessor methods).

    Of course the WHAT will change before you can say "blue berry pie". Will that derail your HOW..? eh?

    How much the WHAT is affecting the HOW?

    A new/changed requirement is a one-two liner change with simple steps to rebuild and re-test or a nightmare of side effects and gotcha's. Eh?
    How cleverly you do the HOW will determine whether you are writing throw away code or the killer module that will spread like fire through your company/web.

    --
    - these are not the droids you are looking for -