Ask Slashdot: Modern Web Development Applied Science Associates Degree?
First time accepted submitter campingman777 writes "I am being asked by students to develop an associates of applied science in modern web development at my community college. I proposed the curriculum to some other web forums and they were absolutely against it. Their argument was that students would not learn enough higher math, algorithms, and data structures to be viable employees when their industry changes every five years. As part of our mission is to turn out employees immediately ready for the work force, is teaching knowledge-based careers as a vocation appropriate?"
The fundamentals never change. With a solid base, there is nothing a programmer can't do.
An AA program focused on what will get them hired today is exactly what will not get them hired tomorrow.
I work in a company writing online billing software. We use Perl and Ruby. We don't need people who know quicksort vs. bubble sort - we need people who understand browsers, and AJAX calls, and JSON, and business logic. I never touch anything more complicated in math than basic algebra.
Javascript, CSS, and something other than PHP are what you need to know, with a leavening of SQL and XML. Screw all that CompSci crap - we don't use it in 99.9% of our code.
Why can't I mod "-1 Idiot"?
SEMESTER 1
English I
Intro to computers (or waived) (CIS 100)
Programming tools (Github, IDEs, StackExchange, JIRA)
Intro to Programming Logic (CIS 104)
SEMESTER 2
Algebra I
English II (tech writing)
Project Management (software)
Web Development I (HTML & CSS)
SEMSTER 3
Government
Interpersonal Communication
Databases I (re-visit & modify current offering)
Web Development II (Javascript & jQuery)
SEMESTER 4
Cultural Anthropology
Introduction to Unix (CIS 140)
Web Development III (node.js, MVC frameworks, e-commerce)
Capstone Project
This assumes 'web development' refers to web-based applications, not just informational webpages.
This is likely to be an unpopular opinion to many, but I don't see the huge barrier here.
I've been working as a software developer for nearly 20 years now, going from games programming to business apps to web development and machine learning. In that whole time, I can count only a small handful of times when I've ever had to exhibit mathematical skills more complex than trivial algebra. Oh sure, in college, they made me write my own compilers, I had to write my own vector math routines for my ray tracer, and so on, and I consider these valuable learning experiences. However, in the real world, where I'm employed and make money, I use software libraries for those sorts of things.
When it comes to data structures, the languages of employers today, java and c#, provide me with the majority of structures and optimized-enough algorithms to manipulate them. I don't have to do a big-O analysis and determine if my data patterns will be better served by a skip-list than a quicksort, because we just throw memory and cpu at that anyway!
The point is, if you spend 1-2 years learning to write software - not computer science theory - you'll be ready to enter the workforce. Sure, you're not going to be someone creating those frameworks, you're not going to be an architect, but you'll be able to use them. A few years of real world problems and google at your finger tips, and it's likely you'll have learned enough to start tackling those harder problems.
Here's a list of what I'd prioritize before computer science theory, in regards to employment:
- Proficient in SQL and at least one database type
- Familiar with IDEs, source control, bug/task trackers, automated builds and testing, debugging tools and techniques.
- Ability to work in a group software project.
- Exposure and participation in a full blow software development life cycle (SDLC) from reading, writing, evaluating requirements, coding, debugging, QA, unit testing, the oft-overlooked documentation, etc. Include at least something waterfall and something agile-ish.
- Expert with HTML & CSS, javascript, and awareness of javascript libraries and frameworks.
I don't think I need to explain the value of any of these, and these practical concerns trump high level concepts like discrete mathematics or heuristic design for the entry-level developer.
Javascript and HTML haven't changed all that much. CSS? It's getting to the point where change is slowing down. Web architectures have been stable for years.
Nobody in real life uses higher math in front-end web development. They might use multiplication and division to do layouts. It's debatable whether anyone actually uses algorithms. Data structures would be handy, but it's also arguable whether web developers actually understand them or not - especially if you talk to any DBA about how website A uses the RDBMS.
Web frameworks would be handy. There are general things about frameworks that don't change.
What would be good would be some discussion around the process of building a website, from customer requirements to deployment. How to choose a technology, payment processor, server technology, etc.
Such a degree, if it were to exist, should focus NOT on the basics of CS, but on good design.
1) Do cover human factor engineering principles and techniques. Include lab work to do usability testing.
2) Do cover the basics of good design (perhaps a joint Art department effort).
3) Do cover the foundations of programming, but using several web focused languages. C/C++/Algol and friends are wonderful, but you have limited hours.
4) Do provide an introduction to computer security. Chances are it is folks in the backend that need to focus on it, but security holes can occur anywhere.
Good luck.
i agree that anything that's relevant now will not be 2 years from now
-sarcasm on-
Yeah, remember back in the 90's when html, javascript, java, etc. were important for web developers? All long forgotten now.
Not to mention all the OOP languages that were all gone within 2 years of being introduced--like C, C++, etc.
-sarcasm off-
Do you people ever actually read what you type?
SJW's don't eliminate discrimination. They just expropriate it for themselves.
For 99% of web work, you can get by with the concept of relational databases and three SQL commands: Select, Insert, and Update.
PLEASE don't teach them delete.
SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.