FiveRuns Blog

On Rails production performance and monitoring

Posts
5 comments

Changing with the Times

I got a shock last week when I tried to write a simple bit of Array initialization code in Java. I couldn’t remember how to do it. This may not seem awful to you but I worked professionally with Java for 11 years until last year. I prided myself on my depth of knowledge in J2EE minutiae. Sure, I purposefully switched focus to Ruby last year but to lose my Java skills just 8 months later seemed ludicrous at first glance.

However in retrospect, it’s not surprising. A language’s syntax is somewhat arbitrary: for 100 different programming languages, there’s 100 different ways of declaring a method. Semantics is not Syntax. Interface is not Implementation. In 10 years, I’ve learned loads about crafting good software (data structures, algorithms, patterns, architectures, etc) and plenty of system-specific knowledge which will be resume dead weight in 10 years (need someone with ATG Dynamo 4.5 experience? Call me).

My point is this: take care to keep the deep semantic knowledge you gain while designing and developing software. These fundamentals of software engineering will serve you well for decades. Don’t fear the loss of syntax and other ephemeral knowledge. This type of knowledge is capricious; to hold on to it longer than necessary is a waste of mental energy. Times and systems change, and so must we.

Bookmark and Share
Continued Discussion

5 responses to this entry

I’ve had the same experience. I was a Java developer for years as well, and even did ATG Dynamo, which by the way, I thought was pretty head of its time. If ATG Dynamo had been open source, it really would have taken off. But anyway, I still do some Java stuff and I realize that I think in Ruby now. I think stuff.map{|e| e.gsub(/foo/, ‘bar’) }.sort_by(&:bang) and then I realize I’m Java and that it going to take a dozen lines, maybe more.

Although this is true for most things, everything I know about HTTP, SQL, HTML, and general programming and object-oriented concepts translates into Ruby, you find some things that no longer apply. There are many features of Ruby like mixins, metaprogramming and dynamic typing that render patterns that I used to follow in Java obsolete. The trick is to be able to analyze why you follow those patterns, what problem they solve, and then determine if that problem still exists, given what Ruby gives you.

Paul Barry Paul Barry said:

on April 29, 2008 at 08:22 PM

That’s why I have never understand why syntax knowledge is tested on interviews. It has nothing to do with the capabilities of the candidate (ok, it is good to measure how prepared [s]he is).

I am really good in learning new syntaxes, but unfortunately I am even better in forgetting them (I think there is a connection between the two thing. I am able to change context really quickly and a rigid memory would not help if there are too many contexts [like using 5-10 languages in the same time]). It is not a problem, because I usually remember the semantics and it takes just a few minutes to catch up again.

teki teki said:

on April 29, 2008 at 08:41 PM

I could not agree more. The fundamentals of software design move from system to system, language to language. Ruby adds more tools to the tool chest than any other language in a long time, and packages it in much more approachable syntax than ever before.

Beyond technical knowledge of patterns and architecture, there is the understanding of the process of building good software. The real engineering is not in knowing the syntax for something, but knowing the proper/strongest/best way to approach a problem. While this is somewhat modified by the technical environment, it is mostly independent. Good software is modular, has well defined interfaces, and has an efficiency of approach. Good software isolates authority (encapsulation is one approach) so that the programmers involved do not step on each other’s toes, and the software remains self-consistent. What those look like in each system, each language, can vary a lot.

Michael Latta Michael Latta said:

on April 29, 2008 at 08:44 PM

I agree. I could never understand why people pay so much attention to syntax. For me this is a sign of immaturity. And saying things like “I won’t use Python because its syntax forces me to format code in certain ways” is plain unprofessional.

szeryf szeryf said:

on April 30, 2008 at 02:15 AM

i am gonna show this to my friend, man

evevearrotte evevearrotte said:

on May 07, 2008 at 04:42 PM

Contribute

Continue the conversation and share your thoughts. A name is required. Your e-mail address will not be displayed on the site. Textile formatting may be used in your comments (but will not be rendered in the live comment preview).

→ Posted by You on August 07, 2008 at 06:36 PM

Flickr

FiveRuns tagged photos on Flickr.

  • FiveRuns Booth
  • FiveRuns Booth
  • IMG_4686
  • IMG_4687
  • IMG_4692
  • FiveRuns RailsConf 2008
  • FiveRuns Booth
  • FiveRuns RailsConf 2008

See more FiveRuns tagged photos…

Previous Entries

Other Categories

Entries are also organized under the following general topic categories.