The Joel on Software Discussion Group (CLOSED)

A place to discuss Joel on Software. Now closed.

This community works best when people use their real names. Please register for a free account.

Other Groups:
Joel on Software
Business of Software
Design of Software (CLOSED)
.NET Questions (CLOSED)
TechInterview.org
CityDesk
FogBugz
Fog Creek Copilot


The Old Forum


Your hosts:
Albert D. Kallal
Li-Fan Chen
Stephen Jones

Follow Up on the Copy-And-Paste Post

Since I was getting several questions from this post, I thought I would address them in another post for the benefit of other JOS readers:

The original post is here...

http://discuss.joelonsoftware.com/default.asp?joel.3.568066.38
------------------------------------

I think we are getting caught up in the semantics of what it means to "copy" code in context to CPP, so let me answer the questions directed to me in the aforementioned post:

<<<Okay, so you CPP'd a code into 1000 different source files over a few years. Then oops! you figure theres something terribly wrong with the "original" code, what do you do now?>>>

ANSWER: That would never happen because I test my code rigorously....there is no way duplicating functionality would go that long on my watch without being corrected if there were a problem within the underlying code.
----------------------------------

<<<It seems to me that C&P'ing functions is even worse than C&P random code snippets...Maybe Brice uses some development environment in which "functions" and/or "C&P" have completely different meanings from what I am used to.>>>

ANSWER: No, I think the semantics of my remarks associated with copying and pasting are taken out of context. Additionally, the development environment I use is not associated with mission critical or enterprise-based application development. I engage small-scale database development which facilitates the need and use of CPP if you want your development efforts to be accelerated.
-----------------------------------

<<<I thought Brice didn't use functions at all.  Speaking of which, Brice, if you use classes and modules in .NET, how do you accomplish that with no methods?  Or do you think methods and functions are two different things?>>>

ANSWER: No, I DO use functions, what I don't do is use a function within an app for code that is used ONLY ONCE supporting a piece of functionality for the app. If code functionality is duplicated within the code, I craft the appropriate functions to support that functionality.

What I don't subscribe to is breaking up a procedure into a zillion UNNECESSARY sub procedures or functions. Again though, I recognize that breaking up routines when crafting mission critical or enterprise-based apps is necessary. Again, I develop SMALL-SCALE apps so for me, it's just easier to read a routine from top to bottom without skipping around the entire form code base to follow the code.

As far as using classes and modules is concerned, I don't use VB.Net in such a way that supports writing classes for it. While I understand and can certainly craft a .Net class, I've not had a need to do it during a development project so I haven't done it. However, I do recognize the value of classes and had downloaded a class or two off the net to use in the event that I need the supporting functionality.
-------------------------------------

<<<I have a question for Brice.  Perhaps I'm not understanding, but why would you copy a function?  I thought the point of functions is that you need only call them. 

Could you clarify this?  I'm just not understanding the purpose beyond copying a function as opposed to calling it.>>>

ANSWER: Of course! The semantics of my words were in confusion here. What I am suggesting is that it is acceptable to C&P a function from say, your code library DIRECTLY INTO your app's module file and then effect its use by calling it from within your code. The function has to come from somewhere right? That "somewhere" is my code library out of which it is copied.
--------------------------------------
<<<I would bet anything that he really doesn't know .NET, just Access/VBA.

I am sure he would not know the first thing about designing classes.>>>

ANSWER: Completely wrong. I do know VB.Net and have developed applications using both VB.Net 2003 and VB.Net 2005. I recently downloaded the VB.Net 2008 bits and am currently learning WPF along with XAML.

I do know how to craft a class, but as I suggested in my earlier remarks on this post, I've not had a need to use a class in any of the apps I've built so I haven't used them.
Brice Richard Send private email
Tuesday, November 27, 2007
 
 
>>ANSWER: That would never happen because I test my code rigorously....there is no way duplicating functionality would go that long on my watch without being corrected if there were a problem within the underlying code.


You may have rigorously tested code, but what about when there is a slight change to the business logic? You would still have to change the code in a gazillion places, test them all and hope you dint miss any.
KernelObject
Wednesday, November 28, 2007
 
 
"ANSWER: That would never happen because I test my code rigorously....there is no way duplicating functionality would go that long on my watch without being corrected if there were a problem within the underlying code."

Please, please tell me that was a sly joke. No matter how good you think you are, it's going to happen. It doesn't need to be "wrong" or "broken", all it needs is for requirements to change to put you straight in that position.

To take an example - the US recently changed daylight savings rules I believe (I don't live there, don't quote me on the details). If you had some code which you've copied and pasted a few hundred times which calculated durations based on that,  it's now "wrong". It wasn't before, but it is now. If that was in a library (where by library I mean a commonly called assembly, dll, etc. not a bunch of files full of code that you C&P from) you can update it once, and now you're back to being right again.

Otherwise, where are you now? Hunting through codebases for the places you pasted? Oh what fun, and how likely to go wrong and miss somewhere.

That's being generous of course. I bet there are bugs that have existed for ages that you haven't found. I know there are in my code, somewhere. It's inevitable.

I hope i've misunderstood your point, or had a serious sense of humour blackout and missed your satire. If not... Oh dear.
Andrew Cherry Send private email
Wednesday, November 28, 2007
 
 
+1 Andrew. And it's not satire, unless this is the longest setup for a joke I'm yet to see.
Jivlain Send private email
Wednesday, November 28, 2007
 
 
No, I didn't think it was - i've been following some of the threads and giggling now and again, but i'm fairly sure they're serious. I just couldn't stop myself from arguing this time.
Andrew Cherry Send private email
Wednesday, November 28, 2007
 
 
Andrew's point is an excellent one.

Another thing, is even if you are so rigorous and careful that you are going to be sure to update Daylight Savings change (or whatever requirements change) in 57 places in your code,  it's 57 times as much work as to update it in one place.
Sunil Tanna
Wednesday, November 28, 2007
 
 
It doesn't matter how much work were involved to make changes to code in re the Daylight Savings example.

Ya know what? I get paid for doing a job so for me, it doesn't matter if I have to C&P code 57 times or one time. I would most likely be using a function where code were duplicated that many times so for me it would be a single change within a function.

Again, and I've said it a zillion times, I develop small-scale apps so once I've completed the project, I'm done. If there is a bug that manifests from a code piece that I've C&P several times, it's not my problem. It will be the next programmer's problem to resolve.

No one is perfect and no Software Developer should be held to the standard of perfection when writing code. If you think otherwise, you are living in a fantasy world.

Having said that, I take GREAT pride in what I do and how I do it and I have pursued the most optimal path to knowledge in the areas in which I hold myself out as an expert. That doesn't mean I write bug-free code and it doesn't mean that every scrap of code in my code library is without bugs. HOWEVER, and I will stand on this, to my EXISTING knowledge, not one piece of code in my code library is buggy - not one. I've tested every single code piece and I've been using them for almost (7) years now. I've NEVER had a problem or a customer complaint about software I've built - EVER.

I would put my coding skills, creativity and knowlege up against ANYONE who works in my field.

So, before any of you JOS readers go off on your defeatist atttitudes about what you THINK is impossible, I'll tell you that it IS possible to write bug-free code when you are developing small-scale data apps. It's also possible to easily correct any problems that may arise from problematic code or the like during app development or after the app is completed.

The way I see it, companies pay for my expertise in a given area of IT, they aren't paying per se for whether or not I use a code library or my approach to coding. They are paying for my creative processes and my knowlege - period.

Now, if, along with that creativity and knowledge, I should bring along other assets to the project such as code libraries, supporting books and software apps, etc then that's added value that the company is receiving for the price negotiated.

BUT, it's certainly not a requirement....companies should be savvy to this and pursue the best possible value for the dollars spent.
Brice Richard Send private email
Wednesday, November 28, 2007
 
 
"If there is a bug that manifests from a code piece that I've C&P several times, it's not my problem. It will be the next programmer's problem to resolve."

I am struggling to reply now without resorting to a huge string of expletives. I'm sorry, but people like you shouldn't be allowed near a computer. Certainly not allowed to charge for anything you do with one. Do you have even a slight sense of professionalism? Pride? Bloody hell, even humanity?

Companies are paying you to write software. Implicit in that will be the assumption that you will write it as well as is reasonably possible, trying to minimize the potential for problems. I feel sorry for any company which mistakenly hires you.
Andrew Cherry Send private email
Wednesday, November 28, 2007
 
 
AS a sidenote, I wonder how many clown software developers are actually working today WITHOUT a code library.

I happen to believe that a code library is an INDISPENSABLE tool and IMO, if you aren't working with one, you aren't even close to being a savvy developer, let alone an optimal one because it is going to take you much longer to develop an app than one who possesses a code library from which code can be quickly accessed and applied.
Brice Richard Send private email
Wednesday, November 28, 2007
 
 
> AS a sidenote, I wonder how many clown software developers are actually working today WITHOUT a code library.

I think you're making a false dichotomy there Brice.

AFAICS nobody has argued in either thread in favor of not reusing existing code (a library of some sorts). The argument is about whether duplicating/near-duplicating code (using copy and paste) is a good thing
Sunil Tanna
Wednesday, November 28, 2007
 
 
+1 Andrew, again. Brice, of all the ridiculous things you've posted, I think that one was the worst yet. And here I was starting to think you were improving...

Analogy time. Lets say I took my car into the garage because I'd noticed that my engine is leaking some form of fluid. The mechanic applies duct tape and sends me on my way. Granted, there's a good chance that this will turn out to be a messy disaster in a while. But, hey, that doesn't matter to the mechanic, because I'll probably go to a different one next time - it's not going to be his problem anymore.
Jivlain Send private email
Wednesday, November 28, 2007
 
 
<<<Lets say I took my car into the garage because I'd noticed that my engine is leaking some form of fluid. The mechanic applies duct tape and sends me on my way. Granted, there's a good chance that this will turn out to be a messy disaster in a while. But, hey, that doesn't matter to the mechanic, because I'll probably go to a different one next time - it's not going to be his problem anymore.>>>

FALSE ANALOGY in the most egregious sense! The difference between myself and the mechanic is that I'm doing the absolute best job I know how to complete the job.

I was referring to the differences between perfection and imperfection as a function of writing code.

The mechanic in your analogy is using a substandard approach to BEGIN WITH....I'm using an OPTIMAL approach in my craft.

If a problem arises ex post facto, and I'm not a part of the project, the onus lies on the company to resolve any issue at hand.

Likewise, when I TAKE on a new project within a company, I am de facto inheriting ALL potential coding problems that may arise within the application. It works both ways here, and I have NO problem completing REWRITING or fixing someone ele's errors in their code base.

To me, that's the nature of working on project-based efforts.
Brice Richard Send private email
Wednesday, November 28, 2007
 
 
Why do you FEEL THE NEED to keep shouting?
John Topley Send private email
Wednesday, November 28, 2007
 
 
Oh Brice, now you've really dug yourself into a hole.  Think about the fact that maybe the mechanic only works on smaller, less-complicated engines and duct tape always works for him on those.  He's done the best job he can do to complete the job.  In his mind, it's optimal and he may argue that fact until he's blue in the face because "it's worked every other time".  You've just thought of yourself and your approach to software development.
anon
Wednesday, November 28, 2007
 
 
Here's a real story.

I inherited a website from somebody who wrote the whole lot in HTML (seemingly using Word, but that's another story for another time). There was HTML copied and pasted all over the place. BUT it worked and was usuable. Except for one small problem - it was taking too long to keep the website up to date, so I ended up getting the work.

I quickly refactored it into a small text file driven web app where everything was separated out and defined once and once only. Total time of refactoring - about four days. Payload of refactoring - data updates now take thirty seconds and I can do them over the phone in almost real time while the owner's telling me what they are.

The original author's not a bozo by any means. He's a pretty good graphic designer who can run circles round me when it comes to making pretty pictures. As far as the owner's concerned, he was doing a good job. But he's not getting the work anymore since I've started doing it.


Brice, I get the impression you write "throwaway" software like this. You write it once, it kinda works, the owner thinks it's good enough. Great - until somebody who's got a better grasp of development principles comes in, run rings around you, and puts you out of a job.

Don't be complacent....
Trollicious
Wednesday, November 28, 2007
 
 
>> ...I'm doing the absolute best job I know how to complete the job.

But Brice, as has been explained here ad nauseum, there *is* a better way (functions/library routines), some of your recent posts seem to indicate you know it, yet you are still apparently arguing that this better way is irrelevant because it doesn't fit in with your definition of "absolute best".

You seem to be intelligent, so it can't be a surprise to you that people take issue with the inanity of some of your statements. 

Given your defense of those statements, you apparently believe what you're saying.  Or are you on a lifelong mission to troll everyone you possibly can?
a former big-fiver Send private email
Wednesday, November 28, 2007
 
 
>> Ya know what? I get paid for doing a job so for me, it doesn't matter if I have to C&P code 57 times or one time.


Is this how you market yourself to your customers or are you just a two-faced liar? I know I certainly would never spend money on anyone with such an attitude.


>> The difference between myself and the mechanic is that I'm doing the absolute best job I know how to complete the job.


So you're finally starting to come around. We've been saying for quite awhile that you're not cut out for the job you're doing.

A little knowledge is a dangerous thing, and Brice is the most dangerous poster I've seen on this board.
The Original Henry
Wednesday, November 28, 2007
 
 
I think Brice is expressing a good point badly. The "it's the next programmer's problem" line in particular is just going to piss everyone off and detract from what he's trying to say.

I've got two different ways I can put this. First, what tools do you use at work? Let's say you use Visual Studio and MS SQL Server. Do you run them as web services, or maybe SOA, from a Microsoft server? No? Then I guess you're copying their code, aren't you?

When choosing C# over Java, or PHP over Python, you're choosing to specialize in one way of doing things. You learn the tools and libraries and become more effective. And you install -- IOW you *copy* -- that code into your environment.

We're always saying that learning syntax is easy; real fluency with a language comes with knowing the libraries. Why would you depend on someone else to always write your library functions for you?

Don't you realize that every function in a "standard" library started out with some programmer trying to solve a specific problem? When you come up with a good, reuseable solution for a common problem -- one that's not solved in any of the standard libraries -- why wouldn't you add it to your own personal library?


And the second issue is, where would you like someone like Brice to put this code so that he only has to maintain it in one place? He doesn't just work for multiple departments within one company, but for multiple different companies. Do you think they share their codebase with each other?


Copy/paste and code reuse is IMO not the flaw in what Brice has said. Where I have a problem is where you (Brice) say you don't see the need to break up large blocks of code into functions that will only be called from one place.

Creating functions to encapsulate logical units of activity really forces you to think about side effects, it allows for easier debugging, it aids in maintenance, etc. And maintenance doesn't start after you ship, it starts two seconds after you write the code.

So copying a whole function from your personal library into an application, fine. But copying the code from within a function into an application, not fine.
Drew Kime Send private email
Wednesday, November 28, 2007
 
 
I think that the issues I've expressed somehow get lost in translation....to use a cliche.

The more I post to JOS the more I'm convinced that it is nearly impossible to have an intelligent dialog through this medium because of its inherent limitations.

I suspect that if all of the JOS readers were to sit in a room and discuss software development, that the negative impressions that many JOS contributors have of me would be much different.

There is just something about this medium that inhibits the ability to really grasp and understand the points that one is making.

Perhaps I've mispoken but I will tell you that I do NOT have a problem communicating with anyone outside of JOS. My ideas are received very well and in many instances without question both in my interpersonal and professional worlds.

This leads me to believe that this medium is just not suited for truly intelligent correspondences relating to a topic as diverse and complex as software.
Brice Richard Send private email
Wednesday, November 28, 2007
 
 
I am getting sick and tired of Brice's ignorance. I skimmed his post - didn't even read it. I knew that it would contain his unique blend of in-your-face ignorance, arrogance, cluelessness, and lack of perspective that is founded on deep experience.

Brice is a troll because he knows the following:

He knows that he doesn't really know.

He knows that his proclamations that his lack of knowledge don't matter tend to anger the local crowd here.

So he misses no opportunity to push our buttons by maintaining a contrarian point of view that is usually indefensible.

And his writing is extremely poor. If he has a point it's buried in demagoguery. Yes, I am a demagogue but at least I don't waste your precious heartbeats of life wading through 10 acres of pure rubbish.

>> I do know how to craft a class,

No you don't. Quit posing.

And quit using the word "craft". Craft is in the opposite dimension from what you really appear to know how to do, which is schlock.

I really doubt he can write a class. He doesn't know what a class is. He does not understand why functions or procedures may be beneficial so how in the hell is he going to be an "OOP designer"?

He is a "missing link" caveman of software who doesn't understand how to make fire - so he is going straight to building a nuclear warhead instead.

If Brice says it, it's infantile garbage.
Bored Bystander Send private email
Wednesday, November 28, 2007
 
 
I knew you'd be impressed Bored Bystander by my "schlock and awe" approach to software development!!!
Brice Richard Send private email
Wednesday, November 28, 2007
 
 
Brice Richards: "FALSE ANALOGY in the most egregious sense! The difference between myself and the mechanic is that I'm doing the absolute best job I know how to complete the job."

And maybe the mechanic with the duct tape was too. The fact that you don't have the skills to do the job doesn't justify your continuing to do the job.

The difference between you and the mechanic is that the mechanic is working on cars and you're working on code. That's the only difference.

Drew Kime: "I think Brice is expressing a good point badly. The "it's the next programmer's problem" line in particular is just going to piss everyone off and detract from what he's trying to say."

Are you new here? Or do you just usually not read Brice's rants and therefore are ignorant of them?

Brice is saying exactly what he means. He doesn't believe in code reuse other than copy and paste, he doesn't believe in functions, he doesn't believe in maintainability of his code for anyone other than him. In a previous post, I asked about what happened if he was hit by a bus or an extended illness; he said something almost exactly like "That's not my problem.". (You can find the article here on JOS somewhere in the past couple of months.)

And Brice's refusal to listen to everyone once he posts something that is 100% wrong (like using the clipboard for inter-app communications - another prior post here) is what pisses people off. He comes in here boasting (SHOUTING) about what a GREAT PROGRAMMER I AM because WHATEVER BS I'M BRAGGING ABOUT HERE and I'M SO GREAT BECAUSE I DON'T NEED FUNCTIONS, or I USE THE WINDOWS CLIPBOARD WRONG, or I DON'T BELIEVE IN GIVING ESTIMATES, or some other BS. I seem to recall in one post about estimation, he said something like "I just tell my boss that it'll be done when I SAY it's done, and not a minute before. My boss, who pays me almost $100K a year, knows I'm so great and awesome and fantastic and super and terrific, and so he says Ok."

Careful who you defend without knowing them first; you may end up painting yourself with the same brush.

Drew: "I've got two different ways I can put this. First, what tools do you use at work? Let's say you use Visual Studio and MS SQL Server. Do you run them as web services, or maybe SOA, from a Microsoft server? No? Then I guess you're copying their code, aren't you?"

No. I'm reusing code they wrote in the first place, not copying it. There's a difference.

I'd suggest you go back and read the post that Brice linked to in his first post in this thread (which is obviously relevant to this one, or he wouldn't have provided the link), and you'll have an idea of the context to which you're posting. Then see if you still want to defend him.

