Conclusion - Client-Server Web Apps with JavaScript and Java (2014)

Client-Server Web Apps with JavaScript and Java (2014)

Chapter 14. Conclusion

Life is a distributed object system. However, communication among humans is a distributed hypermedia system where the mind’s intellect, voice+gestures, eyes+ears, and imagination are all components.

—Roy T. Fielding

It is fascinating to set out to write a book with a general plan in mind and then review the final result. Although different than what I initially envisioned, this book does remain faithful to a theme introduced early on—that of change. The introduction pointed out that there has been tremendous change in the world due to technological innovation and spoke to a few specific areas where this is evident. If anything, the rate of change has been increasing in recent years. It is common for a large-scale project to be considered a legacy application by the time the product is launched.

Extreme reactions like trying to apprehend all of the new innovations or ignoring them altogether are obviously shortsighted and futile. A better response is to identify which shifts are truly significant game changers. The ride through this book highlights some of the areas of software development encountered by Java developers that require a closer look. Two basic sources for insights as to how to react to the seismic shifts that continue to affect web development are the wider development community and the insights of earlier generations.

Community

Other programming communities have significantly different perspectives and can therefore inspire innovations different than those seen among the Java development community. On the whole, Java developers are rather well-established, entrenched, and somewhat corporate. They have much to learn from (and much to offer to) innovative communities that have grown up around JavaScript, Ruby, and Python, among others. Many great ideas are widely applicable to areas beyond their initial implementation. A novelty in one setting can be a revolutionary idea in another.

History

The second area is to cultivate an awareness of the past. Despite the tendency of modern culture to uncritically adopt whatever is new, it is better to be open to innovation while evaluating it with a broader view. Computer science and software development has a relatively short but rich history. Alan Kay, the computer scientist who coined the phrase “object-oriented” and led development of Smalltalk, has pointed out the tendency of much of modern computer science and software development to be a manifestation of pop culture, unconcerned with and unaware of what has come before. Many of the most significant and enduring ideas have their origins years or even decades ago. Better to stand on the shoulders of giants and learn from the mistakes of the past whenever possible:

In the last 25 years or so, we actually got something like a pop culture, similar to what happened when television came on the scene and some of its inventors thought it would be a way of getting Shakespeare to the masses. But they forgot that you have to be more sophisticated and have more perspective to understand Shakespeare. What television was able to do was to capture people as they were.

So I think the lack of a real computer science today, and the lack of real software engineering today, is partly due to this pop culture.

— Alan Kay

Coda

I hope you have learned a thing or two from this book. This is an exciting time to be working in software development, as times of change are times of unprecedented opportunity. There is plenty of new technology and no end of problems to which it can be applied. Reading this book and working with the projects can be a step, hopefully the first of many for you, that will be personally rewarding and result in the creation of systems that will make the world better. I will leave you with a thought from the great mathematician and teacher George Pólya who, though an intellectual, recognized the deeply human and personal dimension related to solving problems, which is also applicable to the creative work of software development:

It would be a mistake to think that solving problems is a purely “intellectual affair”; determination and emotions play an important role. Lukewarm determination and sleepy consent to do a little something may be enough for a routine problem in the classroom. But, to solve a serious scientific problem, will power is needed that can outlast years of toil and bitter disappointment…Teaching to solve problems is education of the will.

— George Pólya