Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm a web programmer, but I haven't found many opportunities to take advantage of a formal education in computer science.

Maybe I'm not looking in the right places, but it seems to me like most of the web jobs I come across are CRUD, web forms, and data grids. For these jobs a formal CS background doesn't seem necessary, and you could do fine with O'Reilly cookbooks in jQuery, CSS 3, PHP, SQL, or ASP.NET MVC.

What kinds of web developer jobs exist that really let you apply your computer science background? Do I need to branch out into other areas of programming to take full advantage of my degree?

share|improve this question
add comment

7 Answers

up vote 12 down vote accepted

A career in Web Development may be tangled with this feeling of being a mediocre programmer, inferior job, less pay, etc.

BUT (and this is a BIG but) you have to keep in mind that this is just the way you need to start things on the Web. Once you get past the initial growing up period, the realm of Web will then look different and knowledge you swallowed as CS-grad will seem shallow.

There are so many "good" problems that a pompous CS grad might want to handle...

  • Web is the sexiest place of data -- nobody will disagree that -- lot of companies are dealing in Petabytes of data, and these petabytes are related in myriad of ways with each other. You can start to see how your most deeply learnt techniques/algorithms/design-patterns can look "infant" when it comes to handling this kind of scale. Read this book to get some taste of web data mining.

  • SOA, SaaS/PaaS/IaaS, and everybody's favorite -- Cloud Computing -- they all require rigorous applications of CS principles... and Web is the place where these methodologies/patterns are heavily used.

  • What about "distributed computing" -- must have this as a subject in one of your semesters. Web is the biggest and most exiting distributed system on the planet -- and no other will ever surpass it in that.

Now, granted, Web pros don't get good $$$ to begin with -- but that's just the nature of it -- there are so many people -- that know web things -- that the common chores just can't earn you big money.

BUT (again a VERY BIG BUT), there is the other side to look at. Web is the cheapest place to innovate -- if you got something good cooking in your mind, all you need is a computer and a decent Internet connection to materialize it.

So I think, web indeed manifests the idea that just getting a CS degree is (and should) NOT be a sure way to earn good bucks -- you've got to have the beautiful mind to come up with something creative (and useful), then the courage to take that something and transform it to something "real", then the perseverance to hold it out when time and people become trying, and most importantly the belief that what you're trying to do -- trying to bring to life -- is worth every bit of your time and effort and will not just succeed but will be a deeply snuggled emotion.

share|improve this answer
3  
I like this answer, although I don't necessarily agree with the using "pompous" to describe CS grads in general. Overconfident, maybe, but wanting to tackle CS problems shouldn't be reason to be called pompous. –  mathStudent Jul 18 '11 at 2:28
    
I think we're all programmers in a way. There only exist good programmers and awful programmers. –  Neil May 3 '12 at 14:55
add comment

Let's break this down into two things:

  1. The Bachelor of Computer Science degree.
  2. What you learnt in order to obtain the aforementioned degree.

The smarties, and yourself, might already see where I'm heading towards here.

Your Bachelor of Computer Science degree will permit you to be eligible for all software development positions. (Excluding positions requiring X numbers of years experience.) It probably was a requirement for the job you are currently doing.

During the study of a computer science degree, we learn a wide variety of concepts relating to computer science. This includes learning to program a loop, Big O notation, the innards of a computer (how memory allocation and access works), etc. Whatever you consider being the fundamentals of your computer science degree, it will never be enough to fulfill the first job you land. However, it will, and has, provided you to learn how to do the job.

Once you obtain a certain amount of knowledge in any domain, you will naturally undermine whatever you are doing (e.g. thinking it can all be learnt from a couple of books) because you've forgotten what it takes to get where you are.

Nearly all roles are looking for applications of the computer science degree. If you really want to be surrounded by the nitty degree study of computer science, I suggest quitting your job and doing a Masters or PhD in computer science.

share|improve this answer
    
+1 "Computer science is no more about computers than astronomy is about telescopes." Edsger Dijkstra –  Neil May 3 '12 at 14:54
add comment