Drew: "When choosing C# over Java, or PHP over Python, you're choosing to specialize in one way of doing things. You learn the tools and libraries and become more effective. And you install -- IOW you *copy* -- that code into your environment."

And again, you're wrong, and not even on the same topic. Read the post Brice linked to.

Drew: "We're always saying that learning syntax is easy; real fluency with a language comes with knowing the libraries. Why would you depend on someone else to always write your library functions for you?"

Again, wrong, and not even the topic that's under discussion here. We're not talking about not writing code. We're not talking about syntax or fluency with a language. We're talking about copying and pasting code multiple places in your codebase, instead of using the proper methodology (functions/procedures/methods) to encapsulate the repetitive code. Read the damned original post first.

Drew: "And the second issue is, where would you like someone like Brice to put this code so that he only has to maintain it in one place? He doesn't just work for multiple departments within one company, but for multiple different companies. Do you think they share their codebase with each other?"

No, again you're wrong. Brice isn't a consultant or contractor; he works for a specific employer. He's the sole developer, working in Access on small internal projects.

Don't you bother to have a clue of any sort before you post?

Drew: "Creating functions to encapsulate logical units of activity really forces you to think about side effects, it allows for easier debugging, it aids in maintenance, etc."

And there's the flaw in your entire post. Brice has steadfastly maintained (in this and many other prior posts) that functions are not necessary, and are actually a bad thing, because it means that all the code isn't there to be read in a linear fashion; instead, you have to jump around all over the place. So it's better just to type all the code in the same place (a button's click handler on a form, for instance). If you need the same code somewhere else, just copy and paste it into the new location.

Again, you should read the referenced thread before you embarrass yourself any further.
Ken White Send private email
Wednesday, November 28, 2007
 
 
++Bored Bystander, especially the last sentence.
Ken White Send private email
Wednesday, November 28, 2007
 
 
There is a curious inversion of real life credibility vs. the person's actual perception of it going on here.

Brice posts this Q & A like he's holding court. It's as though Brice is here to tell us little peons how we should think.

The reality is quite different. But Brice is associating the negative attention his posts get, with success. I really believe that he thinks that he is well respected and is telling us something that we need to hear.

Absolutely fascinating!
Bored Bystander Send private email
Wednesday, November 28, 2007
 
 
>> The more I post to JOS the more I'm convinced that it is nearly impossible to have an intelligent dialog through this medium because of its inherent limitations.


It hasn't been a problem for the rest of us. Maybe the actual problem is that the more you post, the more you expose yourself as the poseur you are. Like an earlier poster said, you're really just an over-complicated troll at this point. You post inane garbage here desperately trying to find validation for your shipwrecked mindset and when you don't find it you assume that we just aren't capable of understanding your superior intellect.

You and reality are on two different set of tracks that don't intersect.
The Original Henry
Wednesday, November 28, 2007
 
 
Yes, Ken, I've seen Brice's posts before. And yes, he is frequently badly wrong and proud to be told so by as many people as will take the time to do it.

The thing I've noticed is that sometimes in the middle of the wrongness is a little kernel of truth. In this case, the kernel is that *sometimes* there are very good reasons to copy something multiple times.

I don't think those cases are common, and in fact Brice may not actually be experiencing any of those cases. But the people who insist that you should *never* copy and paste are wrong.

What I think is happening is that Brice sees himself as the once-a-generation genius shouting into the wind of conventional wisdom. From that worldview, whenever "everyone" is telling him that he's wrong, he takes it as evidence that he's right.

In his niche, his practices (except the clipboard thing, that was just stupid) may indeed work just fine. Lots of business automation can happen with small "applications" writting using Access and Excel.

I've seen junior architecture astronauts fresh out of college who wanted to build hugely complex, multi-user, web-based, fully-buzzword-compliant systems when all the client really needed was a new report. Brice is the opposite extreme of that.
Drew Kime Send private email
Wednesday, November 28, 2007
 
 
Wow....all I can say is Wow....my remarks are taken COMPLETELY out of context.

My interpretation of C&P was the Copying that was done from out of the Code Library to an app's code base - nothing more or less.

Ken White has completely taken my remarks out of context.

No one said a damn thing about C&P WITHIN the code base...that's certainly different.....if you are doing that excessively OF COURSE you use a god damn function....what is wrong with this readership?

And if it sounds like I'm "holding court" or any other such nonsense than I would suggest to you that what you are experiencing is YOUR OWN insecurities surfacing....and has nothing to do with how or what I say in my posts.

I post here like anyone else. I have opinions and I express them - period...you either agree or disagree with them but to suggest that anyone here know what I think about anything is sheer speculation.

