Archive for the ‘Computer Science’ Category

“Women in Development”? How about just “People in Development”?

Posted on March 19th, 2008 in Computer Science, Opinion, Programming | 5 Comments »

For some reason, I wasn’t too much into podcasts until recently, when long trips in the subway made me find something constructive to do while traveling to work. So I’ve been downloading a ton of podcasts that have been out there for a while now. My favorite has to be Ask A Ninja - it’s just hilarious. But as far as tech podcasts go, the Ruby On Rails Podcast is one I’ve been going way back to download and listen as many as I can.

One particular podcast (or rather, two podcasts which were from the same interview, just split in two) that caught my attention was a roundtable discussion about women in development (Part 1 / Part 2).

I found this discussion interesting, as I have to admit I haven’t encountered that many female developers myself. During my university days, I probably saw less than 10 different females taking Computer Science courses during my nearly five years there. Half of those were in the introductory programming courses, from which they rapidly switched their major when they realized they didn’t like it. The other half stuck around, but most of them didn’t seem to enjoy it much. It could probably be due to the fact that they were female.

No, I’m not saying that because they’re women, they immediately shun all types of advanced technology or science courses. I say this because in one course, I was paired with a female student for a class project. At the end of the project, while at the library finishing up on some details, she said she was surprised during this project with me, When I asked why, she said that in every Computer Science class, in every single project she’s been teamed up with boys, the guys either dumbed down what was given to her to work on, or she would be constantly be getting hit on. This was the first time someone from the opposite sex seemingly treated her as an equal, which I did.

This is a sad truth in those academic fields where men outnumber women greatly. They’re either perceived to be dumb, or simply viewed as a potential mate. And I honestly never viewed one of these girls who took classes with me like this. Okay, maybe once I took a liking to one girl, but I still would’ve liked her no matter which major she was, so I feel like I’m clear of all charges against me. I’m not sure if this has to do with the extremely-low number of Computer Science students who are female, but I’m suspecting this has something to do with it.

Trying to put myself in their shoes, I’m sure it’s difficult to deal with these things when all you want to do is just learn and be a software developer like any other. Still, I find it somewhat odd that the women need to start off groups like DevChix and PHPWomen. It’s cool to see enough females get together and form these groups and get recognized for it. But I think these groups just label them as a different breed of developer, instead of just trying to get themselves being viewed as equals. Or maybe these groups are really necessary to combat all the obstacles I mentioned that women in this field encounter. It doesn’t seem like there’s an easy way for this behavior to end.

In any case, I’m all for the females getting their voices heard, showing the world what I have known all along: women are awesome developers. Their genetics don’t have a damn thing to do with their abilities, so stop viewing them as “that programmer chick”.

I wish we all could be “Dreaming In Code”

Posted on May 12th, 2007 in Computer Science, Software | No Comments »

Dreaming In Code Book Cover

A couple of weeks ago, I purchased the book “Dreaming In Code” by Scott Rosenberg, after spotting it in my nearest Borders bookstore. I had read a bit about this book from Joel Spolsky’s site, and I was very interested in the process of building software that would be “revolutionary”. I was also interested in how the group of developers would work.

I finished reading the book this weekend, and I have to say that it was extremely interesting from the beginning. From the initial idea of the software to the formation of the group, to the many setbacks and would be inevitably encountered, it offered me a great inside look at the group effort in producing software. As I’m already accustomed of working on my own, I wanted to see how larger groups of talented people could (and should) work. And surprisingly enough, the same things that happen to me at work happened to the Chandler developers as well.

What surprised me about this book is the fact that it goes back in time, and mentioned many breakthrough moments of software engineering history, like the 1968 NATO Software Engineering Conference, and Douglas Engelbart’s legendary demonstration in San Francisco (called by some as “The Mother Of All Demos”).

These moments, and many others, were non-existant to me before reading this book. Anyone who has a Computer Science or Software Engineering degree should be required to read this. It’s a very important part of the history of what we do. Like any History major who needs to know about Ancient Rome and Greece, people in the software development field need to know about what happened during the infancy of computers and programming.

While the story of Chandler’s development is a great read and what attracted me to this book, it was refreshing to read about the current problems in software development today. I know that this industry is far from perfect. But the constant changes that occur on a frequent basis simply show that we’re trying to make things better. We need to remember that compared to other scientific and engineering professions, computer science / software engineering is still a baby, an extremely-young 60 year old baby.

I hope that someday things will change for the better in our industry, and the software development process can be a painless, quick one. However, I’m afraid that the way the future generation are being taught the profession, most likely the same mistakes will be repeated over and over again. Like I said, the industry - or better yet, we - are not perfect at all. But we need to learn from our past mistakes. Certainly, those who cannot remember the past are condemned to repeat it.

Learn to write code for my sanity

Posted on March 5th, 2007 in Computer Science, Programming | 1 Comment »

I’m currently at work, and I seriously needed a break, which is why I’m here, writing something for my blog. Why? It’s a long story, but I’ll keep it short.

My boss decided to start using part of our program that hasn’t been modified since 2004, and last used in early 2005. Of course, with all the changes we’ve done, lots of bugs started cropping up, so he put that on my lap. The problem is, I didn’t make this part of the program. Someone else who worked here until early 2005 worked completely on that module. Now that person is long gone, and I’m stuck with his code.

“No biggie”, I thought. “This shouldn’t be too difficult to modify for what the boss wants now.” Then I opened the file… It was a total mess.

I mean, I had seen messy code, a lot from myself. But this was messy. And if I have to bold and italicize a word, it’s because I really mean it. This was the worst code I have ever seen written by any developer ever. I know that PHP has a reputation for producing some awful code, but this really took the cake.