I'm a web programmer and we use cs concepts everyday. Our main language is perl, and we use dual inheritance, object orientation, binary trees, overloading, etc... All jobs are different, we build web applications vs. pure web sites, so our system draws from more pure cs concepts in order to work efficiently.

share|improve this answer
1  
I guess things are different on the LAMP side - I've done most of my work in ASP.NET (web forms), and while we do data-centric work such as CRUD operations and web services & serialization, in most work I can merely re-use a lot of CS concepts in a manner which requires little understanding of them, i.e. I don't have to think about the sort algorithms or data structures used in nearly all the LINQ queries I work with. –  mathStudent Jul 17 '11 at 13:39
1  
The language or technology doesn't matter, what does matter is what your trying to accomplish and how the developers in your organization decide to accomplish "it". My company could use any language or combo of languages, and I would still need an understanding of the cs concepts I listed and many more in order to competently do my job. Before this job I used many languages at my previous job, we had a large tree structure for site rendering and the application was written in C# on the ASP.NET framework. –  hockfan86 Jul 18 '11 at 0:27
    
@T.Webster - Linq is great and all, but it is no replacement for a solid understanding of what is going on under the hood. You might be taking for granted the knowledge you already have that lets you use these types of "power tools" effectively. –  Morgan Herlocker May 3 '12 at 14:09
add comment

Sure a pure "Marketing" site might be able to get away with being a little light on heavy duty concepts, but there is no doubt most could benefit from some structure.

And think about the wide variety of "Software as a Service" type of projects out there. Many sites need to handle hundreds of thousands of users and be able to deliver aggregated data in the time it takes to load a single page and filter that data on the users' whim.

Many of the projects I have worked on have had a web interface, but are no less of a full fledged development project for it. One of the misconceptions I fight in my line of development is the assumption that because the interface is clean and elegant, the project was easy. On the contrary, there is nothing harder to design than simplicity and ease of use.

share|improve this answer
add comment

Short answer: Yes, other areas of programming have a better chance of using any sort of CS-related learning.

Very little of "web programming" is breaking new ground in any sense of the phrase. There are sites that have features that represent significant new work (Google's suggest-as-you-type, Netflix's user-centric rating system, Tin Eye's image search) but the actual web-facing portion of that tech is pretty mundane. There are interesting things being done in server clusters and other sorts of optimization, but this is not really "web programming" in the sense of your question.

And even much of the tech I mentioned is not something you're likely to pick up in a CS class. A lot of it is seat-of-the-pants algorithm design and tweaking. You'll run into things like LSA (Latent Semantic Analysis) and other sorts of pattern-finding mechanisms, but much of that can be readily studied from open source projects.

share|improve this answer
add comment

I do not really even see this as a web issue. The reality is that the vast majority of programmers write CRUD applications almost exclusively. This is because there is the most demand for CRUD applications. Almost every company benefits from the automation of basic information storage and retrieval, so that is what most of us will do.

I think that the trick to getting out of the Dilbert-style CRUD world is to find some industry that has some sort of requirement that is not possible to meet with current CRUD frameworks. Here are some examples:

  • Gaming requires more performance than most standard frameworks can provide, so you get to focus on a lot of the lower level stuff.
  • Embedded programming still has a lot of memory and processing constraints that require some theory to overcome.
  • My field, GIS data mining, requires rendering performance that keeps us pretty close to the metal, along with data quantities that crush a standard database (A 6 trillion record table is not outside the norm).

I would argue that the web could be an even better place to find a challenge, since the web has even more inherent constraints than your typical desktop environment, but really there exist challenging CS problems on any sort of platform.

share|improve this answer
add comment

To be a truly web developer you should understand computer networks (especially WAN) and distributed systems; these are usually courses that are taken in the latest years by an undergraduate student thus difficult. Also you should know OOP (with design and programming techniques) and databases.

There is no job in which you apply everything you learn in a university; not even a half of what you learn.

share|improve this answer
    
You could be a decent enough web developer (maybe not a great one, but you could achieve a lot of good things, PHP and its herd prove this everyday, to the surprise and dismay of many) without knowing anything about WANs and distributed systems, and, unfortunately, without even knowing anything about OOP. I agree it's better if you do, though... :) –  haylem Jul 4 '12 at 10:40
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.