Wednesday, October 17, 2007

Why Is It That If You Use An IDE You Aren't A 'Real Programmer'?

I was perusing dZone and I ran across an interesting blog post that applies the Pareto Principle to software developers. I agree with most of the sentiments shared by the author, but one thing got me:
"The 80% folks make up the bulk of the software development industry. They’re not stupid; they’re merely vocational. They went to school, learned just enough Java/C#/C++, then got a job writing internal apps for banks, governments, travel firms, law firms, etc. The world usually never sees their software. They use whatever tools Microsoft hands down to them — usally VS.NET if they’re doing C++, or maybe a GUI IDE like Eclipse or IntelliJ for Java development."
You see this opinion again and again in the nerdoblogosphere, and it's one of the silliest things you can say that would distinguish an accomplished programmer from an "80 percenter". I would consider myself part of the 20% that this author is referring to. I make decisions for my team to develop or refactor software that has direct impact to literally millions of students around the world. At my company we have a ton of really smart "Alpha developers" as this post refers to them. Guess what? All of them use Eclipse.

We don't use Eclipse because we are part of some herd that is shepherded through our careers by the big players like Microsoft, Oracle, BEA, IBM, or the Eclipse Foundation. We do it because it's easier. We do it because we could try to remember the exact method calls on String, and which argument does what, but we don't really feel like it. We do it because it allows us to refactor throughout a large codebase without pulling our hair out. We do it because we like the plugins that all those awesome "20 percenters" developed for us. We do it because we can use the debugger to figure out the problems that we would otherwise spend hours fixing by sifting through System.out.println() statements.

I can understand why people would postulate that IDEs make programmers lazy. This can be true in some respects. You should probably learn how to build programs and compile and execute at the command line. You certainly shouldn't be doing builds out of them, or using them as a production deployment tool. Some people can be misled into thinking that an IDE is all they need. That's not true at all, but writing good software is not just a matter of what tool you use (or don't). You can write terrible software in any editor, even vi! It's about understanding the business requirements, understanding how your users use the system, and how to create code that is easily reused and easily maintained. I just think that having a better holistic view of your codebase makes a world of difference. There are too many advantages to using IDEs to NOT use them.

But I could be wrong =)


Terracotta Clustering

A product I have been reading about is Terracotta. Currently at my company we use Tomcat's native clustering, which does session replication across all nodes - this is practical for many of our subsystems, but obviously it has to change your perspective on the way you use (abuse) the session for storage. A solution like Terracotta is great because you aren't replicating session across every JVM, and you don't have to deal with annoying things like making sure any object that is replicated implements java.io.Serializable. I hope to test it as part of some R&D for my company as a potential configuration. The architecture is explained by this diagram:

The architecture diagram would make it appear that in a clustered environment, you have introduced a single point of failure, which would be pretty counterintuitive, but of course, you can cluster the Terracotta servers as well. Effectively, Terracotta with its granular session update writes, configured in a clustered setup, should theoretically scale in a near-linear fashion. I am curious to see if this is the case. Furthermore, I am interested to see if we can integrate it with our application without having to completely hack the installer!

Some interesting links for anyone who is interested:

Interview with Terracotta
Terracotta Confluence Site
Terracotta from theServerSide
Terracotta's Scalability Story


I will post an update with my experiences.

Monday, October 15, 2007

Sad End to a Great Weekend

Well this weekend I went with Jena to Syracuse for Homecoming. Jena was invited back by the Information Sciences school to an Alumni Career Panel where she spoke and attended a reception for current students. She did great, like I knew she would...so I got in Friday and we woke up Saturday and took a nice walk around Syracuse's beautiful campus. I can see why people want to go there. It's a great campus in a town with a lot of old-school character. The students are excited about the school and the sports. This was my second visit, the first time to watch Hakim Warrick have a dunk contest with himself against Providence a few years ago (there was also a basketball game that Syracuse won by about 30). This time I attended a football game where SU jumped out to a 14-0 lead against a tough Rutgers squad, but proceeded to lose 38-14. It was fun to take in the game - we met Jena's aunt and uncle and her cousin, also a SU alum. We then hung out in town, the flew back yesterday morning, where we watched the Redskins fumble and drop a sure win into a disappointing loss. To top it off, we walked outside as the game ended to find that my bicycle was stolen! Hrrmph. If you see a crackhead riding around the streets of DC on a bike that looks like this:



Please feel free to smack them. I loved that bike!

The trip did give me a chance to complete the Magellan book, which was an entertaining read, and then a chance to crush through George Pelecanos' book, The Night Gardener. It was a great read, as they all seem to be. Gritty crime novels all, the stories are based in Washington DC, which is great for me, as I can really picture the scenes that he sets. Pelecanos has developed a wide range of recurring characters that you can empathize with, and despite the very dark nature of most of the novels, he always sprinkles in some hope. I definitely recommend this one to anyone who likes crime novels, especially if you are a DC resident and/or native.

Friday, October 12, 2007

Books I Am Reading

I mentioned earlier that I enjoy reading when I get time...since I have been traveling a lot, spending a lot of time in airports, and I have been on a bit of a good book streak. Here is what I have been reading lately (not that anyone necessarily cares) =)

