Are programmers Engineers? About every few months this is usually something I bring up because I’m part of an IT group for the College of Engineering, and because I manage a group of IT staff/system administrators. It’s probably largely out of guilt — my own background is entirely IT/System Administration and my degree is Computer Science — and most of the staff has an IT background (with ECE or Math degrees) — and I sometimes feel like we understand far more about the academic needs of the CSC and/or ECE departments. I usually end up saying that I feel like I really don’t understand Engineering, because I’m not sure I’m an Engineer.
I’m thinking about it again, because Brad Abrams wrote about Software Development and Engineering Design in his weblog last night, based of a conversation with his dad (Dr. Frank Abrams, an NCSU BAE Faculty Member). Brad links to a great handout that Dr. Abrams has put together about the Engineering Design process.
(Interestingly enough, the courses links above will be dead in a few months, an unfortunate by-product from perhaps our own campus design choices for course management solutions).
my hope is that software is just in a maturing state. These principles apply equally well to software and will play out more as the field develops more deeply but what I can’t tell is are we on track? Are engineering fields as young as software in the same state of flux? What is your take?
And this is a place that I wish I had more exposure to professional software development practices. I know a bit of the theory and I know the terminology — but I don’t know the real world of what’s happening there. I do think that the current security situation with operating systems and service software is probably the Software discipline’s equivalent to the famous Engineering design failures (Tacoma-Narrows is always a fun example)
I’m not sure Computer Science was teaching this 9 years ago when I went through it. I think they very much did teach problem solving methods, but not so much in the context of an Engineering process (I think computer science — in general, not specifically at NCSU — is still figuring out where it fits between Engineering and the Mathematical sciences).
I think they are doing quite a bit better for today’s students — as a syllabus for our Software Engineering course shows (however, I think I should point Dr. Iyer to a color design document — that black on red interweaved with black on yellow on blue is pretty hard to read).
What I can say is that the IT part of software is definitely not anywhere near an Engineering process. And the way we have built on IT as a service tends to have our customers, even the Engineers that use our service (and the product of the Software Developers) definitely do not approach the use of computing technology using any kind of Engineering methodology (but I’ve complained before about people turning their brains off when they use computers, and it’s probably our fault)
Far too often, we are reacting to a problem, and implementing a fix. We aren’t defining the problem, we aren’t effectively generating or analyzing anything that even resembles a solution — and forget about testing or documentation
There is tremendous pressure to just fix problems in IT. Mostly because our customers don’t know enough about the computers to frame their own problems, and we barely know enough to help them through framing their problem.
I think this customer angle is key. And key to helping Software along a more mature path as an Engineering discipline.
What will change that is education. I wrote about the educational component of our “Next Generation Eos” project before:
Do you know that we brought 300 students in this semester and did not provide them an NC State-customized “image” — which is what most IT people will tell you has to be done to be able to “support” something. We have a few Macs, and a number of Windows machines, installed as they were from the vendor…
…We had no observable increase in the support required from the IT helpdesk. Initial assessment is that the students also got a lot out of E115 and were excited about it. (it also has some of the best TA’s, and like anything, good people make the projects). Our assessment director is conducting the assessment, and the results aren’t yet completed — but the initial feedback is very positive.
This is revolutionary
Computing is a new fundamental for Engineering (I spoke about that at our Faculty Seminar last year) . I think by doing more to remove that “magic” that is computing. By getting our students, especially our Engineering students to approach computing with an Engineering mindset, we’ll get them asking more focused questions, and making more intelligent demands on the Software Designers (and not to mention the IT staff) to create better products.
That’s my hope anyway.
But until then, the IT staff would be well served in doing more to adopt the ideals and Design Process that Dr. Abrams highlighted for his Engineering Design students.