views:

693

answers:

11

I'm about to pick one of these programmes. I've done prerequirements for both and really enjoyed them.

By software engineering I mean designing, coding, testing, managing and all related stuff. Getting more advanced in what most undergraduates do.

Databases narrow to relational databases, data mining, data warehousing, queries optimization, indexes, maybe tiny bit of web-applications (to me, it looks like more complex stuff - am I wrong here?).

What would be common differences between those paths?

  • complexity/fun - are they equally ambitious? (nobody wants to do dull and repetetive stuff after all)
  • perspectives - does picking databases mean I will end up with working for a bank without much perspectives, while software will start with regular junior developer job climbing up career ladder, offering flexibility in jobs switching?
  • job - do the offer equal job opportunities? Or is one of them definite leader?
  • are they similar in some aspects (e.g. from what I've learnt so far, designing is big concern in both)?
  • will picking one of them successfully lock the door to do the other one (not the course, but career), perhaps later?

I find questions above hard to find answer for, especially for undergraduate - that's why I decided to post it here, where people with experience can clear things out how real-world looks like.

Edit: I already got background in both. Sorry for missleading, it's more like programme (thanks Kibbee) - whole bunch of courses going much deeper/advanced in the field.

+1  A: 

SQL is an essential language skill. If you don't have it, you absolutely need it. A databases class will provide it.

Design, Code, Test are "soft"-er skills. If you don't have them, you can make it sound like you have them because you took any programming course.

Corporate HR folks use simplistic skill checklists. They tend to match acronyms without much thinking.

S.Lott
+1  A: 

Well, what kind of courses are these? Is this college? You really can't have one without the other. You could go straight down a DBA (Database Administrator) path,in which case the software engineering may not be as necessary. However, if you are going into a career of software development, you will need to be knowledge in both database theory, design, and implementation as well as have a strong background in software engineering.

To me, it seems database work is prerequisite to software engineering as to do any sort of interesting project, you need to know your database theory. Even without actually using a typical database, you need to know how to model entities, which is what you learn in database theory.

BobbyShaftoe
+5  A: 

Personally, I would recommend taking the software engineering course, and then just learning about databases on the side. I personally think it's much easier to learn about databases by doing. Install a database on your computer, and learn on your own how to make it work. Most courses in databases won't give you enough play time to really learn the ins and outs of using a database. However, software engineering is a much softer skill, and is a much better subjec that is taught in a class.

EDIT

Sorry, misread that post. To me, course means class, the whole bunch of courses is a programme. However my opinion is still the same. Take software engineering. It will give you a much broader understanding of the whole subject area, and will still give you the ability to work with databases in your future.

Kibbee
+1  A: 

I doubt very much whether the courses you take as an undergrad will lock you into one career path or another. Both database-related and software engineering skills are highly desired and useful in many, many different applications. Take courses in both (even if you have to specialize in one) and see what you like better. Your interests (and what jobs are available) are probably more important factors in which career path you eventually end up.

tvanfosson
+1  A: 

I didn't do computer science at university. I work in the database field - one of the people producing a DBMS for other people to build into applications. I enjoy that; I've been doing it for over twenty years. I've learned both DBMS and software engineering, both by reading and doing.

It won't matter which course you choose - neither will block progress in the other field (though you'll have to work a bit harder).