Over The Edge of The World - Laurence Bergreen - This is a pretty fascinating account of Ferdinand Magellan's circumnavigation of the globe, detailing the navigational challenges faced by the Molucca Armada in its search for fame, fortune, and legend as it sailed around S. American to get to the Spice Islands. It's a great account of a somewhat-maligned and ill-represented piece of exploration history. Based on a chronicle kept by Antonio Pigafetta, the ship chronicler, it tells us about the crew's relationship with the people living in present-day Argentina, and the Indonesian and Filipino islands; their ups and downs, the ever-present theme of religious mission, and the ever-present threat of mutiny that came with an untrusted Portuguese captain in a Castillian fleet. Good reading, and I have learned a lot about something that high school and college history books gloss over.


1491 - Charles Mann - Not only does the author share a name with one of the most fantastic pass rushing defensive ends for the Washington Redskins, he can also write a pretty decent account of the changing views that cultural anthropologists and archaeologists have about the "American" continent in the pre-Columbian era. As something of an Inca and Aztec history buff, it was fascinating to see some talk about the societies and daily life of those societies before Europeans arrived, not just through the eyes of Castillian historians, but from oral history and archaeological evidence. Definitely worth a read, and he has a great list of citations and further reading if he's piqued your interest.

The End Of Poverty - Jeffrey Sachs - This one starts off as a rather annoying list of the places Jeffrey Sachs has been and how he did awesome work there, then it turns to what he has learned and how he can use this knowledge to bring the rather ambitious "End of Povery" about. Economics readers may be a bit disappointed, as this book is more driven by anecdotal evidence than hard core supply/demand graphs and numbers, but for once, someone complains about something and then tells us how we should do something about it. Kudos for that - this book is definitely worth a look.

Performance Engineering Reading

While performance engineering isn't necessarily entrenched at many companies (outside of a few people recording and playing back LoadRunner or SilkPerformer scripts), there are some really smart people writing about it in the 'interweboblogosphere'. A couple of things I am reading about today:

Coding Horror on "little n"
jsLex - A JavaScript Profiler - saw Mr. Buffone present at JavaOne - it's a neat tool and a great idea.

Tuesday, October 9, 2007

Process? We don't need no stinkin process!

OK, I admit it, we do need process. We are a growing company. We have a lot more developers working here now, across more products and releases than ever, and somehow we have to coordinate that. However, I do not subscribe to the view that a successful company just all of a sudden hits a moment in time where EVERYTHING that they did just doesn't work anymore. Where all your processes that are in place are now obsolete, and things you didn't have processes for need processes most desperately. Yesterday, we were producing good software well, but today if we don't do it this new flashy way, it's just not good software anymore.

I personally think we have done a pretty good job making software. I guarantee that there is more we could do, but that we do well as is. We have a bunch of grown-ups working here, who are obviously very competent engineers, and can stay on task. We should reward them with greater freedom to explore ways to improve the software and their skill sets.

There has been a culture across different jobs I have worked at in my young career that rewards the latest acronym or fad that hits all the blogs and gets a writeup in Dr. Dobbs. Everyone needs to be doing that because somebody else does it successfully. The difference is that different people are working there. What worked there doesn't necessarily mesh here, and what has made us successful perhaps wouldn't thrive elsewhere if hoisted on another organization.

Obviously, I work for a software company, and when I leave my job, I go develop some more. When I get home, I feel so free, just to do work and screw up, and learn something new as a byproduct of it. I love the freedom of expression that comes with a blank slate and no "existing framework" or architectural standards to burden me. If our processes are so broken, why is it that the existing framework (the artifacts of said irreparable processes) is sacrosanct? Seems odd.

I wish we could take all our brightest minds and just put them to work on things like "how can we make really awesome new stuff and take the stuff that sucks and make it better", instead of, "oh well we use sprints now and the SCRUM master wouldn't be agile if the burndown is a waterfall of SDLC leverage, so we can't do that feature. But hey, we can just do it later." By then, a new barrage of process change will take up our time, and eventually the "new" feature will be based on technology that was obsolete five years ago.

When I go home, I get to decide what makes the greatest impact to users and bottom line and what will be the best way to do things right now, using traditional methods of estimation like "how much better will this make the product, and is it worth it in light of the fact that it takes n hours"? It's freedom, baby! Catch the fever.

Monday, October 8, 2007

Welcome

Finally made it into the world of blogs. I was told I had to have one by a respected colleague, so here it is. I will try to not be what I don't like when I read, which is judgmental, snobby, ranty, snarky, etc. I will just try to point out my observations and write about what's going on in my life. Maybe this way I can keep in touch with people a bit better, since that's definitely a weakness of mine. I have a little bit to talk about between my work life and my personal life.

To introduce, I am from Arlington, VA. I am a proud graduate of the Business School at James Madison University, where I majored in Computer Information Systems and Economics. I am getting married to a wonderful woman by the name of Jena. We are tying the knot next September 6th, here in Washington DC. I work as a Software Performance Engineer at Blackboard, Inc, in Washington, DC. I live with Jena in a townhouse over near Eastern Market. It's a great neighborhood with lots to do, tons of restaurants and bars, and one sad Safeway to shop for our groceries. When we aren't planning our wedding, we love to travel, exercise, and watch sports live and on TV, and when I get time, I like to sit down and do some reading. So, hopefully I will keep this updated and it won't be one of those blogs that just dies a slow (or fast) death due to lack of interest on the poster and the readers' part!