For reasons unknown to me, my thoughts are taken completely out of context on a variety of issues but I play along because at the end of the day, I KNOW what I believe and what works for me.

Again, and I've said it before, I would NOT be a successful developer if I could not code or if what I developed didn't work or blew up in the client's face.

That has not been the case....nor shall it ever...
Brice Richard Send private email
Wednesday, November 28, 2007
 
 
"What I think is happening is that Brice sees himself as the once-a-generation genius shouting into the wind of conventional wisdom."

That's it in a nutshell.  Brice once used the "Everyone used to think the world was flat, and they were WRONG" argument once before to refute everyone who countered his anti-function argument.

I personally think Brice is very intelligent, but ignorant.  He feels, perhaps rightly so, that "real" software principles don't apply to his niche field (i.e. small-scale database apps, typically with Access).  The problem is that he thinks his niche experience makes him a capable person to discuss different software theories, when it doesn't because he hasn't experienced them, and has no need of them.

It would be like a soapbox racer discussing racing with Dale Earnhardt (sp?) Jr and trying to give him pointers.  The end result is the same (in the example case to win a race, in this case to write software that fulfills a business goal), but the two people discussing are on totally different levels, and what applies to one won't apply to the other.

Brice's problem is that he doesn't understand that, and thinks that his small-scale, niche, one-time project experience qualifies him to discuss about anything related to software, even if it's large-scale, commercial, ongoing development, something he has absolutely zero experience with.  Thus, he continually spews forth nonsense to everyone except himself, because he's way out of his league and doesn't (or doesn't want to) realize it.
Brice Fan
Wednesday, November 28, 2007
 
 
I acknowledge that there are differences in development between larger and smaller projects.

However, I reject the notion out of hand that larger scale development is somehow better or higher esteemed in any way.

Developing anything using code is a remarkable feat in and of itself irrespective of the context in which it is deployed or crafted.

What is happening is that in the world of software development today very few devs respect MS Access and respect those who develop within it even less. That comes across loud and clear on this site.

SO the prima donnas strutting around on this site don't bother me in the least.

As for the argument that I haven't developed large scale apps so therefore my small scale experience or comments don't apply, I would argue that the REVERSE is also true....

Your large scale development methods DO NOT APPLY either to small scale development projects....if you are going to argue one way ya gotta recognize its inverse as well.

To think otherwise is myopic thinking.
Brice Richard Send private email
Wednesday, November 28, 2007
 
 
Brice, perhaps you ought to look at the environment to which you're posting.  In this environment, 'library' has specific meaning - a .dll or other file that can be linked into a project's code base to provide some functionality.  When you talk here about copying 'library' code, you're advocating in-line copying of (theoretically) already-reusable code.  For which action you *should* be ridiculed if you're actually doing it.

The term you're looking for for your collection of snippets etc is 'toolkit'.  Perhaps you should work with other programmers occasionally so your understanding of industry-wide** conventions isn't so lacking?


** I've worked in internal IT departments, as a contractor and for software shops, and the terms 'library' and 'toolkit' have had the meanings I've described in all of them.
aint't tellin' Send private email
Wednesday, November 28, 2007
 
 
>> Developing anything using code is a remarkable feat in and of itself irrespective of the context in which it is deployed or crafted.
It's only occasionally a 'remarkable feat' of 'craft'. Most of the time it's an expected outcome of moderate skill meets adequate tools, like the furniture you get at Wickes.

>> Your large scale development methods DO NOT APPLY either to small scale development projects
An OK attitude if you expect that your applications will never be wanted by anyone other than their original user. About what I'd expect after your previous 'not my problem after I get paid' statements regarding maintainability.
ain't tellin' Send private email
Wednesday, November 28, 2007
 
 
You know, Brice, I've had some empathy for you - the responses to you and your statements went beyond reasonable in one of the recent threads, I thought - but you do not make it simple for that empathy to be expressed.  You obviously care about what's being said to/about you in spite of your disclaimers; responding like you just did makes you out to be the vain, prattling JACKASS (to quote you) that some people think you are.
Send private email
Wednesday, November 28, 2007
 
 
Brice, do you seriously think that people here have worked on large-scale projects but never written a small application?

