Money magazine and Salary.com recently listed the
50 best jobs and Software Engineer is the No.1. It feels nice to be in a profession which the world holds in such high regard.
I work as a Software Engineer at Fidelity Investments in Rhode Island. I enjoy my work and on a daily basis look forward to going to my cube and working on my project. It gives me pleasure that after years of education and academic achievements, finally I now work on something that will be used by a real user. Or many real users.
To a common man, software development is a combination of acronyms ( which they dont understand or partially do) + internet + .Net + Java + Google. I guess you could also throw Intel and Apple in there. To explain to a common man what you do as a software engineer can be a big ordeal. I remember the days when I had selected it as my undergraduate major (back in India), anyone and everyone had just one question for me : Do you work in hardware or software? It was hard not to laugh at the question and politely say both....which would make them all the more surprised and curious as to how can you be doing both....maybe you are too smart.
I look at it as one of the most profound and practical ways to manage Complexity. This is one domain which runs just on the basis of ideas. If you have an idea and want to see it take form and do something for you, grab a programming language, an IDE to help you program in it and you are pretty much set. Resources will probably be the last thing to hold you back and lack of ideas will probably be the first one. My expertise is in .NET, C# being my fav language to program in and Visual Studio my fav IDE.
However, that last statement above changes a lot of things when said just by itself. The probabilty of finding C#/.NET on a developer's resume is almost that same as finding his name and email address. You would probably also find a list of certifications in there. However, neither of them give you any clue whatsoever on what software developement is all about--- Managing Complexity, Designing Solutions and doing that in a disciplined fashion --- and what are his skills with respect to that.
A side effect of such a multitude of people with the same skill set (on paper) is the lack of regard for the ones who genuinely are much more than just those acronyms. To tell someone you are a .NET Developer is probably not the best way to introduce yourself as a Software Engineer. Sadly people have built in their minds a notion of a .NET Dev as a guy with a bunch of certifications and one who can churn out code out of the Visual Studio IDE. Software design, architecture, principles are nowhere to be seen. I have also met people with research background who believe that being a Software Developer (especially with expertise in a "hot" technology) is no big deal...anyone can do it.
I design solutions. I come up with innovative ways to handle conflicting parameters. Today I implement it in .NET, tomorrow maybe some other platform. But the central idea is to come up with reusable and extensible designs which solve real world problems. And there are many more people like me in this field, way better than what I am. But I aspire to be better than them someday. To meet such developers in conferences and to have some of them as my mentors shows me that there is an elite lot which is not bound by technologies or corporations but rather with fundamentals which frame this very field. That they talk in terms of concepts and ideas, designs and interactions instead of windows and linux, .net and java.
Donald Knuth right calls Software Development as an Art. There could not be any better analogy for it. Only an artist can give form to that abstract idea in himself and bring it to life as a beautiful piece of software. Lets just remember, no paper can tell you who is an artist and who isn't. His work sure can!! And the true artist is the one who creates his piece of work for the sheer joy of making it, not for the financial or other benefits.