views:

188

answers:

8

For an aspiring theatre actor, making it to broadway probably represents success. For a karate newbie, achieving a black belt, probably means everything. As a passionate programmer who just doesn't code for a living... for whom life without computers (I guess programmer is the wrong word here - a geek maybe?) is unimaginable - What should it be? With steady progress of software outsourcing and with giants like Oracle/IBM/MS trying to acquire everything in their path, there seems to be a steady decrease in the quality of software that is being produced. Does this ever worry you as a purist?

I have had this feeling a million times... I have felt that programming which once required professionals is getting trivial. If you need a good actor, you would hire one from broadway. What would you do, if you need a great programmer?

EDIT: If you have read this question, if you have understood my rant, and if you empathize with me and would like to share your thoughts on this subject, please request reopen for this question.

+5  A: 

I am not particularly worried. There will always be a need for Great Programmers who make it their passion to make Great Software. Some will get bought up, some will fail and some will succeed. But there are lots of programmers out there who simply don't care (or maybe just "don't get it") that for anyone who is truly passionate about what they do (and good at it), there will always be a place for them. And the Oracles, IBMs and Microsofts will never be able to satisfy every niche (though they do hire some Great Programmers, and religion aside, they all do produce some great products). It's not just niches that those companies will never cover either. Look, Google is only a baby compared to the rest. Twitter, Facebook, the list goes on. Even Stack Overflow. They probably won't become billionaires, but I know for a fact that Joel, Jeff and the rest of the crew are very passionate about what they do, and I suspect that this site will make a reasonable amount of money for them, if it hasn't already.

If you go into a big investment bank, maybe you will find a bunch of programmers who don't care (and some who do). But there are those of us who consider programming to be a craft, an art, and it takes a tremendous amount of creativity (among many other skills) to write Great Software. There is more to it than reading a book on programming, showing up at 9 and leaving at 5.

Does it worry me that other people don't take Software Development (not just the single task of "programming") as seriously as I do? Sometimes. Those people probably think of programming as "just a job." I hate it when a flight gets delayed because of a computer problem, my bank makes a billing error, or a website doesn't display properly (or a $330 million spacecraft gets destroyed or people get killed, see also this SO question, but to be fair, sometimes mistakes happen and not every failure is a result of "lack of passion"). But maybe that makes others realize that programming isn't always so easy. And it definitely makes it easier for me to find a job!

I work with some great people. I enjoy my job. I enjoy my craft. I also look for people who share similar values when interviewing, and I try to instill those values in others around me. Sometimes it works, sometimes it doesn't. Most of the people at my workplace do care and probably consider programming to be an art, people who don't usually realize that they don't fit in.

(and the SO Job Board is what you do if you need a Great Programmer. Or talk to another Great Programmer, maybe he/she has friends)

So go out and do what you love to do, and don't worry about the big guys too much.

Adam Batkin
+1  A: 

I think that software development is a mix of engineering and art.

I feel that way for a couple of reasons. One is style. So much of our personal style and creativity shows up in the code we right. Items like formatting, comment style, physical layout, etc ... say quite a bit about the individual author. I've found that in many code bases, you don't need source code control to know who wrote a particular section. Tha

Also like art, looking at code can invoke a very emotional reaction in me. From awe and happiness to anger and sheer disgust.

Definitely more on the engineering side, but definitely some qualities of art.

JaredPar
@JaredPar "Also like art, looking at code can invoke a very emotional reaction in me. From awe and happiness to anger and sheer disgust." - Echo your feelings on this.
Jay
I'm a "computer and software engineer" and think software development is a. art, b. engineering, c. science (in that order).
Danny Varod
+2  A: 

Art? As opposed to... engineering? Probably, simply because software, engineering is not. The reason why programmers (developers, if you like) have to be creative is also because there is no metric, no standard, no accountability, no regulations. Which is not necessarily a bad thing. So yes, it is and will remain an art for a while, maybe for the wrong reasons.

Otávio Décio
When trying to solve a problem that can be solved in an infinite number of ways, using vast kinds of tools and technologies, while imagining the final product, possible uses, problems and expansions before even starting to work, you MUST be an artist, just like an architect of a innovative sky-scraper is an artist.
Danny Varod
@Danny - not sure, most of the problems are quite similar in nature. There are some bleeding edge things but they are not the majority. I suspect software is still an art because a lot of things we do in the field are not taught in most CS programs. Things may improve if configuration mgmt, sw architecture, QA, etc are accepted as worthy courses beyond the usual algorithms, etc.
Otávio Décio
+1  A: 

I think that writing software, painting, cooking and most other things should always be done with passion or not be done at all. If you writing code without passion, its like cooking without passion - the resulting food may be edible, but it is not something you are proud of, something that will make tasters go "wow".

Good software requires more than just lines of code, it requires a vision, architecture, planning, knowledge, devotion.

If you need a great programmer, look for one with a spark in his/her eye, with creative ideas, a thirst for knowledge (knowledge in a vast amount of fields), proof of willingness to work hard (e.g. a prestigious academic degree), just be willing to pay more for one :-)

Danny Varod
@Danny truly my point...its getting real hard to find good programmers - thanks to the giants!
Jay
+1  A: 

Heck, yes. I even like to refer to myself as a "software artist" sometimes.