Do you honestly believe that there is a single person in the software industry who matches that description?
clcr
Wednesday, November 28, 2007
 
 
clcr: Yes, I think there are people who fit that description. (I'm excluding academic work as far as "small applications" are concerned.)

There's a quote (commonly attributed to Mark Twain, thought it was actually Blaise Pascal) that works here: "I did not have time to write you a short letter, so I wrote you a long one instead."

Some programmers *don't know how* to write a small application. They say that any "real" programmer would never use a "toy" like MS Access. And that a mashup using Access as the UI and Excel for the data storage (EEK!) is garbage. They'd want to re-write it in C#, put it on a server, and write a web interface.

But office automation tools -- and particularly Office automation tools -- are designed for non-programmers. If a competent programmer builds something using Access and Excel, the clients can do their own updates in the future as long as they're careful.

Will these apps scale to hundreds of concurrent users? Of course not. That's what "small application" means. So what happens when your "small" application suddenly becomes a victim of its own success and everyone wants to use it? That's when it becomes a prototype and you port to something more scalable. And *not until then*.


All this polarized "it must be wrong because *he* said it" crap is counterproductive.
Drew Kime Send private email
Wednesday, November 28, 2007
 
 
<<<Brice, do you seriously think that people here have worked on large-scale projects but never written a small application?>>>

Sure, all these devs with their pompous attitudes have written small-scale apps once or twice in their careers....but they ARE NOT doing it for a living, and THAT makes all the difference in the world.

IT's night and day between the two - building an enterprise app, being on a team of devs, using server connected source control, apps with thousands of lines of code and prediction models of completion to beat the band.

Small scale development is a whole other matter entirely....and developing software for the US government is another dimension entirely beyond that...
Brice Richard Send private email
Wednesday, November 28, 2007
 
 
Hey Brice,

Whatsup?
I would like to mention two things:

1. There is a difference between a computer "program" and a computer "programming systems product". What you do qualifies as the first, and what they are talking about qualifies for the second. If you wish to read more about the built-in differences between the two, I suggest you open the first chapter of "The Mythical Man-Month" by Brooks. What is true for one is not neccessarily true for the other.

2. If you wish to get a feeling of what is considered to be the best programming practices today, I recommend you pick up "Code Complete" by McConnel. It does a better job than us most in explaining WHY things should be done in one way or another. Maybe it will make you feel different about "best practices".


Best regards,
Ari Telias Send private email
Wednesday, November 28, 2007
 
 
"That would never happen because I test my code rigorously.."


Nearly impossible in large code blocks. You THINK you have tested but anyone advocating the Italian coding style is not experienced enough to actually know what rigorous testing is.
Rob Henry Send private email
Wednesday, November 28, 2007
 
 
> developing software for the US government

This is not the ringing endorsement of your skills you seem to think it is.
Virtual Case File
Wednesday, November 28, 2007
 
 
<<<> developing software for the US government

This is not the ringing endorsement of your skills you seem to think it is.>>>

It wasn't meant to be a "ringing endorsement" for anything. I was simply comparing the different gradations of software development challenges as it relates to the private and public sectors of the US.
Brice Richard Send private email
Wednesday, November 28, 2007
 
 
Brice, for what it's worth, I mainly do small scale development and I agree with the advice from the "Enterprise" crowd that you ignore.

The fact that you equate programs with thousands of lines of code with enterprise development speaks volumes about your limited perspective. The people that work on software packages pitched as "enterprise" (ye gods, I hate that buzzword) would see a thousands-of-lines application as tiny.
clcr
Wednesday, November 28, 2007
 
 
Brice,

Way to handle these condescending, arrogant a**holes.  Guys like that give us geeks a bad name.

Who cares what one's method of coding is as long as the job is done quickly, efficiently, and the code is easy to maintain.  Results are what matters in the business world, not theory.  It doesn't matter where you learned to code or what your individual methods are.  Does anyone care about the name brand of the hammer that was used to build their home?
yo
Thursday, November 29, 2007
 
 
Get a room, you two.
condescending, arrogant a**hole
Thursday, November 29, 2007
 
 
Obviously you stepped into the snake pit without seeing any of the warning signs, yo.  Brice doesn't code in a way that could be even remotely maintainable.

thanks
Cornelius
Thursday, November 29, 2007
 
 
I code in a way that I CAN MAINTAIN it. Why would I code otherwise?

In many instances, I have no way of knowing how long I will be positioned on a project.

The problem that others have with me is that the way I code doesn't agree with the way they code. I code in a way that allows me to maintain it.

Time to move forward folks.
Brice Richard Send private email
Thursday, November 29, 2007
 
 
No, Brice.  The problem is that you talk like every other shitbag, overpaid contractor out there, only without applying basic software development principles because you're unwilling to see how they could benefit you and dismiss them as not applicable to small-scale applications.

The fact that you basically admitted to hacking together some garbage for a project, and then whatever happens later isn't your concern, is the reason why people hate you moreso.  A good consultant/contractor writes code that can be maintained by whoever the company hires to maintain it.  A bad one writes junk that works but nobody knows how or why it works.  Then someone new comes in, and has to wade through the muck you left behind because it's written so that only you can understand and fix it.

You give contractors a bad name, and you damn yourself because of your arrogant attitude towards your own style, as though it cannot be improved upon.  Doing the best job you know how to do is one thing; doing it even after others have told you how you could benefit from changing it to follow accepted standards in the profession you've chosen is pure hubris, and shows how little you really know, despite somehow managing to be well-paid.
Brice Fan
Thursday, November 29, 2007
 
 
Yea well, I don't see the benefit in changing how I currently write code to follow any "accepted standards" in the profession.

Again, what I do works and if the company I'm working for wants me to maintain it, then they can continue to pay me for doing so. If budgets or minds change about the project on which I'm working, so be it. The company can hire someone else to deal with the app and at that point, as far as I'm concerned, it's not my concern any longer.

And if that sentiment strikes anyone on this board as bad, well then your bleeding hearts will have to place an emotional turnicate around the limb on which my remarks have impaled you.
Brice Richard Send private email
Thursday, November 29, 2007
 
 
> I code in a way that I CAN MAINTAIN it. Why would I
> code otherwise?

This is exactly why you antagonise so many people on this board.

Many of us take pride in our work. We strive to be better developers. We write bad code. We do nasty hacks. We feel embarassed about it and try to move forward and educate others.

Most importantly, we take great satisfaction when we deliver a product that can be easily supported. That can sometimes means coding in a way that you _or anybody else_ can maintain it. Sure, if you're a one man shop (which I think you are), you'll never get that experience. Shame. Being able to hand a project over to somebody else, and to have that developer not pick your work to pieces is a rare occasion, can be a sign of high praise.

So when somebody comes along saying that they can get paid to throw quick hacks over the wall and forget about the damage they cause, we're uncomfortable because it goes against what we strive for. Yeah, some people like to fight flames with flames, which is never a good idea because you end up with Slashdot. Others just think you're an idiot, don't comment, and move on. And some try and empathise with you - but this takes more effort than flaming, so most don't bother.

You claim that you throw your code over the wall and you receive no complaints. Well, in the real world, unlike on an internet forum, most people are a bit more tactful about what they say and do. Don't be so complacent - people have got used to using software that sucks because a lot of the time they've got no choice. Ask any non techie using internal software.

Microsoft Word crashes every once in a blue moon - do I fire off a nasty email to Microsoft support when it happens? No, I think "well, worse things happened at sea y'know" and move on.

It's been my experience that some users _just do not complain_ when the software sucks. They think it's a problem with them, when a lot of the time, it isn't. Maybe the people using your software are in this group, and think it's better just to live with what they've got than to have to argue with you about it. They might just go home from work and kick their cat to get the frustration out of their system instead.

So, maybe you're happy throwing together hacky software and disregarding your peers with years of hard graft behind them. Good for you. I wouldn't do it myself, and I can see many others on this board feel the same. So don't be too surprised when what you write annoys a lot of readers.
Not a Brice fan
Thursday, November 29, 2007
 
 
>Yea well, I don't see the benefit in changing how I >currently write code to follow any "accepted standards" in the profession.

---------------

The point is not that you can join the cool kids and feel "accepted" but that you can create higher quality software.

Now seeing all those penny stores and other stuff it is perfectly acceptable to sell junk. But don't try to give anyone advice on how to improve software quality.
Rice Brichard Send private email
Thursday, November 29, 2007
 
 
Brice,

Have you tried to get an objective opinion of your code from someone who was left to maintain or build upon it?

Getting in touch with folks on a previous project would let you measurably confirm or reject your ideas.  Right now, you're speaking from a single, biased data-point which counters all research done to date.  That would lead a reasonable person to conclude that they may be incorrect.
Tom Rath Send private email
Thursday, November 29, 2007
 
 
Honestly, I don't understand why so many people are even bothering with this guy.  Every week he makes a post to try and get everyone up and arms, and it is working.  He obviously loves the attention.
G.B. Send private email
Thursday, November 29, 2007
 
 
Brice: " I acknowledge that there are differences in development between larger and smaller projects.

However, I reject the notion out of hand that larger scale development is somehow better or higher esteemed in any way."

Nobody said it was. What we said was that the same techniques and methodologies that work for large-scale development projects also apply to small scale, little bitty Access apps like you write.

"Developing anything using code is a remarkable feat in and of itself irrespective of the context in which it is deployed or crafted."

Wrong. Garbage code is garbage code. Being able to write it is not a remarkable feat; the fact that it actually works might be considered a minor miracle, but being able to produce crap that miraculously doesn't stink doesn't mean it isn't still crap.

"What is happening is that in the world of software development today very few devs respect MS Access and respect those who develop within it even less. That comes across loud and clear on this site."

Wrong yet again. There's nothing wrong with working with Access, or VB, or any of the other languages. Access is fine for small database projects.

What we're objecting to here is the use of Access or VB (or anything else) by knowledgeless hacks who write crappy code and charge too much money for doing so. They produce spaghetti code that is hard to read and maintain by anyone other than the original author.

Regardless of what you might think, your job is not guaranteed to never change; I'd think you'd know that after the recent change in jobs because of the unexpected loss of the one before your current position. Therefore, you can't say with 100% certainty that you'll be the only one who EVER has to work with your code. (Hell, we can go back to the "what if you get hit by a bus tomorrow?" question here, too.)

Since you're being paid to produce code for your employer, and there's not 100% certainty that you'll be the only one working on it from now until eternity, you owe your employer the courtesy of producing true value for the dollars he pays you. Writing unmaintainable crap that violates every concept of good development isn't true value; it's crap. So you're forcing your boss to throw good money away on crap.

And the other thing people object to is the egotistical way you spit bad techniques and ideas out in a public forum. For God's sake! What if a new programmer actually thinks you have even a clue about something you say? You could harm them (professionally speaking) for life and ruin what may have been the next rockstar programmer before he ever got started!

"SO the prima donnas strutting around on this site don't bother me in the least."

That's because you don't have the intelligence to recognize that this has nothing to do with prima donnas; you're trying to put a language bigotry to things when that's not the case. The objection here isn't to the language you choose to use; it's to the poor techniques that you use with that language. That's a sign of poor skills; the fact that someone with no skills can produce something that appears to work is what gave VB it's bad name. It's not the language itself - it's the fact that no-talent hacks like you can use them so easily and can fool people into paying you to produce the garbage that ends up costing lots of $$$ for someone with real skills to actually fix at some point.

"As for the argument that I haven't developed large scale apps so therefore my small scale experience or comments don't apply, I would argue that the REVERSE is also true...."

Again, you've managed to create a point that doesn't exist. Read my first paragraph in this post again.

"To think otherwise is myopic thinking."

To think you know anything at all about proper software development is proof that you have no right saying anyone else can't see something. You simply can't see yourself as the talentless hack that you are. You're a perfect example of what gave Access and VB the bad names they have today.

Send me your address. I'll send you a coupon for a free clue. You obviously need it.
Ken White Send private email
Thursday, November 29, 2007
 
 
Tom Rath: "Have you tried to get an objective opinion of your code from someone who was left to maintain or build upon it?"

Brice tried that once. They had to hospitalize the poor guy who tried to do the review; the hysterical laughter and simultaneous flow of vomit almost choked him to death. Fortunately the EMTs got there in time.

Hmmm... If he hadn't made it, I wonder if they could have tried Brice for manslaughter of some kind?
Ken White Send private email
Thursday, November 29, 2007
 
 
To the great Ken White:::

Dial 1-800-whaaaaa - get over yourself and your Pollyanna ideaology

------------------------------------
<<<Have you tried to get an objective opinion of your code from someone who was left to maintain or build upon it?>>>

This is a great question. I will say this, I did contact the last employer I had wherein I developed three separate apps from scratch. I contacted (2) of the three departments using them to ask 1) whether they were still being used, and 2) if they were being used, how was the performance holding up?

