RSS
4 Mar 2010

Development Crutches; What Makes a Good Engineer?

Author: Joseph | Filed under: Coding, Projects

In my time as a software engineer, I have worked with many people. Over the years, I have met very talented engineers, and done my best to learn from them. I have had four “mentors” throughout my career, in three positions, and they have all been intelligent, helpful individuals that have helped me ramp-up on projects, and enhance my understanding of interesting fields of study. I fondly remember working with Brian Moore and learning a good deal about how the JVM works, especially with regard to garbage collection. My mentor during my internship at Pitney Bowes was very helpful at focusing my fresh-from-college mind to real-world tasks. My coworkers at my current position are all very skilled in their respective areas of IP Telephony, and have been doing this since before I graduated high school. Throughout all of these jobs, all of these people, I have never felt awkward asking a question, and I have been rewarded with bits and pieces of their knowledge over time.

On the other side of this coin, I have also met a handful of people who are not very talented at all. I’ve met “Oracle specialists” who seem to not know the first thing about designing a relational database structure. I’ve seen Java UI designers who can barely write a line of Java code, beyond what their “GUI Builder” creates for them. And I’ve seen engineers claiming to be a “domain expert” in certain things get called out as incorrect by a skilled engineer and a Google search.

Read the rest of this entry »

20 Jan 2010

Working With Your Brain: Mental Exhaustion

Author: Joseph | Filed under: Coding, General, Work

Growing up, I would often see my father come home really late, smelling of sweat and oil. Covered in the dirt of a day repairing boilers and furnaces, he would exhale a deep sigh of relief, and settle in for a shower and some time to relax and unwind. Many days he would get home, utterly exhausted. He broke his back every day to put food on the table, and it took its toll on him: He ended the day tired and physically drained. Such is the curse of blue-collar workers. The fact that he had any energy left to do side projects around the house is nothing short of amazing to me.

Thanks to said back-breaking, I was afforded the opportunity to go to a good school. I studied computer science, and came out with a nice white-collar job at a Fortune 500 company. My father sweat out every day so that I wouldn’t have to. He worked with his body, so that I could work with my brain.

My job is fantastic: I love the culture, my coworkers and management, and I’m genuinely interested in the project. I get to work from home quite a bit, and my schedule is fairly flexible. I like coding a lot; I do a lot of it in my free time. It’s great to do something that you actually enjoy doing.

However, I don’t feel that I have escaped the curse. I still find myself in the same situation of my father: I come home utterly exhausted. Not physically, obviously, as the majority of my work consists of sitting in a chair and typing, but mentally. After a long day, especially one that has been very trying, my brain checks out. I just want to flop down on the couch, watch some television, and putz around online.

I’m mentally drained. I’ve been programming all day. Reading code all day. Looking at logs all day. Thinking all day. I end up simply not wanting to think anymore, and I can’t think that this is all that different from the exhaustion my father felt after going through New York City basements making sure the heat was working.

There’s an old adage, “Do what you love, and you’ll never work a day in your life.”

Do what you love, and you’ll stop doing it recreationally.

It’s hard to come off a long day of work, especially when trying to accommodate people in multiple time zones across the globe, and want to fire up your text editor to work on your own projects. I still love to code, and I still work on my own things, but it’s usually restricted to weekends, or days where work was light. I can’t come home, drop everything that was happening at work, and just start hacking at PHP for another website. It’s the last thing I want to do.

And so I can see myself sitting on a couch with my father, both of us exhausted. Broken back, drained brain, just wanting to unwind until it’s time to go to bed.

At least I don’t smell like sweat and oil.

7 Dec 2009

On Application Bloat, Plug-Ins, and Intent

Author: Joseph | Filed under: Coding, Work

I’ve had this feeling on my mind for several years now, and this is the proper forum for me to let it out. In the same vein as Collaboration Overload, I feel that lots of applications are trying to hard, adding too many features, and overextending themselves. This post could have easily been called “Feature Overload.”

