Software engineering vs. computer science vs. ?

It’s interesting that from time to time I have a discussion with a co-worker about the difference between a software engineer and a computer scientist. And I always get out of this conversation convinced that I’m actually neither. But before I talk about myself, let’s go for a short definition both (note: this is not a dictionary definition, it’s mine – so feel free to disagree):

Software engineers:

  • Have system in mind when building code
  • Tend to optimize for to reduce deployment risk
  • Decompose the problem into customer-requested features
  • Enjoy the challenge of design for integration

Computer scientists:

  • Have algorithms in mind when building code
  • Tend to optimize to reduce number of cycles to solve the algorithmic problem
  • Decompose the problem into algorithms that need combining and solving
  • Enjoy the challenge of complex problems that get them closer to proving that P != NP

Most software developers are know cannot be 100% characterized into any of those definitions. It’s dependent on the project and their background. For example, if you don’t know much of how to design a highly scalable multi-host system to generate unique numbers, you end up focusing your solution on making your internal code be clean, with the least amount of repetitions and separation of the algorithms (for example, you might think that i++ is too slow so you create a specialized code that does that much more efficiently).

So, when trying to categorize myself, I realize that, while I do display behavior that can be characterized as one of the two classes that I’ve described, I think there is probably a class missing:

Engineering scientists:

  • Have system vision/theory in mind when writing code
  • Tend to optimize to make the code look more like their system, even when it means using an algorithm that is much more complex than needed for the current problem
  • Decompose the problem into pieces that look more or less like the final theoretical system
  • Enjoy the challenge of, after all the added complications, still being able to finish a product

That’s about how I would characterize myself. I make no claims that I’m a good coder. I do care about the code I write, but I think I care much more about this vision of what should the world be if a system was built to solve all past, present and future needs for all my customers that sometimes being stuck to writing code is painful.


0 Responses to “Software engineering vs. computer science vs. ?”

  1. Leave a Comment

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

RSS My FriendFeed RSS

  • An error has occurred; the feed is probably down. Try again later.

%d bloggers like this: