Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. The Lounge
  3. Debunking the duct tape programmer

Debunking the duct tape programmer

Scheduled Pinned Locked Moved The Lounge
helpcsharpc++htmlcom
46 Posts 28 Posters 2 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • N Nemanja Trifunovic

    Among the numerous responses to the Joel's controversial text[^], I like this one[^] the best. Some quotes: "i've said it before, @jbogard : never take software advice from a bug tracking system salesman" And a more serious one that IMHO sums it up: "The nasty truth about misapplying duct tape solutions in serious software development is that the duct tape solution ends up creating unnecessary additional complexity because it doesn’t address the whole problem, just the symptoms. This isn’t unique to software development, but if duct tape solutions are used to achieve short term gains, then future solutions are built on a foundation of duct tape instead of some sound organizational method."

    utf8-cpp

    R Offline
    R Offline
    R Giskard Reventlov
    wrote on last edited by
    #8

    I think the pragmatic programmer uses a little of both as circumstances dictate. To extoll the virtues of one over the other is to miss the point of real-world programming: all coding is a compromise between the shiny promise of perfectly architected code and something simple and robust that works well but might well be sneered at by design pattern afficionados and the like. There are too many pointless pissing contests in the software world: ignore them and just try to be the most professional and pragmatic programmer you can be in whatever language/technology you choose to make a living from.

    me, me, me

    J B M N G 5 Replies Last reply
    0
    • N Nemanja Trifunovic

      Hans Dietrich wrote:

      As a contractor I've had to use a fair amount of duct tape, because by the time I'm hired the project is already in trouble.

      Heck, I had to use "duct type" (I call it a "hack") more than once - we do live in real world, don't we? The difference is - I am not proud of it and don't promote it as a good development practice.

      utf8-cpp

      H Offline
      H Offline
      Hans Dietrich
      wrote on last edited by
      #9

      Oh, and the other thing that is worrisome is people saying, "We're on a tight deadline, so I get to write crappy code."

      Best wishes, Hans


      [Hans Dietrich Software]

      D 1 Reply Last reply
      0
      • R R Giskard Reventlov

        I think the pragmatic programmer uses a little of both as circumstances dictate. To extoll the virtues of one over the other is to miss the point of real-world programming: all coding is a compromise between the shiny promise of perfectly architected code and something simple and robust that works well but might well be sneered at by design pattern afficionados and the like. There are too many pointless pissing contests in the software world: ignore them and just try to be the most professional and pragmatic programmer you can be in whatever language/technology you choose to make a living from.

        me, me, me

        J Offline
        J Offline
        Jim Crafton
        wrote on last edited by
        #10

        digital man wrote:

        There are too many pointless pissing contests in the software world: ignore them and just try to be the most professional and pragmatic programmer you can be in whatever language/technology you choose to make a living from.

        Well said. That should be drilled into all the newbies heads.

        ¡El diablo está en mis pantalones! ¡Mire, mire! SELECT * FROM User WHERE Clue > 0 0 rows returned Save an Orange - Use the VCF! Personal 3D projects Just Say No to Web 2 Point Blow

        1 Reply Last reply
        0
        • N Nemanja Trifunovic

          Among the numerous responses to the Joel's controversial text[^], I like this one[^] the best. Some quotes: "i've said it before, @jbogard : never take software advice from a bug tracking system salesman" And a more serious one that IMHO sums it up: "The nasty truth about misapplying duct tape solutions in serious software development is that the duct tape solution ends up creating unnecessary additional complexity because it doesn’t address the whole problem, just the symptoms. This isn’t unique to software development, but if duct tape solutions are used to achieve short term gains, then future solutions are built on a foundation of duct tape instead of some sound organizational method."

          utf8-cpp

          D Offline
          D Offline
          Distind
          wrote on last edited by
          #11

          So pretty much the difference between 'get it done' and 'get it done right'. It's as much of a problem to duct tape everything as it is to sit staring out the ivory tower, as per most everything there's a certain amount of balance required based upon how much time you have now, and how much time you're going to have to spend on it later. Warning: Long Old Annoyed Story ahead. Obviously there's issues with both, and I have a wonderful example of both. In college we were given a horrifically failed programming project from students, a networked checkers game. Our task was to make it work correctly in at least a few areas(which it didn't, never did). Two members of the group I was assigned to work on it with decided it would be brilliant to use a directed graph to define the checkers board and promptly started to work on it, given they ignored my pleas for a simpler data structure I spent the ten minutes to write out exactly what it would take to make the program work using a 2d array(it was 'working' off a 1d array). They complained how it wasn't terribly elegant, without looking at the remarkably simple and clean code I had prepared to replace the existing functions. That was the first half hour, having spent the time to actually write out the code and it's boundary conditions. Now, since they where bound and determined to get their 'nice clean code' together, I focused on the auto-generated code GUI for the board itself. Reconstructing it as a 2d array to layer safely over my code I cut out over 900 lines of auto-gen code, and had a functional model that would let us pass the project safely. This was an additional hour. I spent a half hour linking the two chunks together, taking the model and making it a reality. I haven't said much about the other guys, why? It wasn't till now that they had the Directed graph logic figured out, they showed me their wonderful and graceful and beautiful logic. And I asked them exactly how they expected to handle when someone was kinged with their directed graph causing them to look a tad nauseous. So, I told them if they wanted to work on their directed graph model for a few more hours they could call my dorm room. Or they could implement a few additional features to what I had just emailed them and we could get an A. Was it Ivory tower? Duct Tape? Nope, it was programing. Simple logic proved effective enough, in roughly 2 hours. Does it make me a horrible team mate for not going along with the self-proclaimed leader, possibly, but I will point out who's code go

          R 1 Reply Last reply
          0
          • D Distind

            So pretty much the difference between 'get it done' and 'get it done right'. It's as much of a problem to duct tape everything as it is to sit staring out the ivory tower, as per most everything there's a certain amount of balance required based upon how much time you have now, and how much time you're going to have to spend on it later. Warning: Long Old Annoyed Story ahead. Obviously there's issues with both, and I have a wonderful example of both. In college we were given a horrifically failed programming project from students, a networked checkers game. Our task was to make it work correctly in at least a few areas(which it didn't, never did). Two members of the group I was assigned to work on it with decided it would be brilliant to use a directed graph to define the checkers board and promptly started to work on it, given they ignored my pleas for a simpler data structure I spent the ten minutes to write out exactly what it would take to make the program work using a 2d array(it was 'working' off a 1d array). They complained how it wasn't terribly elegant, without looking at the remarkably simple and clean code I had prepared to replace the existing functions. That was the first half hour, having spent the time to actually write out the code and it's boundary conditions. Now, since they where bound and determined to get their 'nice clean code' together, I focused on the auto-generated code GUI for the board itself. Reconstructing it as a 2d array to layer safely over my code I cut out over 900 lines of auto-gen code, and had a functional model that would let us pass the project safely. This was an additional hour. I spent a half hour linking the two chunks together, taking the model and making it a reality. I haven't said much about the other guys, why? It wasn't till now that they had the Directed graph logic figured out, they showed me their wonderful and graceful and beautiful logic. And I asked them exactly how they expected to handle when someone was kinged with their directed graph causing them to look a tad nauseous. So, I told them if they wanted to work on their directed graph model for a few more hours they could call my dorm room. Or they could implement a few additional features to what I had just emailed them and we could get an A. Was it Ivory tower? Duct Tape? Nope, it was programing. Simple logic proved effective enough, in roughly 2 hours. Does it make me a horrible team mate for not going along with the self-proclaimed leader, possibly, but I will point out who's code go

            R Offline
            R Offline
            R Giskard Reventlov
            wrote on last edited by
            #12

            Hence KISS: kepp it simple, stupid. Has always worked for me (I'm stupid) and I cringe when I see over-engineered code that may work but is a nightmare to maintain or fix.

            me, me, me

            D 1 Reply Last reply
            0
            • N Nemanja Trifunovic

              Among the numerous responses to the Joel's controversial text[^], I like this one[^] the best. Some quotes: "i've said it before, @jbogard : never take software advice from a bug tracking system salesman" And a more serious one that IMHO sums it up: "The nasty truth about misapplying duct tape solutions in serious software development is that the duct tape solution ends up creating unnecessary additional complexity because it doesn’t address the whole problem, just the symptoms. This isn’t unique to software development, but if duct tape solutions are used to achieve short term gains, then future solutions are built on a foundation of duct tape instead of some sound organizational method."

              utf8-cpp

              S Offline
              S Offline
              stephen hazel
              wrote on last edited by
              #13

              I dunno. Personally, I don't see any polemics in the post... He's just sayin' to not go overboard with complexity. I think we can all agree with that. He's not sayin skip the complexity when it's time to ship. He's just sayin' it's important to ship. duh. He may be a salesman, but I'll still listen to his advice. Most of it's pretty dang good. I appreciate hearin' bout the stuff my boss should know.

              N J 2 Replies Last reply
              0
              • S stephen hazel

                I dunno. Personally, I don't see any polemics in the post... He's just sayin' to not go overboard with complexity. I think we can all agree with that. He's not sayin skip the complexity when it's time to ship. He's just sayin' it's important to ship. duh. He may be a salesman, but I'll still listen to his advice. Most of it's pretty dang good. I appreciate hearin' bout the stuff my boss should know.

                N Offline
                N Offline
                Nemanja Trifunovic
                wrote on last edited by
                #14

                stephen.hazel wrote:

                He's just sayin' to not go overboard with complexity

                "Duct tape" is not about avoiding complexity, it is about cutting corners. If you copy and paste a chunk of code rather than refactoring it into a separate function, you are applying a "duct tape" solution and it is not simpler than doing the right thing, just messier.

                utf8-cpp

                M S 2 Replies Last reply
                0
                • R R Giskard Reventlov

                  Hence KISS: kepp it simple, stupid. Has always worked for me (I'm stupid) and I cringe when I see over-engineered code that may work but is a nightmare to maintain or fix.

                  me, me, me

                  D Offline
                  D Offline
                  Distind
                  wrote on last edited by
                  #15

                  Yea, given the choice between wasting 50% of the space in a small set of integer arrays, and having to do a 50% smaller graph with 4 associated integer values I figured it was a quick sell. Who knew.

                  1 Reply Last reply
                  0
                  • R R Giskard Reventlov

                    I think the pragmatic programmer uses a little of both as circumstances dictate. To extoll the virtues of one over the other is to miss the point of real-world programming: all coding is a compromise between the shiny promise of perfectly architected code and something simple and robust that works well but might well be sneered at by design pattern afficionados and the like. There are too many pointless pissing contests in the software world: ignore them and just try to be the most professional and pragmatic programmer you can be in whatever language/technology you choose to make a living from.

                    me, me, me

                    B Offline
                    B Offline
                    Big Daddy Farang
                    wrote on last edited by
                    #16

                    You've hit the nail right on the head. Five, because there is no ten link. :-D

                    BDF People don't mind being mean; but they never want to be ridiculous. -- Moliere

                    1 Reply Last reply
                    0
                    • S stephen hazel

                      I dunno. Personally, I don't see any polemics in the post... He's just sayin' to not go overboard with complexity. I think we can all agree with that. He's not sayin skip the complexity when it's time to ship. He's just sayin' it's important to ship. duh. He may be a salesman, but I'll still listen to his advice. Most of it's pretty dang good. I appreciate hearin' bout the stuff my boss should know.

                      J Offline
                      J Offline
                      Joe Woodbury
                      wrote on last edited by
                      #17

                      stephen.hazel wrote:

                      He's just sayin' to not go overboard with complexity.

                      Except he wasn't since he never actually said that. He was having a love fest with a guy he admires and got carried away with that guy's polemics. The article actually asserted that ANY technology more complex that C wasn't worthwhile (Joel tried to moderate that a little, but he didn't try very hard.) Among other claims was that multi threading was worthless, in part because nobody understands it. Unit testing is worthless since there isn't enough time (given the propensity of Netscape of the early 90s to leak memory and crash, it was pretty obvious to me at the time that they did very little testing. This is now confirmed.)

                      1 Reply Last reply
                      0
                      • R R Giskard Reventlov

                        I think the pragmatic programmer uses a little of both as circumstances dictate. To extoll the virtues of one over the other is to miss the point of real-world programming: all coding is a compromise between the shiny promise of perfectly architected code and something simple and robust that works well but might well be sneered at by design pattern afficionados and the like. There are too many pointless pissing contests in the software world: ignore them and just try to be the most professional and pragmatic programmer you can be in whatever language/technology you choose to make a living from.

                        me, me, me

                        M Offline
                        M Offline
                        Member 96
                        wrote on last edited by
                        #18

                        Yup, that is the definitive summary of the whole issue, nothing more needs to be said.


                        "Creating your own blog is about as easy as creating your own urine, and you're about as likely to find someone else interested in it." -- Lore Sjöberg

                        1 Reply Last reply
                        0
                        • N Nemanja Trifunovic

                          Among the numerous responses to the Joel's controversial text[^], I like this one[^] the best. Some quotes: "i've said it before, @jbogard : never take software advice from a bug tracking system salesman" And a more serious one that IMHO sums it up: "The nasty truth about misapplying duct tape solutions in serious software development is that the duct tape solution ends up creating unnecessary additional complexity because it doesn’t address the whole problem, just the symptoms. This isn’t unique to software development, but if duct tape solutions are used to achieve short term gains, then future solutions are built on a foundation of duct tape instead of some sound organizational method."

                          utf8-cpp

                          S Offline
                          S Offline
                          Single Step Debugger
                          wrote on last edited by
                          #19

                          I equally hate the both extreme types of programmers: 1. “Home grows developers”: Ill or self educated individuals, duct type dedicated, full of “innovation” ideas, using OOP only in conversation with other “home grown” developers, but not in their code. For them 900 rows function and SQL script injected in the application source code is something perfectly normal and 10K rows is a HUGE project! 2. “Genii”: A good programmers with obsession of perfection. They will spend five days designing the perfect singleton class instead of just getting job done for one day. They are capable of moving the OOP concept one step further, from useful technique to over complicated, unreadable pile of crap where one simple function is separated between twenty different classes. Using the templates is obligatory, only languages: C++ or Java. Oh, I forgot – Oracle is not RDBS, Oracle is religion!

                          The narrow specialist in the broad sense of the word is a complete idiot in the narrow sense of the word. Advertise here – minimum three posts per day are guaranteed.

                          1 Reply Last reply
                          0
                          • N Nemanja Trifunovic

                            stephen.hazel wrote:

                            He's just sayin' to not go overboard with complexity

                            "Duct tape" is not about avoiding complexity, it is about cutting corners. If you copy and paste a chunk of code rather than refactoring it into a separate function, you are applying a "duct tape" solution and it is not simpler than doing the right thing, just messier.

                            utf8-cpp

                            M Offline
                            M Offline
                            Member 96
                            wrote on last edited by
                            #20

                            Nemanja Trifunovic wrote:

                            "Duct tape" is not about avoiding complexity, it is about cutting corners.

                            No, it's not. You and many others seem to have based an entire rebuttal on the term "duct tape" without actually reading the article.


                            "Creating your own blog is about as easy as creating your own urine, and you're about as likely to find someone else interested in it." -- Lore Sjöberg

                            S 1 Reply Last reply
                            0
                            • N Nemanja Trifunovic

                              Among the numerous responses to the Joel's controversial text[^], I like this one[^] the best. Some quotes: "i've said it before, @jbogard : never take software advice from a bug tracking system salesman" And a more serious one that IMHO sums it up: "The nasty truth about misapplying duct tape solutions in serious software development is that the duct tape solution ends up creating unnecessary additional complexity because it doesn’t address the whole problem, just the symptoms. This isn’t unique to software development, but if duct tape solutions are used to achieve short term gains, then future solutions are built on a foundation of duct tape instead of some sound organizational method."

                              utf8-cpp

                              T Offline
                              T Offline
                              ToddHileHoffer
                              wrote on last edited by
                              #21

                              There is good and bad in everything. I feel like .net is the perfect tool for duct tape programming. As long as use the framework to complete most of your tasks and follow simple best practices like using the app and web config files, coding with using statements in C# whenever possible, creating strong typed properties for accessing things like Session, ViewState and App.Config variables, it really does help you from creating too much of mess. ***Edit (forgot SQL Parameters)

                              I didn't get any requirements for the signature

                              1 Reply Last reply
                              0
                              • R R Giskard Reventlov

                                I think the pragmatic programmer uses a little of both as circumstances dictate. To extoll the virtues of one over the other is to miss the point of real-world programming: all coding is a compromise between the shiny promise of perfectly architected code and something simple and robust that works well but might well be sneered at by design pattern afficionados and the like. There are too many pointless pissing contests in the software world: ignore them and just try to be the most professional and pragmatic programmer you can be in whatever language/technology you choose to make a living from.

                                me, me, me

                                N Offline
                                N Offline
                                Nemanja Trifunovic
                                wrote on last edited by
                                #22

                                digital man wrote:

                                all coding is a compromise between the shiny promise of perfectly architected code and something simple and robust that works well but might well be sneered at by design pattern afficionados and the like.

                                In fact, my ideal is much closer to "something simple and robust that works" than "the shiny promise of perfectly architected code" (whatever that means). But duct-tape programming is exactly the opposite of "robust" and that's my main issue with it.

                                utf8-cpp

                                1 Reply Last reply
                                0
                                • H Hans Dietrich

                                  The problem I have with both the pro- and con- factions is that there is a dearth of real-world examples. For example, I have no idea what a "sound organizational method" is. What is the antithesis of "sound organizational method"? Is it spaghetti code? As a contractor I've had to use a fair amount of duct tape, because by the time I'm hired the project is already in trouble. Why would the client hire me if everything was peachy? Is there "good" duct tape programming and "bad" duct tape programming, like cholesterol?

                                  Best wishes, Hans


                                  [Hans Dietrich Software]

                                  P Offline
                                  P Offline
                                  peterchen
                                  wrote on last edited by
                                  #23

                                  Hans Dietrich wrote:

                                  sound organizational method

                                  Silent Organizational Methods. Like, Perl Ninjas.

                                  Personally, I love the idea that Raymond spends his nights posting bad regexs to mailing lists under the pseudonym of Jane Smith. He'd be like a super hero, only more nerdy and less useful. [Trevel]
                                  | FoldWithUs! | sighist

                                  1 Reply Last reply
                                  0
                                  • N Nemanja Trifunovic

                                    Among the numerous responses to the Joel's controversial text[^], I like this one[^] the best. Some quotes: "i've said it before, @jbogard : never take software advice from a bug tracking system salesman" And a more serious one that IMHO sums it up: "The nasty truth about misapplying duct tape solutions in serious software development is that the duct tape solution ends up creating unnecessary additional complexity because it doesn’t address the whole problem, just the symptoms. This isn’t unique to software development, but if duct tape solutions are used to achieve short term gains, then future solutions are built on a foundation of duct tape instead of some sound organizational method."

                                    utf8-cpp

                                    P Offline
                                    P Offline
                                    peterchen
                                    wrote on last edited by
                                    #24

                                    IMO the main problem with duct tape programmers is that we have to many bad ones of them, and they'll use Joel as an excuse. Maybe Joels hiring policies work as advertised indeed, and he never worked with people bad at programming.

                                    Personally, I love the idea that Raymond spends his nights posting bad regexs to mailing lists under the pseudonym of Jane Smith. He'd be like a super hero, only more nerdy and less useful. [Trevel]
                                    | FoldWithUs! | sighist

                                    1 Reply Last reply
                                    0
                                    • N Nemanja Trifunovic

                                      stephen.hazel wrote:

                                      He's just sayin' to not go overboard with complexity

                                      "Duct tape" is not about avoiding complexity, it is about cutting corners. If you copy and paste a chunk of code rather than refactoring it into a separate function, you are applying a "duct tape" solution and it is not simpler than doing the right thing, just messier.

                                      utf8-cpp

                                      S Offline
                                      S Offline
                                      stephen hazel
                                      wrote on last edited by
                                      #25

                                      If I wanted to argue, I'd say that duct tape is not a well defined term. But, I've been of your opinion on about 97% of your posts. Threads and c++ are DEFINITELY worthwhile sometimes. Eh, I've got code to write (and, fortunately for me, no shipping dates I'm missin at the moment)

                                      1 Reply Last reply
                                      0
                                      • N Nemanja Trifunovic

                                        Among the numerous responses to the Joel's controversial text[^], I like this one[^] the best. Some quotes: "i've said it before, @jbogard : never take software advice from a bug tracking system salesman" And a more serious one that IMHO sums it up: "The nasty truth about misapplying duct tape solutions in serious software development is that the duct tape solution ends up creating unnecessary additional complexity because it doesn’t address the whole problem, just the symptoms. This isn’t unique to software development, but if duct tape solutions are used to achieve short term gains, then future solutions are built on a foundation of duct tape instead of some sound organizational method."

                                        utf8-cpp

                                        S Offline
                                        S Offline
                                        Steve Westbrook
                                        wrote on last edited by
                                        #26

                                        Tempted as I am to pay attention to someone who uses the phrase "analysis paralysis" four times in the course of a brief article, I think he's missing the point. Tack on all the caveats you want, but there exist situations in which a quick and dirty solution is not a bad idea. That was the point of the original article; if someone's overengineering something, it's time to restore the balance.

                                        1 Reply Last reply
                                        0
                                        • M Member 96

                                          Nemanja Trifunovic wrote:

                                          "Duct tape" is not about avoiding complexity, it is about cutting corners.

                                          No, it's not. You and many others seem to have based an entire rebuttal on the term "duct tape" without actually reading the article.


                                          "Creating your own blog is about as easy as creating your own urine, and you're about as likely to find someone else interested in it." -- Lore Sjöberg

                                          S Offline
                                          S Offline
                                          Shog9 0
                                          wrote on last edited by
                                          #27

                                          John C wrote:

                                          You and many others seem to have based an entire rebuttal on the term "duct tape" without actually reading the article.

                                          Doesn't say much for the metaphor then... ;-)

                                          M 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • World
                                          • Users
                                          • Groups