We start off with lots of Dreamweaver generated code at the beginning (some Javascript code that apparently doesn’t do anything in the application). Then we head off towards the land of unknown variables: $dbQuery1, $dbQuery2, $dbQuery3, and my personal fave, $c. Also, there was virtually no indentation all around, and the indentation that did exist was very poorly done (some if-else blocks were completely on the left margin of the code). Add up that there were exactly two comments consisting of only one word throughout the 600 lines of code, and you have a developer with a huge headache, trying to figure out what the damn thing does. And while it kinda works, now I’m faced with the dilemma of trying to add new functionality to the module while not breaking anything.

The worst part of it all is that I showed the code to one of the technicians here who actually studied in the same web-development class as the previous developer, and he told me “That’s how he’s always programmed.” So I asked what the teacher did with that code, and he told me “The teacher probably writes worse code than that.” What? A college professor writing worse code than that?

I can’t believe that Computer Science professors aren’t enforcing their students to learn how to write clean and maintainable code. And I don’t think this is an isolated incident, because at my university, the professors didn’t enforce this either. And while we were taught to use indentation correctly, informative variable names and all that, they never said anything if we didn’t follow those simple steps.

If I were a college professor giving a programming class, I would enforce those rules, probably almost harshly. If I see generic variable names (like the ones I mentioned above), I’ll dock one or two points from the final grade. If indentation isn’t used correctly, another one or two points disappear. And if the code is as unreadable as the code I’m working on now, I’ll probably fail the student, or at least give him one more day to fix that code before giving it back to me.

I’m curious to know if anyone else has seen this at college, or if it’s just another Puerto Rican incident.

Poor Computer Science

Posted on February 5th, 2007 in Computer Science, Programming | 2 Comments »

I just came across this article, which speaks about the death of Computer Science as we know it. If you’re one of the few that have actually read my information, you’ll know I have a degree in Computer Science, so this obviously caught my attention. It basically talks about the drop is Computer Science students across the world, the faults that universities have and most of the time fail to address, and how long this can continue. Unfortunately, this article makes a lot of good points that I have witnessed first hand while in college.

First off, the article mentions the perception that’s given to those who study or work with computers, particularly in the programming front. It’s sad to say that this still exists nowadays in college. But I’ve noticed it’s because there are a lot of people who just represent the stereotype of a computer geek: glasses, unkempt hair, unshaven. It didn’t matter that most of these are some of the nicest, most helpful people you’ll ever meet. But what about women? I think I only met about ten girls - total - throughout my college days who were Computer Science majors. And unfortunately, most of them were there for the wrong reasons (more on that later).

The article also mentions the impact globalization has had on the IT industry. With the end of the dot-com era, along with the offshoring many of those jobs to places like India, many people view this industry as shaky, at best. And I guess this is also true, as well. There just aren’t that many jobs as there were eight years ago, particularly here in Puerto Rico. But I don’t think this is sufficient reasoning as to why Computer Science is in a current downward spiral.

Like I said, the article has a lot of good points. But there are also some points I’d like to make that I’ve seen myself. The first one, and the most important one in my view, is the fact that the curriculum for Computer Science in most universities is very out of date. When I started my introductory programming courses back in 1999, I started with C++. But as time went on, I was mostly fed a steady diet of Visual Basic 6.0 and other Microsoft assorted software. I didn’t realize it at the time, but with so many different technologies and programming languages out there, why don’t they update their classes? I’m guessing that it’s a pretty long and arduous path in updating a college curriculum, but they should at least consider this as a priority.

Last year, the brother of an old college buddy called me up, because he was taking a programming course (at my alma mater, mind you) and needed some help. I told him to send along his assignment via E-Mail. I was shocked (yet sort of expecting it at the same time) when the assignment consisted of a Visual Basic.NET with Microsoft Access as the database back-end. At least they updated their version of Visual Studio. But it means that they’re still teaching this stuff in college. And unfortunately, this doesn’t help the students at all. Not to go on an anti-Microsoft tirade here (which I’m not, believe me), but Visual Basic will only teach Computer Science students how to drag and drop controls onto a form. Yes, I know you need the code logic and knowledge to make those controls work. But it only teaches the student to be lazy, and not to find out how things actually work. That’s how I feel about it.

There are so many great programming languages and software nowadays, that it’s a shame no one in college taking the time to pass it along to the future of this industry. Languages like Ruby, Python and even Java to me are better options than C++ and Visual Basic. Why give Microsoft Access as your main tool for a database class, if there are relational databases like MySQL and PosgreSQL that are more fully-featured? And why just give everything Microsoft, whenyou can dive into Linux, Mac OS X and other Unix-based systems like Solaris? It’s still unknown to me.

Another reason in this decline is the fact that many people in the past have failed to get their Computer Science major because they got into the field for the wrong reasons. Or, more directly, they’re in it because of the perceived money they’ll earn. Maybe back in 1998 it was true, but nowadays getting a job, much less a well-paying one, is difficult enough. Here in Puerto Rico, I know former graduates of Computer Science spend two and three years finding a job in this field, and they still haven’t gotten a programming job ever. But besides the fact that there aren’t too many positions available, there’s a bigger problem: many fail to realize that this is a life-long journey.

I bet most of those guys who graduated with me have only Visual Basic (and probably C++) in their resumes. They don’t want to continue forward and learn new things. I don’t know whether it’s because they think that what they learned in college was enough to have a job for life, or because they want money now, but an alarming number of fellow graduates I’ve seen throughout the years fail to continue learning. And in a field that changes ever-so-rapidly, the worse thing you can do is remain stagnant for long periods of time. Hell, even because “out of the loop” in the IT business for 9 months or a year is killer.

So while Computer Science departments all over the world are having problems, I think they’re remediable.