A prime example of this is AOL Instant Messenger. Remember back before 2000, when it was just an IM client? You would download it, and it would show you people you had added to your buddy list, and allow you to talk to them. That’s what an IM client is supposed to do. Then, one day, an update came out, and all of a sudden whenever AIM launched, it would pop up an “AIM Today” page, with useless “news” aimed at pre-teen girls. Then came a little ad space at the top of the client. At some point, they started putting Flash up there, and it would animate and play sounds. Then they started adding games into AIM. I bailed at about this point, and started using “hacked” versions of older versions of AIM, such as DeadAIM, that removed the majority of the annoying “features”. Then AIM added voice chats, which were a novelty for a month before people realized how limited they really were at the time. Various other features, and it just snowballed out of control. Now AIM is a radioactive, bloated piece of crap that most people won’t touch with a ten foot pole. The only people who still use this software are barely computer literate and resistant to change.

There was nothing wrong with AOL Instant Messenger. It did exactly what it was supposed to do very well. It became extremely popular, and was (still is?) the predominant IM client for American computer users, even if we don’t use their client anymore.  As more and more features got in, it went out of control, and completely ruined the software.

Why couldn’t they be happy doing one thing extremely well? Why did they feel the need to add completely unrelated things such as games into the program? Any game they can come up with would pale in comparison to something created solely, from the ground up, to be a game. And for simple games, there’s no real difference, other than the fact that you can now right click a buddy to challenge them to play, as opposed to sending them a link to an external website.

Read the rest of this entry »

26 Nov 2009

PlayYourTurn.com Launched

Author: Joseph | Filed under: Coding, Games

I play a lot of games. I’m a gamer.

I’ve played all sorts of games over the years, and gone through “phases” or “spurts” where I would play one type of game for a while. I really liked Real-Time Strategy games in high school (Starcraft, Command and Conquer, Age of Empires). I got into First-Person Shooters in college (Counter-Strike, Unreal Tournament). On my iPhone, I prefer puzzle games like Geared or Blocked. And let’s not forget the three years of my life I essentially lost to World of Warcraft. Thankfully, I had a full time job and a girlfriend who played, and that kept me in check.

Throughout all of this, there was one game that was a constant: One game I always played, no matter what the flavor of the month was. Since I was twelve years old, I have played Sid Meier’s Civilization.

I remember the first time I played Civilization I, I was figuring out how to play when a pixelated Shaka of the Zulu decided he was going to declare war on me, and proceeded to run through my empire. I played this for a while, and eventually got Civilization II. I have probably logged more hours of this than sleep for a large portion of my childhood. In 9th grade, I met some friends who also played, and multiplayer made it even better. Throughout high school I played Civilization II, and near the end Civilization III came out. This lasted through college, and I participated on a bunch of Civ forums, making mods, playing multiplayer games, and even chatting with the developers and hounding them for jobs when I graduated. When Civilization IV came out, I instantly jumped right in, and I’m playing a game to this day.

This is a lot of talk about games for a “professional” blog. I know this, and there’s a reason.

Read the rest of this entry »

14 Nov 2009

Reading: Coders at Work, Design of Everyday Things

Author: Joseph | Filed under: Coding

I’ve been reading more in the past few months. As I posted before, I’ve tried to make time for it, and I’ve been able to find little gaps to curl up on a couch and plow through a few chapters every now and then. Every once in a while I’ll head out to some pretentious coffee shop with my roommates and sit down to read and people watch.

Two of the nonfiction books I’ve read recently related to computer science and programming are Coders at Work, and The Design of Everyday Things.

The latter isn’t specifically about programming, but it has several chapters on user interface design. It came highly recommended to me by a friend from college, who I took several Human Factors classes with. The entire book is about design in general, and primarily focuses on physical objects like doors, control panels, and light switches. There are dozens of very interesting, supposedly true, stories about people being completely unable to open “modern looking” doors, pilots hitting the wrong buttons in their cockpit controls, and a team of well-trained nuclear engineers ignoring alerts because they go off too often for trivial things.

It was a very good read, especially since I’ve always been interested in the interaction of people with objects. However, the book was released in 2002, and was actually a revision / update of a book from 1988. This meant that the sections on computer programs and  related user interfaces were over two decades old. The author was comparing word processor interfaces, which is interesting, but everything was through the eyes of an older man in the late 80s, and the technologies were extremely old. The idea of writing a book in emacs, which this author claims to have done, is astounding to me.

Still, there were some very good design recommendations, and many that are already present in modern applications. Definitely worth the read.

Read the rest of this entry »