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 Offline
    N Offline
    Nemanja Trifunovic
    wrote on last edited by
    #1

    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

    H R R D S 15 Replies 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

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

      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]

      N P 2 Replies 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

        R Offline
        R Offline
        Russ T
        wrote on last edited by
        #3

        I think the Duct Tape essay raises a few good points, but I do have some problems with it. The two that leap out are: It’s great to rewrite you code and make it cleaner and by the third time it’ll actually be pretty. But that’s not the point—you’re not here to write code; you’re here to ship products. Yes, granted, you're here to ship products. However, if your code isn't clear and maintainable then you really are just making a rod for your own back and not helping anyone at all! Zawinski didn’t do many unit tests. ... "If there’s no unit test the customer isn’t going to complain about that." Remember, before you freak out, that Zawinski was at Netscape when they were changing the world. I seem to recall that Netscape, for as long as I was using it, was a big steaming pile of crap. Coincidence? ;P PS I love the photo[^] in the Debunking essay :laugh:

        N P 2 Replies 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]

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

          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 2 Replies Last reply
          0
          • R Russ T

            I think the Duct Tape essay raises a few good points, but I do have some problems with it. The two that leap out are: It’s great to rewrite you code and make it cleaner and by the third time it’ll actually be pretty. But that’s not the point—you’re not here to write code; you’re here to ship products. Yes, granted, you're here to ship products. However, if your code isn't clear and maintainable then you really are just making a rod for your own back and not helping anyone at all! Zawinski didn’t do many unit tests. ... "If there’s no unit test the customer isn’t going to complain about that." Remember, before you freak out, that Zawinski was at Netscape when they were changing the world. I seem to recall that Netscape, for as long as I was using it, was a big steaming pile of crap. Coincidence? ;P PS I love the photo[^] in the Debunking essay :laugh:

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

            Russ-T wrote:

            I seem to recall that Netscape, for as long as I was using it, was a big steaming pile of crap. Coincidence?

            Worse than that - the code base became so messy they had to rewrite it from scratch - that's how Firefox was born.

            utf8-cpp

            C 1 Reply 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
              #6

              Exactly! I think the problem comes when top-level management doesn't realize that the first-line manager is saying, "Just duct-tape it", and so doesn't realize that the duct tape code might have to be replaced in the future. I guess all this stuff would be more credible if there was a line-item on project schedules: "Review/Replace all duct tape code".

              Best wishes, Hans


              [Hans Dietrich Software]

              N 1 Reply Last reply
              0
              • H Hans Dietrich

                Exactly! I think the problem comes when top-level management doesn't realize that the first-line manager is saying, "Just duct-tape it", and so doesn't realize that the duct tape code might have to be replaced in the future. I guess all this stuff would be more credible if there was a line-item on project schedules: "Review/Replace all duct tape code".

                Best wishes, Hans


                [Hans Dietrich Software]

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

                Hans Dietrich wrote:

                I guess all this stuff would be more credible if there was a line-item on project schedules: "Review/Replace all duct tape code".

                Amen! In most cases they are just not able to see the business value of doing that, at least not until it is too late.

                utf8-cpp

                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

                  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
                                          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