Computer science vs software engineering

There is much debate about splitting computer science and software engineering. Computer science being the theoretical stuff and software engineering the practical, but is that feasible?

bridge constructionWe probably agree that software development should be engineering. Building a software application should be like building a bridge. The problem is that it is not.

Joel Spolsky talks about three phases in software development:

  1. Design needs an artist
  2. Building needs an engineer
  3. Debugging needs a scientist

When the building part is already engineering, we just need to figure out, whether design and debugging can be made engineering or (mostly) optional. If you use a framework like Rails, you don’t need to design (apart from CSS and URLs). Type checking and verification could help to make debugging disappear.

A software developer describes the requirements for a job as a software developer:

  1. communication skills “The best developers are often the ones who can explain problems and solutions the most clearly to others”
  2. teams “Very few developers really work alone”
  3. analytical skills, particularly around ambiguous problems “It’s important that developers understand the intention of what they’re being asked to do as well as the implications of a solution they’re thinking of and can weight and communicate these”
  4. development processes “Not a theoretical one—they need to work on teams that use formal, top-down development process, agile development, teams with other developers, teams with test processes, and so on”
  5. an ability to learn on the fly
  6. competence in several programming languages “C++ is typically a must; C# or some other managed-code language is also mandatory, competence in one dynamic language, such as JavaScript, should also be present and the graduate should have the ability to know which to use when.”

No need for insight into algorithms or math. This may help, but isn’t mandatory.

There is still a big part, where computer science and software engineering intersect. Somebody has to build the standard and extension libraries. Somebody has to understand the math for multimedia and implement it.

For the common (web or desktop) application development, you don’t need to study computer science. This leads me to the conclusion that a software engineering education could be separated from general computer science. Do you agree?

Published in: on September 10, 2007 at 9:09 am  Comments (5)  

Lost my way…

I don’t have much time currently to pursue the activity on this blog. This is just a quick note that i’m not alone in my confusion. A usenet post from another student:

As a student major in computer science, I finally found myself lost in this field. Last night, I stood up all night long to think what i have learnt in my four-year’s college life and what i need to learn in my future career. The result make me confused.When i was still in school, students in higher grade loved to talk about the “real hackers”, who seems had the magic power, and nearly knew everything essential in their fields. A real hacker can write code in secret ways that lead to high efficiency. However, It seems i can never be this kind of guys.

I once participated in the ACM competation. The result is i found my stupidity at last. I can not implement my algorithms clearly in a short time. And countless little errors in all implementations of mine annoy me.

Also, I took part in some open source projects. There still are problems. I was newbie no only in the discussions of IRC-channel but also in the forum. This is fine, since I thought i should be newbie at first. But this newbie life is too long because i don’t know what should i learn to improve myself.

Almost, from every perspective, I was a loser in study. Althought I had read some additional books, spent lots of time in thinking, I still lost my way in such a big world…

The best comment (though heavily buddhistim-oriented) came from Mark Tarver giving several links.

There’s no real magic power you know. It’s practice really thats all.

Apart of the problem is that CS is such a mess as taught in many depts. Some people (me included) think that CS does not exist as such.

Don’t think that your confusion is your confusion. Plenty of people out there are confused by CS – including people who don’t know they’re confused and think they know it.

You can’t possibly know it all; so all you can do is pick a piece and learn to understand it.

This business of feeling a failure comes up several times. Have a look at what I said about failure in a thread to the Buddhist group, also about succeeding at school and failing at uni and finally about Wu Wei and the characteristic of being a sage -of being in the world but not dominated or swept away by it. The gist of it for you is contained in the conclusion of the first link.

One extra remark; forget this goals thing though. You’ll find your deepest happiness when you follow the path of your heart for the sake of the path itself. When you do that you forget yourself and failure is defined away.

At that point your deepest passion and the Buddhist goal of self-abnegation fuse together. Remember this and you will not fail.

In other words if you feel passionate about something you just get involved in it and forget yourself. On the other hand if you’re doing it because you want to be a guitar hero, chances are you’ll get bored, disillusioned with your abilities and give it up and feel a failure.

You’re young, give yourself time and experiment with stuff. You’re on a path.

Published in: on July 9, 2007 at 10:57 am  Comments (2)  

Your turn

I’ll be away for some days, so the only chance something is happening here is you.

What’s your opinion on “the most important problems in computer science?

Or do you have a suggestion, whom i should mail?

Published in: on May 17, 2007 at 7:07 am  Leave a Comment  

Hello world!

I’m starting this blog to document my journey into the vast fields of computer science. My current idea is to send a nice email to some people i don’t know and ask them about computer science. The email will look like this:

Richard Hamming in his talk “You and your research” asked three good questions: What are the most important problems in your field? What are you working on? Why aren’t they the same? In this spirit i’d like to hear your opinion:

What are the most important problems in computer science?

Let’s see what the reactions are.

Published in: on May 13, 2007 at 3:06 pm  Comments (9)