The response I received...now keep in mind this was almost a year since I'd completed the applications, the response I received from BOTH departments was that both apps were still currently being used and there were NO problems with performance......did ya get that? THERE WERE NO PROBLEMS WITH APPLICATION PERFORMANCE - TWO SEPARATE DEPARTMENTS WITH DIFFERENT USERS USING TWO COMPLETELY DIFFERENT SOFTWARE APPS...

So, no, there is no developer that will be evaluating the code base for these apps anytime soon...why? Because the apps are running as expected and currently have the functionality needed to support the current business needs.

That's proof enough for me that my code is working as intended.....so the Ken White's of the world can kiss my ass...
Brice Richard Send private email
Thursday, November 29, 2007
 
 
"That's proof enough for me that my code is working as intended"

You really are a joke.  Just because something works doesn't mean it's not a piece of shit.  Hell, I inherited a codebase written by some Access hack like yourself, and it "works" for business needs.  But it's a stinking pile of garbage that nobody but the original developer can maintain. Don't be so arrogant to think that because it "works" that means you're a good developer; I've worked with a lot of shitty programmers who wrote working software - they still were shitty programmers.

I have nothing against you, and from what I've read you seem to be intelligent, but how you can be so arrogant and narrow-minded is beyond me.
Newbie IT Director
Thursday, November 29, 2007
 
 
You guys get trolled every time.

