Programming Complexity - Art, Engineering or Monkey Work?
Aside from the fact that Oracle's Java Problem contains all kinds of factual and other errors (see the comments on the post) this sentence caught my eye in particular when referring to Java being "quite hard to work with" - "Then, as now, you needed to be a highly trained programmer to make heads or tails of the language."
What's the issue here? That Java is hard to work with? Perhaps more specifically, not just Java but perhaps the artificial complexity in developing "Enterprise" applications in Java? Nope. The problem is that this type of thinking epitomizes the attitude that business people and other "professionals" tend to have about software development in general, in that they believe it is or should be easy and that it is always the tools and rogue programmers that are the problem. Thus, with more and better tools, they reason, there won't be a need for skilled developers and the monkey-work of actually programming could be done by, well, monkeys.
I believe software development is one of the hardest activities humans currently do, and yes I suppose I do have some bias since I am a developer. Also contrary to what many people think, there is both art and engineering involved, and any given problem can be solved in an almost infinite variety of ways. Unlike more established disciplines that have literally been around for hundreds or thousands of years (law, medicine, accounting, architecture, certain branches of engineering like civil, etc.), the software industry hasn't even reached the century mark yet! As a result there isn't any kind of consensus whatsoever about a completely standardized "body of knowledge" and thus there isn't an industy-recognized set of standard exams and boards like you find in the medical and law professions for example. (That topic is for a future post.)
One thing that is certain is that software development involves logic, and thus people who can solve problems using logic will always be needed, whether the primary medium stays in textual format (source code) or whether it evolves into some different representation like Intentional Software is trying to do. So the statement from the article that "you needed to be a highly trained programmer to make heads or tails of the language" is always going to be true in software development. More generally, highly skilled people are needed in any complex endeavor, and attempts to dumb dumb complex things will likely not succeed in any area, not just software development. Would you trust someone to perform surgery on you so long as they have a "Dummies Guide to Surgery" book? Or someone to represent you in court who stayed at a Holiday Inn Express last night?
I hypothesize that things are becoming more complex as time moves on, not less. I also propose that unless we actually succeed in building Cylons who end up wiping us all out or enslaving us, we will never reach a point where we don't need people to actually think and use logic to solve problems. So even though many business-types would love to be able to hire a bunch of monkeys and pay them $0.01 per day to develop software, those who actually realize that highly skilled people are an asset and help their bottom line, and treat them as such, are the ones who will come out on top, because they will smash their competitors who think of software/IT purely as a cost center and not a profit center.
Scott is Chief Architect at Near Infinity Corporation, an enterprise software development, training, and consulting services company based in Reston, Virginia. He has been developing enterprise and web applications for over 14 years professionally, and has developed applications using Java, Ruby/Rails, Groovy/Grails and Python. His main areas of interest include object-oriented design, system architecture, testing, and frameworks of all types including Spring, Hibernate, Ruby on Rails, Grails, and Django. In addition, Scott enjoys learning new languages to make himself a better and more well-rounded developer a la The Pragmatic Programmers' advice to "learn one language per year." Scott is a DZone MVB and is not an employee of DZone and has posted 12 posts at DZone. You can read more from them at their website.
- Login or register to post comments
- 4542 reads
- Printer-friendly version
(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)










Comments
gvagenas replied on Fri, 2009/05/01 - 5:21pm
I agree with your points but i have to mention here the steep learning curve and the investment someone has to make for Java and especially if he follows Sun's standards (like Java EE) and although the return on investement worth it a lot of people are going for the easy way.
Also besides the attitude of the business people that you mention, someone looking at this issue, should also consider the different way of thinking between a buisiness person and a developer. That said, i don't mean that business people are thinking wrong or vice versa, but the fact that a lot of projects failed because of this huge gap between the management and the developers.
In general i am happy when i see in the market either companies that are looking and hiring monkeys for $0.01/day as you said, or when i see tools that follow the "..for Dummies" methodology because i know that there will be always the need for highly skilled people to clean up after them.
othman El moulat replied on Sat, 2009/05/02 - 10:19am
thanks.
Bora Ertung replied on Sat, 2009/05/02 - 11:48pm
That is a very hard question ;). Actually, there is no such a thing called "Software Engineering". It is invented so that anybody with an engineering degree can involve in it. It is sadly an on the air discipline which I do not take very seriously. "Software Developer" is in the same "on the air" category. I know designers with just HTML knowledge were hired as "Software Developers" or "Software Engineers" for 100K year back in that dotcom bonanza. In that context, anybody with bits of programming knowledge can call himself/herself software engineer or developer, and there is nothing there to claim otherwise. It is all so on the air. Have you seen a job posting like "Looking for experienced Computer Scientists?". I haven't.
On the other hand, I agree that crafting a good software involves multiple talents. Architecting or innovating software is what makes the whole thing fun and satisfying. It involves computer science, engineering, art and years of experience. Becoming a software architect sure ain't a monkey business.
Evolving an adaptive skill set is what all computer science majors should go after. Do not specialize, learn only the core of the new technology. Syntesise all you have learned, never specialize towards one. Do not learn every detail, learn just the good part. Never think about "learning curve" myth. If you learn how to synthesis, you will learn a new language or platform in a day. You should only adapt the technological distinctiveness of the new stuff (no not like Borg :P). Remember, there is always going to be a reference manual for the details.
Jakob Jenkov replied on Sat, 2009/05/02 - 4:25pm
I too agree with the statement, that there will always be a need for people who can actually *think out* the software, not just type it in. The more effective our development tools become, the larger applications we build. We still spend the same amount of hours developing software. We just get more done. But I don't believe it will ever be 100% automatic, or even just manual monkey work.
It is interesting to read how the previous posts mention "Art" as a part of software development. Over the years I have noticed how my own development style has changed. I seem to be using "feel" increasingly in my judgment of a given solution. Whether a solution "feel" right. Kind of weird. If it feels wrong, I'll refactor till it feels right. Sometimes I can argue why it feels better. Sometimes not. I guess this is when software development shifts from being a logic and reason driven task towards being an art. I won't claim to be a great artist, though :-) It's just that I think artist use "feel" more in their work, than engineering and software development traditionally do.
sellingerd replied on Sun, 2009/05/03 - 2:27pm
in response to: jj83777
admin01 replied on Mon, 2009/06/08 - 4:38am
jiji530 replied on Mon, 2009/06/29 - 9:42pm
xxxx1 replied on Mon, 2009/07/06 - 11:59am
I have a business that always needs to complete my clients project on time. In the early days when I have started my business I was able to do so as I had very few projects to handle but with the growth of my business the things started becoming difficult. In this situation I took the help of easy project management software from Claromentis. It proved to be a great help for my business and today I have got a very successful business running. Easy project management software is a impeccable creation of Claromentis which helped me in accessing and updating project documents, budgets and timesheets from one key point. This immaculate quality software is integrated with e-form functionality which helps users like me to have their own individual e-form, including customized fields, notifications, handlers, plug ins and SLAs for each project, which can be used for reporting concerns, requesting resources, materials or as a general support portal for all involved in project. It helped my organization in controlling project lifecycle and provided me with an arsenal of tools that helped my project run smoother, faster and easier.