Which reminds me of the only two-word joke in human history: "Pretentious? Moi?"

MusiGenesis
+2  A: 

Up front: I work for IBM now, have done for about a third of my 28 year career, here I speak for myself. I see deep passion for software, and it's transforming capabilities in my immediate colleagues. I don't by any means claim uniqueness for my employer, I have friends, former colleagues and past and present customers all over the world - there is deep enthusiasm for developeing "good" software everywhere I look. [That's not universal, but was it ever?]

I don't see any lessening of the need for the professional. I don't see any lessening for the need for the insight and innovation. And I see plenty of that going on.

One thing to bear in mind: today we are taking on way more complexity and delivering much more function than was conceivable 25 years ago. Look at what we're doing with Rich Browser Apps these days, look at the levels of system integation we're achieving.

There are market forces that may tend to deliver software earlier, and hence of lower quality than one would wish, but non the less the things I can do on my laptop today are pretty breathtaking. And yes I do curse quite frequently the quality of what I use.

As for being a purist, no I wouldn't want that badge. Engineering is about trade-offs. If you can deliver high value to the business (and some new systems are simply life-savers to a business) then time-to-delivery is an important factor.

djna
+1 - good point about trade-offs.
Otávio Décio
"If you can deliver high value to the business (and some new systems are simply life-savers to a business) then time-to-delivery is an important factor." - that's just a compromise. Think about this - Say, you hire Meryl Streep for your movie, knowing that she is one heck of an actor, would you want her to do 10% less of what she is capable of coz you want your movie out quick? It depends doesn't it? It depends on wether you are making a classic movie or a popcorn movie.
Jay
I feel that without outsourcing and mergers, the focus is not finding and hiring more Meryl Streeps. It is more about releasing a lot of popcorn movies for Summer. And that worries me
Jay
I meant.. acquistions, not mergers.
Jay
and I personally think trade-off is always a corporate term. Will you apply this to NASA's research wing? If the world were to go live in 'trade off', science wouldn't be what it is today. Similarly, Software Development can get more innovative, more beautiful and more artistic.
Jay
Taken across the world of software development as a whole, I think you make a good point. I disagree in a couple of areas. First "steady decrease" I actually think it was ever thus - if you see commercial pressures as anthithetical to art or beauty then I think most of us need to eat and so do trade-off. Do you believe "Quality, Cost, Time ... choose any two"? Putting aside the observation that sometimes quality can save time and cost, it does seem to be the case. BTW, by coincidence I was reading about teh first moon landings, they did indeed ship software with a known defect.
djna
The other area of disagreement is again on the "decline" aspect. Today we have comparatively recent, growing opportunities to do it right: Open Source and platforms such as the iPhone. My view of the Open Source world is that it truly offers the chance for beauty and art, with much reduced "commercial" pressures. As for IPhone et al, here's a real chance to do it right and get paid!
djna
+2  A: 

As a passionate programmer who just doesn't code for a living... for whom life without computers (I guess programmer is the wrong word here - a geek maybe?) is unimaginable - What should it be?

For myself, it's the idea of creating a piece of software that is downloaded 10,000 , 100,000 , or even 1,000,000 times. The feeling of creating something that is so useful...so suited to other peoples needs, yet well rounded that tens of thousands of people were able to use it, and then go to the trouble of recommending it to others, who were so taken aback by it, that they soon followed suit.

Sure, the prospect of making a living at programming is all good and well, but the absolute thrill that must grasp young programmers when they get their first positive responses to something that they have created that is: functionally excellent, light-weight and well written must be really gratifying. It is something that I've been working towards for quite a while now and hope to achieve it someday soon.

As far as the original main question was concerned, "Do you feel that it's an art?".

No. I understand that code can be beautifully well-written some times, not unlike certain mathematical formulas, however, these types of things often have to be explained to people who do not follow that field closely, which means that they are often too obtuse to be understood on their own.

Art is an expression of emotions that cannot be composed through words. Coding is an expression of words that are not often understood by compilers.

Michael Hart
"For myself, it's the idea of creating a piece of software that is downloaded 10,000 , 100,000 , or even 1,000,000 times. The feeling of creating something that is so useful...so suited to other peoples needs, yet well rounded that tens of thousands of people were able to use it" - Can't agree more with you on this.
Jay
+1  A: 

The offshoring done has started to reverse course as some projects taken out of the country have shown to not necessarily be a good idea sometimes. The outsourcing situation is interesting to my mind as there will be various System Integrators and Independent Software Vendors that will be around to integrate the software from the Oracle/MS of the world for a long time that rarely get a lot of credit for what part they play in the whole process. While some things may get worse code, eventually something will come along to replace whatever is out there. Look at how browsers have evolved from the old Netscape days to what we now have with Firefox, Internet Explorer, Chrome and Safari as the main browsers to my mind.

Another part is to look at the evolution of software development, the process not the end result. Some practices like Agile and Scrum are changing how we do what we do along with changing tools makes the whole thing rather dynamic to my mind. The art part of software is something that I think people either get or don't as there is some interpretation there of defining Art in a sense. To me, anything that is pleasing to one of my senses can be called Art so of course looking at source code can be beautiful to my mind, but then I've often been told I'm an oddball.

JB King