Saturday, February 8, 2014

Who is a software engineer?

We've discussed in class what it means to be a software engineer and the meaning of craftsmanship, but as was brought up in the last class, how do you know that someone is qualified to be a software engineer? Software engineering certainly does not have the same certifications and regulations that ME, EE, or CE fields have.

Typically, hiring companies require that you have a degree in CS or software engineering, but this is not always the case. At some companies (which shall go unnamed), having a master's degree or PhD holds more importance than having a degree in the field that you are working in. For instance, I know a person with a master's in ME who is working on developing complex code in VB and C# but they do not understand object-oriented programming or the basics of testing and debugging software. I know another person with a bachelor's in EE who wrote thousands of lines of analysis code in Java but did not understand how to properly use try-catch blocks, report exceptions, or utilize some more basic object-oriented design principles.

Yet, these people are considered "software engineers" even though, if they had to take a certification exam, they probably would not pass. So, I guess I can understand why having standards or, though I hate to say it, regulations, can be important in producing readable, commented, well-designed code. But, at the same time, I cringe at the thought of the miles of red-tape that will be produced once some sort of unified software engineering "certification" is standardized. Anytime a regulations, committees, and certifications enter a field, it becomes a headache for anyone wanting to make that their career path. However, when you look at some of the software glitches that have cost people a significant amount of money (or released prisoners early), it is understandable why people want the standardization and certification. And when I see people "coding" and "designing" software who do not know the first thing about basic testing, debugging, and design principles, well, let's just say, it is a cause of great frustration for me. And it probably will be for you too because you know that one day you'll end up having to use that software, or, even worse, add features to it.

No comments:

Post a Comment