Database work involves a lot of the skills that software engineering involves. A fair amount of software engineering involves working with databases. You will need to know both - you will need to keep learning about both. (If you assume you've finished studying when you leave university, you will end up in a dead-end job!) Databases does not automatically mean banking. Acutally, in 20-plus years, I've only worked with a couple of banks, out of hundreds of clients. And those clients do general software work as well as database work.

Jonathan Leffler
+1  A: 

Storing and retrieving data from database efficiently is a skill that will aid you in any computer related field. Data structure is the foundation of any application and a bad foundation can lead to very painful design process.

The idea that database fundamentals can simply be "picked up" is naive. While SQL may appear simple on the surface; designing a solid data structure take experience, insight and a good understanding of database principles.

While it's true that you may end up working in an area that doesn't make decisions about database design or optimization, knowledge of this information will serve you well.

As for the course selection: it all depends on the professors. Both courses could be the worst or best you've ever had based on the quality of the instruction. Instead of asking strangers, you could ask former students and interview the professors to see which will be the best for you.

TrickyNixon
A: 

I didn't learn a single thing about Databases in college, and I wound up being sort of a database weenie in practice. I doubt that most colleges teach real hardcore database concepts that you need in the real world. The only way to learn is by doing, and you will get plenty an opportunity to do this on the job, as pretty much all applications that you will get paid for have a data element to them. That being said, it’s surprising how many devs out there know nothing about databases.

By the question that you asked, I would say that you are miles ahead of most developers who have had several years experience. If you know what a GROUP BY is and how to use it, then you are better then most engineers out there. I think that this is a basic skill, but for some reason I still get asked it on interviews because a lot of guys don't know it.

I would make sure that you learn as much about design/architectural patterns as you can. You can go years without having to using them, because most jobs just want code monkeys, but once you want to make it into the "big time", which I haven't yet, you better know them and know them well.

I would also learn as much about source control and branching strategies as you can. I’d take a class in compiler design if given the chance, which I sadly wasn’t in school.

College is a time to make sure that you get your foundation down as much as possible. Your specialization and narrower skills will come once you get out into he marketplace and realize what you want to do. That’s changed several times in my 7 year career.

Charles Graham
A: 

The common difference is the area of focus: Software engineering is much more general and can include building relation databases, writing queries, etc.

Both can be equally ambitious and have a variety of career paths. Software engineers can be developers, analysts, testers, project managers, to name a few. Databases would lead to database administrator(DBA) or database developer, however this can specialize on the type of database as data warehouses and data mining can require some specialized knowledge and skill that isn't likely to be taught in software engineering courses.

The databases does change where you can work, e.g. companies tend to have to be of a certain size in order to have database developers if you want that route while the other would be becoming a DBA as I see it. An exception would be a company where their database is the core of their business and so their IT department requires DB expertise.

I think both offer equal opportunities as the software engineer is more general there may be more positions and a greater variety, the databases is a specialty that can be highly valued if you get to be very good at managing databases.

They are similar in terms of using data and relational databases I think. Software engineering wouldn't get into data mining too much, though it may involve some complex queries and troubleshooting issues with a database.

I think I'd put it this way: The software Engineer could be followed up by graduate work involving databases and it seems like one part gets more focused while to go the other way may be rather tricky since it is a side step that may not make total sense to some people, e.g. some employers may wonder why you went this route.

JB King
+1  A: 

What drives you? You can't really make an informed decision unless you understand yourself.

Some people get a kick out of digging through data and writing pretty management reports that provide business overviews. I've been there, if I ever end up back there, I'll slit both my wrists from my hand to my elbow. In the real world, you mostly inherit databases designed by other people - often poorly that hold inaccurate data from which you will have to gleen useful insight into the business to provide these reports. Please, stab me in the eye now.

On the other hand, other developers get a kick out of analysing workflow, making the inefficient efficient, automating processes and making computers do what they were designed for - doing all our work for us with minimal (if any) effort. That's much more my style. Of course, once again, in the real world, you mostly end up designing add-ons for poorly designed inherited systems and digging masses of spaghetti code written by a wannabe all the time wondering where this guy is so that you can subject him to the torture to which he is currently subjecting you since his departure.

So it's really down to the type of personality you have. What do you get a kick out of most? Either route could be as simple or as complex as you want it to be and you can go as far as you want to take it. It's really down to what drives you as a person and knowing yourself and your traits that will help you make this decision. Are you an analyst who likes crunching numbers and gets a kick out of statistics and data (take the database route) or are you an artist that likes to express themselves more creatively designing software that will make users lives simpler (take the software design route).

BenAlabaster
I have to agree mostly. (I find database design to be an artistic endeavor. But them I'm that rare beast, someone who is equally strongly analytical and artistic.) If you aren't fascinated by data and if you don't see the meaning represented by the data, don't go the database route.
HLGEM
+2  A: 

Why do you have to chose one or the other? Can't you do both? If you want to be a good developer, you need to have a strong grasp of both coding and databases.

There are good job opportunities in both directions, you really can't make a bad choice from that perspective.

My suggestion to you would be to be flexible. Learn as much theory as you can. SQL syntax becomes trivial, languages like C#/Java become second nature, but they will come and go. The underlying principals of what we do does not change too much.

Learn how to databases work. Learn how to design databases. Learn how to work effectively and efficiently with databases.

Learn how langauges work. Learn how to design software. Master the current language of choice while you are practicing your knowledge.

When you start working, be flexible and adapt to whatever needs to be done.

mson
+1  A: 

Microsoft has two tracks for SQL Server: DBA and Database Developer.

A DBA may have more emphasis in the areas of: installations & updates, security setup/maintenance, and managing backups. In other words, the DBA would get called if the server crashed. Similar to what a network admin does for the file servers.

This is why I would not want to be a DBA, but I enjoy working on databases.

Jeff O