Code Artists: BFA in programming
-
GuyThiebaut wrote:
to write any code until we had shown a JSP diagram that was correctly drawn and that was functionally correct
I used to work for a company in Scotland that was run by a friend of Michael Jackson (of JSP fame). Even Jackson admitted that JSP was a mistake.
Deja View - the feeling that you've seen this post before.
Pete O'Hanlon wrote:
Even Jackson admitted that JSP was a mistake
What was the mistake? Regards Guy
You always pass failure on the way to success.
-
Pete O'Hanlon wrote:
Even Jackson admitted that JSP was a mistake
What was the mistake? Regards Guy
You always pass failure on the way to success.
It's too ephemeral for complex systems, and doesn't go far enough when dealing with business process implementation. He wrote a book here[^] that details how his thinking evolved. Shameless plug here, because I worked for the company that this book refers to and worked on the workflow engine that he talks about in the book. Buy the book, it's good (I was one of the reviewers).
Deja View - the feeling that you've seen this post before.
-
It's too ephemeral for complex systems, and doesn't go far enough when dealing with business process implementation. He wrote a book here[^] that details how his thinking evolved. Shameless plug here, because I worked for the company that this book refers to and worked on the workflow engine that he talks about in the book. Buy the book, it's good (I was one of the reviewers).
Deja View - the feeling that you've seen this post before.
Thanks. That might explain why I no longer use it. I think I found JSP very useful in helping me to learn about logical progression - but as you say with more complex systems it's just not as good. Nothing like my current extreme programming methodology :sigh: The book looks interesting. My current business is looking to change it's main accounting systems in around two years time (muggins here will be doing a large part of the migration/bug fixing) so I might ask the business to get a copy. Also I don't fancy using dry old SSaDisM in the analysis phase. Regards Guy
You always pass failure on the way to success.
-
http://www.joelonsoftware.com/items/2008/01/08.html[^]
Imagine instead an undergraduate curriculum that consists of 1/3 liberal arts, and 2/3 software development work. The teachers are experienced software developers from industry. The studio operates like a software company. You might be able to major in Game Development and work on a significant game title, for example, and that's how you spend most of your time, just like a film student spends a lot of time actually making films and the dance students spend most of their time dancing.
Frankly, i'd love to see this... and not because i consider CS topics to be too abstract or impractical. To me, it seems as though programmers are being pushed further and further into the category of interchangeable grunts/clerks, with all-too-little value being placed on the style or quality of the work they do. The last time we were hiring, it was all we could do to find any practical experience in the candidates we interviewed, much less anything approaching a love of, or pride in their work. Of course, it doesn't help that The Powers That Be remain convinced that all problems will be solved by farming out work to consultants who consider writing code akin to building prefab homes, sans elegance and quality control. IMHO, this isn't something that's going to be fixed top-down (all claims of the Six-Sigma for Software folks aside). If crap coders are all that are available, The System will work around it by building processes that don't require skill... to the detriment of us all. Thoughts?
Software development is NOT an art, let alone in the BFA category; it is an engineering discipline. It is no coincidence that the best programmers I know majored in, or spent substantial time studying, engineering. (Conversely, the worse developers I know who make any sort of claim of being professional developers ALL majored in CS--I honestly can't think of an exception.) I do think CS programs are way to heavy on theory and don't do even project oriented work. We recently hired several graduates of Neumont University which emphasizes doing projects. I've been quite impressed with them (and all the students we interviewed from there.)
Anyone who thinks he has a better idea of what's good for people than people do is a swine. - P.J. O'Rourke
-
http://www.joelonsoftware.com/items/2008/01/08.html[^]
Imagine instead an undergraduate curriculum that consists of 1/3 liberal arts, and 2/3 software development work. The teachers are experienced software developers from industry. The studio operates like a software company. You might be able to major in Game Development and work on a significant game title, for example, and that's how you spend most of your time, just like a film student spends a lot of time actually making films and the dance students spend most of their time dancing.
Frankly, i'd love to see this... and not because i consider CS topics to be too abstract or impractical. To me, it seems as though programmers are being pushed further and further into the category of interchangeable grunts/clerks, with all-too-little value being placed on the style or quality of the work they do. The last time we were hiring, it was all we could do to find any practical experience in the candidates we interviewed, much less anything approaching a love of, or pride in their work. Of course, it doesn't help that The Powers That Be remain convinced that all problems will be solved by farming out work to consultants who consider writing code akin to building prefab homes, sans elegance and quality control. IMHO, this isn't something that's going to be fixed top-down (all claims of the Six-Sigma for Software folks aside). If crap coders are all that are available, The System will work around it by building processes that don't require skill... to the detriment of us all. Thoughts?
Shog9 wrote:
The System will work around it by building processes that don't require skill... to the detriment of us all.
Hmmm, seems to me that's already happened... hasn't it? ...says the contractor diein' for an employee job that can't get one because he expects WAYYYYY too much money compared to the other code monkeys. My art ain't done in the workplace for money (any more). Sure, I've got a day job that's SORT OF like computer programming (If you can consider Oracle and Perl programming... I really don't think you should.) But any artful code i check into (shudder) cvs will soon be reformatted and turned into mush by the next employee code monkey who really likes to reformat with an average of 200 characters per line and comments with enough punctuation to choke a horse. From my viewpoint, every facet of the world is becoming a business. Schools, churches, organization - all being forced into a "business"-y mold. And business is the new war. And, let's face it. Businesses aren't interested in art. It's up to the computer programmer to work the art angle I'm thinkin'... My art originates at home where it's safe. If some of that bleeds out into my work, then great. But business is war. There's no place for art there. It'd be nice. But, well... I'm not gonna hold my breath... I'll stick with writing my little midi sequencer in c++ at home for my artistic side. ...SteveH http://shazware.com[^]
-
http://www.joelonsoftware.com/items/2008/01/08.html[^]
Imagine instead an undergraduate curriculum that consists of 1/3 liberal arts, and 2/3 software development work. The teachers are experienced software developers from industry. The studio operates like a software company. You might be able to major in Game Development and work on a significant game title, for example, and that's how you spend most of your time, just like a film student spends a lot of time actually making films and the dance students spend most of their time dancing.
Frankly, i'd love to see this... and not because i consider CS topics to be too abstract or impractical. To me, it seems as though programmers are being pushed further and further into the category of interchangeable grunts/clerks, with all-too-little value being placed on the style or quality of the work they do. The last time we were hiring, it was all we could do to find any practical experience in the candidates we interviewed, much less anything approaching a love of, or pride in their work. Of course, it doesn't help that The Powers That Be remain convinced that all problems will be solved by farming out work to consultants who consider writing code akin to building prefab homes, sans elegance and quality control. IMHO, this isn't something that's going to be fixed top-down (all claims of the Six-Sigma for Software folks aside). If crap coders are all that are available, The System will work around it by building processes that don't require skill... to the detriment of us all. Thoughts?
I must disagree with the basic premise. The great artist Pablo Picasso said "There is no abstract art. You must always start with something. Afterward you can remove all traces of reality." Unfortunately with programming the reality is that it is built on mathematics. Modern languages have "abstracted" this reality away from newer programmers with sophisticated libraries. But I do agree with Mathew Faithfull's post about reading and analyzing classic code. Just as writers of today read the great authors like Dickens and Hemingway so to should programmers read the classics. I personally would suggest Kernighan and Ritchie. Picasso also said "It took me four years to paint like Raphael, but a lifetime to paint like a child." I feel my four year computer science degree taught me the basics. Now I am capable of stripping away reality and painting like a child. But without the foundation you truly do not know what you are doing.
-
http://www.joelonsoftware.com/items/2008/01/08.html[^]
Imagine instead an undergraduate curriculum that consists of 1/3 liberal arts, and 2/3 software development work. The teachers are experienced software developers from industry. The studio operates like a software company. You might be able to major in Game Development and work on a significant game title, for example, and that's how you spend most of your time, just like a film student spends a lot of time actually making films and the dance students spend most of their time dancing.
Frankly, i'd love to see this... and not because i consider CS topics to be too abstract or impractical. To me, it seems as though programmers are being pushed further and further into the category of interchangeable grunts/clerks, with all-too-little value being placed on the style or quality of the work they do. The last time we were hiring, it was all we could do to find any practical experience in the candidates we interviewed, much less anything approaching a love of, or pride in their work. Of course, it doesn't help that The Powers That Be remain convinced that all problems will be solved by farming out work to consultants who consider writing code akin to building prefab homes, sans elegance and quality control. IMHO, this isn't something that's going to be fixed top-down (all claims of the Six-Sigma for Software folks aside). If crap coders are all that are available, The System will work around it by building processes that don't require skill... to the detriment of us all. Thoughts?
In the last few years the federal government reclassified programmers from a clerical(secretary) designation (I believe it was series 340) to programmer designations (series 2210, 1550). Some say this was a good thing. But having worked with some fed programmers, I would say the old designation was more accurate.
MrPlankton
-
Software development is NOT an art, let alone in the BFA category; it is an engineering discipline. It is no coincidence that the best programmers I know majored in, or spent substantial time studying, engineering. (Conversely, the worse developers I know who make any sort of claim of being professional developers ALL majored in CS--I honestly can't think of an exception.) I do think CS programs are way to heavy on theory and don't do even project oriented work. We recently hired several graduates of Neumont University which emphasizes doing projects. I've been quite impressed with them (and all the students we interviewed from there.)
Anyone who thinks he has a better idea of what's good for people than people do is a swine. - P.J. O'Rourke
Electrical Engineers are capable of getting the programming job done and colleges are still turning them out, even math majors are very capable. When hiring one might skip cs altogether (and we won't even talk about "information tech")and focus on EE's. However doing maintenance on code an EE wrote tends to be an unpleasant experience.
MrPlankton
-
Software development is NOT an art, let alone in the BFA category; it is an engineering discipline. It is no coincidence that the best programmers I know majored in, or spent substantial time studying, engineering. (Conversely, the worse developers I know who make any sort of claim of being professional developers ALL majored in CS--I honestly can't think of an exception.) I do think CS programs are way to heavy on theory and don't do even project oriented work. We recently hired several graduates of Neumont University which emphasizes doing projects. I've been quite impressed with them (and all the students we interviewed from there.)
Anyone who thinks he has a better idea of what's good for people than people do is a swine. - P.J. O'Rourke
Whereas I agree that Software development does not belong in the BFA category, I believe it IS as much art as it is discipline. I remember while attending University that we had to diagram out all programs prior to writing code. I believe this discipline helped a lot. It helps sell the idea for a new project - or sell how one would solve a current problem. It also helps to get the concepts across to a team of (especially junior) developers, not to mention keeping track of 'where you are' on a project that has been overcome by creep. Also, there was a required course that spanned the full cirriculum year where we were required to go out into the business world, find a company willing to work with a bunch of students, and solve a problem for them. Our grade was determined by a discussion between the POC at the business and the Prof. There is a certain amount of art to developing code that is maintainable after it has been deployed and you have gone on to other things. The discipline in it is to keep it documented enough for someone that was not in on the development to understand what the original intent was - and/or in documenting what has been done to upgrade/modify it as it matures in use. Life is not measured by the number of breaths we take, but by the moments that take our breath away. (George Carlin)
-
http://www.joelonsoftware.com/items/2008/01/08.html[^]
Imagine instead an undergraduate curriculum that consists of 1/3 liberal arts, and 2/3 software development work. The teachers are experienced software developers from industry. The studio operates like a software company. You might be able to major in Game Development and work on a significant game title, for example, and that's how you spend most of your time, just like a film student spends a lot of time actually making films and the dance students spend most of their time dancing.
Frankly, i'd love to see this... and not because i consider CS topics to be too abstract or impractical. To me, it seems as though programmers are being pushed further and further into the category of interchangeable grunts/clerks, with all-too-little value being placed on the style or quality of the work they do. The last time we were hiring, it was all we could do to find any practical experience in the candidates we interviewed, much less anything approaching a love of, or pride in their work. Of course, it doesn't help that The Powers That Be remain convinced that all problems will be solved by farming out work to consultants who consider writing code akin to building prefab homes, sans elegance and quality control. IMHO, this isn't something that's going to be fixed top-down (all claims of the Six-Sigma for Software folks aside). If crap coders are all that are available, The System will work around it by building processes that don't require skill... to the detriment of us all. Thoughts?
I totally agree with the concept of "programming as an art". Personally that's how I look at the code I write. It's a matter of balance between black and white, complexity and simplicity. The way the code looks (literally) always is an important aspect in the code I write. Is it balanced (in many aspects)? Well indented? Not cryptic? The size of names is not too small or too big? Are the naming rules consistent? Is it well documented (inline documentation explaining whys and whats)? Is it easy to understand by other developers? ... All these things influence the look of a piece of code. For me, the look is also highly correlated with the quality of the code, because it shows the care the programmer took in every aspect of it. Generally speaking, for me, "the preetier the better". Ok, ok. I know performance is very important. But being performant does not necessarily exclude being "full of art". Most developers I know (sorry: any coleague seeing this) never even worry about many of the stated aspects of programming. They only know how to criticize the code (written by others) they have to mantain, ignoring that their code might be even "worse"... The proper balance between "looks" and performance is itself an art. "Art in programming" is not a "nice to have" or an "if there is time" thing. It must be taken into account in every line you write, in every variable you name. It's not something to leave for a later "refactoring" phase, because almost certainly there will be no time for that. For me, this kind of attention given to your code is necessarily tied to loving your work. Loving to code and think. I surely do.
-
Software development is NOT an art, let alone in the BFA category; it is an engineering discipline. It is no coincidence that the best programmers I know majored in, or spent substantial time studying, engineering. (Conversely, the worse developers I know who make any sort of claim of being professional developers ALL majored in CS--I honestly can't think of an exception.) I do think CS programs are way to heavy on theory and don't do even project oriented work. We recently hired several graduates of Neumont University which emphasizes doing projects. I've been quite impressed with them (and all the students we interviewed from there.)
Anyone who thinks he has a better idea of what's good for people than people do is a swine. - P.J. O'Rourke
I rarely respond to messages on forums but felt that I had to on this one. {$RANT+} I have to disagree whole-heartedly with this one. I've worked on many projects fixing code that was written by engineers. Logic branches into the ether, insane database models, equally insane data manipulation and wading through page after page of spaghetti code with little structure and very bad variable naming conventions gave me some very nice paycheques over the years, so in a way I'm thankful that many engineers have considered themselves to be programmers. I have to admit that I've seen a dramatic degradation in the quality of code produced by CS-educated developers in the last five years and feel that the weakly-typed programming languages currently in heavy use are partly responsible. Strongly-typed languages can help enforce better development habits through the passive enforcement of discipline. They also seem to produce faster executables. The "elegant solution" that top-level developers strived for seems to be a thing of the past, replaced by the BFI (Brute Forace and Ignorance) model. In the old-time database analyst parlance, "assume infinite resources" seems to rely on the increasing horsepower of computing platforms to compensate for good coding practices. In the end, I think it comes down to discipline and dedication to your craft, whether it's cutting code or cutting meat. Whatever you do, strive to do it to the absolute best of your abilities. {$RANT-} Thanks for listening.
... Doug Filteau http://www.littlemountain.com
-
http://www.joelonsoftware.com/items/2008/01/08.html[^]
Imagine instead an undergraduate curriculum that consists of 1/3 liberal arts, and 2/3 software development work. The teachers are experienced software developers from industry. The studio operates like a software company. You might be able to major in Game Development and work on a significant game title, for example, and that's how you spend most of your time, just like a film student spends a lot of time actually making films and the dance students spend most of their time dancing.
Frankly, i'd love to see this... and not because i consider CS topics to be too abstract or impractical. To me, it seems as though programmers are being pushed further and further into the category of interchangeable grunts/clerks, with all-too-little value being placed on the style or quality of the work they do. The last time we were hiring, it was all we could do to find any practical experience in the candidates we interviewed, much less anything approaching a love of, or pride in their work. Of course, it doesn't help that The Powers That Be remain convinced that all problems will be solved by farming out work to consultants who consider writing code akin to building prefab homes, sans elegance and quality control. IMHO, this isn't something that's going to be fixed top-down (all claims of the Six-Sigma for Software folks aside). If crap coders are all that are available, The System will work around it by building processes that don't require skill... to the detriment of us all. Thoughts?
<blockquote class="FQ"><div class="FQA">Shog9 wrote:</div>http://www.joelonsoftware.com/items/2008/01/08.html\[^\] Imagine instead an undergraduate curriculum that consists of 1/3 liberal arts, and 2/3 software development work. The teachers are experienced software developers from industry. The studio operates like a software company. You might be able to major in Game Development and work on a significant game title, for example, and that's how you spend most of your time, just like a film student spends a lot of time actually making films and the dance students spend most of their time dancing. Frankly, i'd love to see this... and not because i consider CS topics to be too abstract or impractical. To me, it seems as though programmers are being pushed further and further into the category of interchangeable grunts/clerks, with all-too-little value being placed on the style or quality of the work they do. The last time we were hiring, it was all we could do to find any practical experience in the candidates we interviewed, much less anything approaching a love of, or pride in their work. Of course, it doesn't help that The Powers That Be remain convinced that all problems will be solved by farming out work to consultants who consider writing code akin to building prefab homes, sans elegance and quality control. IMHO, this isn't something that's going to be fixed top-down (all claims of the Six-Sigma for Software folks aside). If crap coders are all that are available, The System will work around it by building processes that don't require skill... to the detriment of us all. Thoughts?</blockquote> Liberal Arts or any number of non-tangential courses don't benefit a developing mind that is disinterested in them. So to toss out ratios of particular classes in the hopes they will aide and increase some creativity and style component is a pipedream. As to having people from industry teaching courses - I had that 15+ years ago when an undergraduate student - the graduate students that taught my Software Engineering, OOP, and assembly courses were all just a few years older working for various companies in Milwaukee and working towards their MS in Compsci. It's almost always beneficial to a degree because they've been in the trenches; be careful though of those who follow lousy practices at work teaching courses though lol!!!! Why does everyone almost always bring up game development industry examples? They have some of the worst quality assurance practices across software; I wo
-
Electrical Engineers are capable of getting the programming job done and colleges are still turning them out, even math majors are very capable. When hiring one might skip cs altogether (and we won't even talk about "information tech")and focus on EE's. However doing maintenance on code an EE wrote tends to be an unpleasant experience.
MrPlankton
I don't dispute that trained engineers on average tend to write functional code that is difficult to maintain. I deal with that every day. But they do write functional code--the true horrors in coding come almost exclusively from CS majors. My larger point was that the vast majority of the best developers I know came from engineering backgrounds and that this is no coincidence. Writing good software requires you to use much of the same mental discipline as engineers. For example, I am continually astonished at how few software developers have a directory of test applications where they try out tricky code in isolation before working it into an application. Interestingly, where I currently live, I've worked with developers from three major universities, one minor university and two community college (which are both becoming state universities.) By far the worse CS program is the one attached to the liberal arts college--you get a BA in CS. (I suspect that many potential programmers switch to engineering out of frustration with the theory heavy classes and thus my experience with engineers being among my top ranked software developers.) Having said all that, the real key to being good at anything is time on task. If you want to be a good software engineer, write a lot of code, know your tools and your APIs. (Again I'm continually astonished as how many "professional" developers, for example, don't know how to create a library in Visual C++.)
Anyone who thinks he has a better idea of what's good for people than people do is a swine. - P.J. O'Rourke
-
<blockquote class="FQ"><div class="FQA">Shog9 wrote:</div>http://www.joelonsoftware.com/items/2008/01/08.html\[^\] Imagine instead an undergraduate curriculum that consists of 1/3 liberal arts, and 2/3 software development work. The teachers are experienced software developers from industry. The studio operates like a software company. You might be able to major in Game Development and work on a significant game title, for example, and that's how you spend most of your time, just like a film student spends a lot of time actually making films and the dance students spend most of their time dancing. Frankly, i'd love to see this... and not because i consider CS topics to be too abstract or impractical. To me, it seems as though programmers are being pushed further and further into the category of interchangeable grunts/clerks, with all-too-little value being placed on the style or quality of the work they do. The last time we were hiring, it was all we could do to find any practical experience in the candidates we interviewed, much less anything approaching a love of, or pride in their work. Of course, it doesn't help that The Powers That Be remain convinced that all problems will be solved by farming out work to consultants who consider writing code akin to building prefab homes, sans elegance and quality control. IMHO, this isn't something that's going to be fixed top-down (all claims of the Six-Sigma for Software folks aside). If crap coders are all that are available, The System will work around it by building processes that don't require skill... to the detriment of us all. Thoughts?</blockquote> Liberal Arts or any number of non-tangential courses don't benefit a developing mind that is disinterested in them. So to toss out ratios of particular classes in the hopes they will aide and increase some creativity and style component is a pipedream. As to having people from industry teaching courses - I had that 15+ years ago when an undergraduate student - the graduate students that taught my Software Engineering, OOP, and assembly courses were all just a few years older working for various companies in Milwaukee and working towards their MS in Compsci. It's almost always beneficial to a degree because they've been in the trenches; be careful though of those who follow lousy practices at work teaching courses though lol!!!! Why does everyone almost always bring up game development industry examples? They have some of the worst quality assurance practices across software; I wo
One of my hobbies is Atari 2600 programming. That requires a rather interesting cross of art and engineering, with a little magic built in. It's not possible to do much on the 2600 without some real efforts at optimization (typically one gets 128 bytes of RAM and 4-16K of ROM) but even there it's possible to optimize too much. There's not really much point in trying to squeeze out every last byte of RAM usage if the program ends up with sixteen bytes or RAM left but not enough ROM, nor ending up with everything fitting but in an unworkable and unreadable blob that doesn't quite work and can't be fixed without pushing branches beyond +/-127 bytes. Still, it's amazing what can be done on even the simplest hardware, if one infuses the right degree of magic. Who but an artist would see the possibilities, and who but an engineer who can figure out how to get the timings so they actually work?
-
I rarely respond to messages on forums but felt that I had to on this one. {$RANT+} I have to disagree whole-heartedly with this one. I've worked on many projects fixing code that was written by engineers. Logic branches into the ether, insane database models, equally insane data manipulation and wading through page after page of spaghetti code with little structure and very bad variable naming conventions gave me some very nice paycheques over the years, so in a way I'm thankful that many engineers have considered themselves to be programmers. I have to admit that I've seen a dramatic degradation in the quality of code produced by CS-educated developers in the last five years and feel that the weakly-typed programming languages currently in heavy use are partly responsible. Strongly-typed languages can help enforce better development habits through the passive enforcement of discipline. They also seem to produce faster executables. The "elegant solution" that top-level developers strived for seems to be a thing of the past, replaced by the BFI (Brute Forace and Ignorance) model. In the old-time database analyst parlance, "assume infinite resources" seems to rely on the increasing horsepower of computing platforms to compensate for good coding practices. In the end, I think it comes down to discipline and dedication to your craft, whether it's cutting code or cutting meat. Whatever you do, strive to do it to the absolute best of your abilities. {$RANT-} Thanks for listening.
... Doug Filteau http://www.littlemountain.com
See my reply above, but I'm not making the truism that the best software developers I know came through engineering, therefore all engineers make great software developers. I would say that if you compared a bell curve of software engineers who are CS trained versus college of engineering trained, it would be more narrow and the height of the curve would be further up the scale than with CS. A big part of this is no doubt due to idiots hearing that software programming makes good money and majoring in CS without a clue what they're doing. Since many CS programs over emphasize theory, a poor coder with reasonably good study skills cans skate through. In this regard, I totally agree that CS programs need to be revamped to emphasize working on actual projects. Where I disagree is that programming is a fine art. It isn't. To me, programming is part engineering, part craft with a dash of "art" thrown in. Its closest discipline is actually architecture. Like architecture, there are programming jobs that require much more artistic skill, but by and large, it doesn't.
Anyone who thinks he has a better idea of what's good for people than people do is a swine. - P.J. O'Rourke
-
I don't dispute that trained engineers on average tend to write functional code that is difficult to maintain. I deal with that every day. But they do write functional code--the true horrors in coding come almost exclusively from CS majors. My larger point was that the vast majority of the best developers I know came from engineering backgrounds and that this is no coincidence. Writing good software requires you to use much of the same mental discipline as engineers. For example, I am continually astonished at how few software developers have a directory of test applications where they try out tricky code in isolation before working it into an application. Interestingly, where I currently live, I've worked with developers from three major universities, one minor university and two community college (which are both becoming state universities.) By far the worse CS program is the one attached to the liberal arts college--you get a BA in CS. (I suspect that many potential programmers switch to engineering out of frustration with the theory heavy classes and thus my experience with engineers being among my top ranked software developers.) Having said all that, the real key to being good at anything is time on task. If you want to be a good software engineer, write a lot of code, know your tools and your APIs. (Again I'm continually astonished as how many "professional" developers, for example, don't know how to create a library in Visual C++.)
Anyone who thinks he has a better idea of what's good for people than people do is a swine. - P.J. O'Rourke
I am not disagreeing with you. As a matter of fact I believe these rash of certifications that are becomming more and more prevalent in the programming landscape are a syptom of CS in decline, a sort of remediation if you will. I believe the future may belong to EE's in computer science.
MrPlankton
-
See my reply above, but I'm not making the truism that the best software developers I know came through engineering, therefore all engineers make great software developers. I would say that if you compared a bell curve of software engineers who are CS trained versus college of engineering trained, it would be more narrow and the height of the curve would be further up the scale than with CS. A big part of this is no doubt due to idiots hearing that software programming makes good money and majoring in CS without a clue what they're doing. Since many CS programs over emphasize theory, a poor coder with reasonably good study skills cans skate through. In this regard, I totally agree that CS programs need to be revamped to emphasize working on actual projects. Where I disagree is that programming is a fine art. It isn't. To me, programming is part engineering, part craft with a dash of "art" thrown in. Its closest discipline is actually architecture. Like architecture, there are programming jobs that require much more artistic skill, but by and large, it doesn't.
Anyone who thinks he has a better idea of what's good for people than people do is a swine. - P.J. O'Rourke
All good points, Joe. I think we're more in agreement than disagreement. I believe (hope) that the engineering schools have maintained high standards for their students. I take a lot of pride in producing the most elegant solutions I can in easily understood code and only wish more developers would adopt that discipline. I had hoped the days of obfuscated code (whether intentional or not) were behind us but I don't believe they are. I agree that there was a rush into the IT industry during the dot-com boom by people who had no business calling themselves developers. The $$$ was their sole reason for being there and their legacy is poorly designed code and poorly performing systems that we're left to clean up. I also agree with your architecture analogy. Architects (whether structural or system) need to build objects with solid foundations and clear purpose, with an elegant execution and edifice that encourages their adoption. Time for me to shut up now. Thanks again for listening. ____ Doug
... Doug Filteau http://www.littlemountain.com
-
http://www.joelonsoftware.com/items/2008/01/08.html[^]
Imagine instead an undergraduate curriculum that consists of 1/3 liberal arts, and 2/3 software development work. The teachers are experienced software developers from industry. The studio operates like a software company. You might be able to major in Game Development and work on a significant game title, for example, and that's how you spend most of your time, just like a film student spends a lot of time actually making films and the dance students spend most of their time dancing.
Frankly, i'd love to see this... and not because i consider CS topics to be too abstract or impractical. To me, it seems as though programmers are being pushed further and further into the category of interchangeable grunts/clerks, with all-too-little value being placed on the style or quality of the work they do. The last time we were hiring, it was all we could do to find any practical experience in the candidates we interviewed, much less anything approaching a love of, or pride in their work. Of course, it doesn't help that The Powers That Be remain convinced that all problems will be solved by farming out work to consultants who consider writing code akin to building prefab homes, sans elegance and quality control. IMHO, this isn't something that's going to be fixed top-down (all claims of the Six-Sigma for Software folks aside). If crap coders are all that are available, The System will work around it by building processes that don't require skill... to the detriment of us all. Thoughts?
So I dont really have time to read all the replys but just fyi here is my degree and it is an awesome program! [^] I isnt a BFA, its a BS in Visual and Game programming. You get your core art classes, along with the code classes. Its a great degree... yeah I am totally plugging my school cause its awesome! just read through the curriculum and you will see what I am talking about... :)
-
One of my hobbies is Atari 2600 programming. That requires a rather interesting cross of art and engineering, with a little magic built in. It's not possible to do much on the 2600 without some real efforts at optimization (typically one gets 128 bytes of RAM and 4-16K of ROM) but even there it's possible to optimize too much. There's not really much point in trying to squeeze out every last byte of RAM usage if the program ends up with sixteen bytes or RAM left but not enough ROM, nor ending up with everything fitting but in an unworkable and unreadable blob that doesn't quite work and can't be fixed without pushing branches beyond +/-127 bytes. Still, it's amazing what can be done on even the simplest hardware, if one infuses the right degree of magic. Who but an artist would see the possibilities, and who but an engineer who can figure out how to get the timings so they actually work?
supercat9 wrote:
One of my hobbies is Atari 2600 programming.
Wow! I hope you have other hobbies, too :omg: Was that thing a 6502 variant like the commodore 64? (just curious, but not THAT curious:))
-
I am not disagreeing with you. As a matter of fact I believe these rash of certifications that are becomming more and more prevalent in the programming landscape are a syptom of CS in decline, a sort of remediation if you will. I believe the future may belong to EE's in computer science.
MrPlankton
This has been an excellent forum to talk about the growing poor quality of programming. First, I couldn't help respond to Joe's response and the question of whether software development is an art or an engineering discipline or maybe even a science. To be a science, it must be reproducible and usually has only one (usually difficult) solution. To be an engineering discipline, it must be reproducible (not just qualitatively), but can have more than one solution. To be an art, it does not need to be reproducible, but it should be pleasing to the eye or other sense and may have more than one way of capturing its elegance (or beauty). I would put it both in the art and engineering discipline arenas since the code can be both elegant, reproducible, and have more than one solution. The code can have more than one solution by either being written in different languages or using different structures within. For example using several arrays to hold the data or a single array of structures (or objects). This would be the same as several painters painting the same live figure. Since each painter is not in the same position, each will have a different perspective and will reflect that difference in his painting. So, different programmers will use their knowledge to come up with a different solution to get the same result. Talking about CS programs, have you seen the article on "Computer Science Education: Where Are the Software Engineers of Tomorrow?" attached to today's code project email? Go to "http://www.stsc.hill.af.mil/CrossTalk/2008/01/0801DewarSchonberg.html". Are the CS educators not teaching the nuts and bolts of software development? By using Java as their primary programming language, are they only teaching the students how to use and glue objects rather than the theory and how these items work? For example, do the students understand how a (using C++ terminology) map, multi-map, or variable sized array works? Do the educators give the students assignments to recreate these and other useful structures/items/objects? Back when I was in college, there was no formal CS program, except that run by the business school. The hardcore programmers were either in the math or engineering department. The engineering department students worked more toward getting the assignment done with less focus on code elegance. (The engineering students worked more at the low level aspects of programming like instrument control, etc.) The math students looked more for code elegance while getting the assignment co