Scott is a Senior Software Architect at Altamira Corporation. He has been developing enterprise and web applications for over 15 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 43 posts at DZone. You can read more from them at their website. View Full User Profile

Programming Complexity - Art, Engineering or Monkey Work?

05.01.2009
| 9345 views |
  • submit to reddit

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.

References
Published at DZone with permission of Scott Leberknight, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Comments

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

I have this same speculation about the nature and complexity of Programming activity. I tried expressing my thoughts in my blog post Is Software Engineering Engineering? . my article tried addressing this same issue you tackled in your article above.probably i couldn't be as much deep as what you wrote in your article; but at least i believe i scratched the surface of the very important subject of programming discipline complexity.
thanks.

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.

dennis sellinger replied on Sun, 2009/05/03 - 2:27pm in response to: Jakob Jenkov

while I agree with most of what is said here, I can't say I agree with everything. Developing software is about delivering working programs. It is not enough to think about it, or architect it. At some point in time we have to go to where the rubber meets the road and (correctly) implement it (in code). For this, you need to sweat the details and having an overarching view of the system is just not good enough (as it will mean that someone else has to sweat the details). In the end, I think, there needs to be a good bit of code monkey in all developers and architects.

jim carry replied on Mon, 2009/07/06 - 11:59am

Normal 0 false false false EN-US X-NONE X-NONE MicrosoftInternetExplorer4 /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin:0in; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;}

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. 

 

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.