I think Brice is a former FC'er

Thursday, November 29, 2007
 
 
I guess very few people can read between the fucking lines on JOS so let me spell it out for ya....

When I had the conversation with those who were using my app....department heads....don't you think if they had a problem with the app in any way that I would have been questioned about it....???

Or what about a request to come in and talk about issues associated with the apps.....????

NONE of that occurred during my correspondences with the dept heads....so sure, there's a chance that these people could be holding back, but I doubt it. I doubt it seriously....I'm starting to think that many of the JOS readers are total tools....geesh
Brice Richard Send private email
Thursday, November 29, 2007
 
 
The Original Henry
Thursday, November 29, 2007
 
 
The fact the end users didn't bring up any problems with your application means that it works, NOT that it's well written.  There's a fundamental difference that you don't seem to grasp.  In fact, Brice, you seem to be missing the point entirely.  You're erroneously confusing an application that works with an application that's designed well.  They are, as any competent developer can tell you, two completely different things.

An application that works, and from the user's perspective works well (i.e. they can use it to accomplish tasks without it crashing or returning incorrect results) has NOTHING to do with the quality of the code or of the developer. 

You can write fully-functional applications; nobody has denied that you can produce results.  What people have taken offense to is that you consider that the "proof" that you're an accomplished developer, when you've admitted yourself that you don't use any modern software development practices, and that you don't care if your code is maintainable by others, so long as it fulfills your user's need. 

Regardless of whether or not you write working software that realizes business goals, you're still hacking together software and using practices that, while might end up working, go against the grain of every respected mind in this profession and against the experiences and best practices of your peers.  That's what you need to realize.  Nobody is saying it's a bad thing; after all you make a good living doing it.  But you need to accept that you're a hack; one who earns a good living and provides a useful service, but a hack nonetheless.
Newbie IT Director
Thursday, November 29, 2007
 
 
Brice, what if requirements change and the application needs to be modified to do something new? Does that never happen in your world, or are your ex-clients simply not telling you about it?
clcr
Thursday, November 29, 2007
 
 
"I guess very few people can read between the fucking lines on JOS so let me spell it out for ya...."

If almost everyone misunderstands you, the communication failure lies with your writing rather than their reading. To assume otherwise is the height of arrogance.
clcr
Thursday, November 29, 2007
 
 
> I guess very few people can read between the <bleep>ing
> lines on JOS so let me spell it out for ya....

> When I had the conversation with those who were using my
> app....department heads....don't you think if they had a
> problem with the app in any way that I would have been
> questioned about it....???

I don't think they would, and I'll suggest one reason why - because of your attitude. Because you seem to think swearing is an acceptable way to get your point across, I'd wager that  they'd rather not risk a shouting match with you.

Department heads tend to be the ones writing the cheques rather than actually using the software anyhow.

Have you had repeat business from these customers?

Again - a lot of people are more tactful about what they say and do, and would rather forget about it than flame you to death.
Not a Brice fan.
Thursday, November 29, 2007
 
 
I think it's about time that someone mentioned "Hitler" in this thread.

http://en.wikipedia.org/wiki/Godwin's_law
Jason Send private email
Thursday, November 29, 2007
 
 
<<<Regardless of whether or not you write working software that realizes business goals, you're still hacking together software and using practices that, while might end up working, go against the grain of every respected mind in this profession and against the experiences and best practices of your peers.  That's what you need to realize.  Nobody is saying it's a bad thing; after all you make a good living doing it.  But you need to accept that you're a hack; one who earns a good living and provides a useful service, but a hack nonetheless.>>>

I completely disagree. I see software development as something completely different than what many devs see.

Just the way I think I suppose. We have to agree to disagree on this matter.
Brice Richard Send private email
Thursday, November 29, 2007
 
 
Have you ever thought Brice that if one of your clients decided to sue you because you had held them to ransom over code so convoluted no other person could maintain it, they could just quote your postings here as an example of your bad faith?
Stephen Jones Send private email
Thursday, November 29, 2007
 
 
No because that's not my intention. Do you think trying to prove negligence in court would be a simple thing?

I was a paralegal in a former life so no, I've never thought about a legal action being cited against me.

Never. First of all, what would the damanges to the customer be? You have to prove damages and just because you have a different opinion regarding how to construct code is not a basis for a civil lawsuit.

It would be virtually impossible to sue on that basis IMO.

No company is going to be able to successfully sue someone civilly based on an application executing and performing as intended. Maintaining code or not maintaining code is a relative perception that would have no basis in court because there are no damanges associated with whether code is maintainable or not.....

I would additionally argue that I COULD MAINTAIN THE CODE - period.....the case would get laughed out of the courtroom.
Brice Richard Send private email
Friday, November 30, 2007
 
 
Hmmm...64 posts here....let's see, that makes, what? 63 pieces of time everyone wishes they had back?
I Am The Anti-Brice
Friday, November 30, 2007
 
 
Stephen Jones++++++.

Brice, so you're now a legal expert?

News flash, know-it-all moron: you can be sued for any reason at all if you piss someone off enough. It doesn't even have to be economic for them. They probably won't win but you can run through a lot of jack defending yourself.

Hope and pray that your clients and managers in client businesses don't read your dreck here.
Bored Bystander Send private email
Friday, November 30, 2007
 
 
"Brice, so you're now a legal expert?"

No, of course he's not. He's a paralegal (what's one of those) like he's a 'dev'.

He likes to talk big. He actually needs help, because he has a problem with perception and reality.

Brice - get help. You live in a fantasy world. You are not the person you pretend to be, either to other people or yourself. None of us is fooled. Can't you read, nobody takes you seriously. The only person who believes what you say about yourself is you. Some of us think you're sad, some think you're a joke. You owe it to yourself. Get help.
Not a psychotherapist
Friday, November 30, 2007
 
 

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

Other recent topics Other recent topics
 
Powered by FogBugz