The Difference Between a Developer and an Engineer

I had an interview today that left me asking myself, what constitutes basic CS mathematics? Certainly discrete mathematics such as combinatorics, graph theory, first order logic, linear algebra and perhaps even some abstract algebra (groups, fields, rings) and probably a couple of others. However, how deep of an understanding does one need to posses in any of these categories to call themselves a "computer scientist"? The master theorem? Do you need an understanding of advanced graph and geometric algorithms such as minimum spanning trees and convex hulls? How about encryption algorithms and number theory? Probably. As far as I can tell, computer science is a branch of mathematics. Computer programming is something else entirely, at least potentially. I've met many computer programmers during my interviews over the past few weeks, but very few scientists or hackers (and all 3 are different). Although this would seem obvious to most, being able to program a computer is an entirely different skill than understanding the why, how, how fast and O(my). It seems that recently there has been a move to distinguish between "Software Developers" and "Software Engineers", the latter having the distinction that most prefer. What is the difference between a developer and an engineer? Probably nothing, but if you ask some it's the difference between an architect and a construction worker. Engineers design a framework and programmers put up the walls. Both of them helped build the St. Francis Dam though so really who cares? If you build software, even if it's not for a life support system, you have a responsibility to your users. Engineer or Programmer, no one wants to be Mulholland.

No comments: