Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I'll try.

The application developer is most interested in designing user interfaces. They tend to have lots of ideas for new apps and new features. They want to impress people with new stuff.

The software engineer wants to fully understand domains and be able to solve just about any given technical problem. They want to be trusted by people to perform in the most challenging of situations.

After better understanding the distinction, I have more respect for people who call themselves Software Engineers, and can back it up -- people who can fix a messy database, perform security audits, bring up a system that went down, or create a complex system. I also wish I had a really good software engineer where I work so I could focus on application development, and not on improving database performance, which I can do, but isn't my passion.



Hmm... not quite what I was going for, but close. There's been the most debate on this particular point in the various places my blog entry has ended up being posted, so I'll try to clarify it here too.

In the simplest terms: my experience has been that when you specialize in app dev, you deal primarily with databases, service architecture, UI toolkits, web services, etc. You generally rely on an app server environment of some kind, work with/rely on a lot of tools from vendors and the open source community, etc. This is where I have specialized in my career, and what my software team does.

There's another team where I work that builds tools and processes that mainly run on a large farm of servers. They are all high-performance, high-throughput data delivery and media transcoding programs. These guys are absolute C++ wizards, but their software never sees the light of day and they almost never use anything off-the-shelf, be it databases (don't scale high enough) or third-party libraries (too much mistrust of potential performance issues). There are a few C++ standard libs that they use, but not much else. These guys are specialized in making really small, light programs from scratch that will run headlessly on a server.

I've noticed a radical difference in approach between our two teams. There are generic areas of crossover, such as our mutual understanding of good OO design and suchlike, but that's about it. The other team would be as lost building a client-facing app with a UI in front of it and a DB behind it as I would be writing a high-performance server-side app from scratch without the flurry of off-the-shelf libraries I've become so accustomed to.

In retrospect, I think "software engineer" was a misleading and incorrect title for this skill set that the other team I work with has, but I'm still not sure what would be more appropriate - perhaps "systems programmer"? Anyway, hope this clears up my perspective.

Obviously, there will be 1000 shades between specializations, but generally I would say somebody getting in to the field would want to head toward one camp or the other as they get started.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: