I guess it is official now: IT programmers are the blue collar workers of the digital age. Nothing against hard working men and women regardless of the color of the[ir] collar, but software is a mind product and this disparages the true measure and worth of [what] we do as software engineers.
For a while now I've been thinking that there should be a divide between software engineers, programmers, and computer scientists.
Software engineers should be considered the people who go out and design a system, who are the primary create force and technical experts. Programmers should be people who implement.
Computer Scientists should be (mainly) scientists.
I see a lot of people who I have gone through school with enjoy the first 2 years where it's mostly practical work. Then they hit the last 2 years where it comes down to theory and they struggle with it.
A 2 year vocational school that focuses on learning a couple of languages, data structures, and gives a few options for specializing a bit sounds like a good idea to me. Then you can software engineering which is focused entirely on the actually engineering of a system.
In a seperate but equal sort of setup you can have more theoretical CS.
I'm sure that this divide exists somewhere if people still talk abou tit, but genuinely confused by it. "Programmer" and "Software Engineer" are different job categories for the purposes of filing taxes (in the US), and I've read articles projecting job prospects that give a sunny outlook to "software engineers" and poor prospects to "computer programmers." The idea is always that "software engineers" design a system and provide technical expertise, and "programmers" implement.
Thing is, I've called myself a "programmer" for well over a decade now, and I just don't see it. Where are these programmers who just "implement"? I guess if someone had wireframes and made all the technology decisions and handed it over to a programmer, maybe that would count?
A company I worked for tried this, they made me an "Architect" and gave me an offshore team, and it was a disaster. It could be that I wasn't good at providing precise instructions, but to me, precise instructions are hard to distinguish from code. Well, maybe that's why "programmers" have poor job prospects - all programming work is now done by "software engineers"...
Does google, or facebook use "programmers" who are distinct from "software engineers?" Any startups out there that do this?
Does not exist. It seems to be primarily about trying to define programming as an upscale profession like engineering - "programmers" might be replaceable cogs, but "software engineers" are a little harder to shove around.
Even worse, you have "computer engineering", which is a real engineering discipline (at least when focussed on hardware) and then you have the disaster that is the CS/programming community's attempts to ape standard engineering practices when the blueprint and finished product are the exact same thing.
The divide exists as a matter of practice; I do agree with you. But I think it a disservice to steer young people who gravitate to the field [from casting a wide net as far education goes]. My formal education background is BSEE (through which I learned to reason about systems) and MArch (through which I learned to think about total design of artifacts subject to orthogonal concerns). I have been happily coding since 16 years of age (20+ years professionally), but my one regret (as far as software goes) remains not hitting the CS fundamentals earlier, and I have been addressing that for the past few years. (I'll admit that back in engineering school we used to make fun of CSs ("is computer science? /snicker") Turns out the joke was on me!)
If you haven't seen this, I recommend this lecture by Dr. Alan Kay, that does address this issue (besides being a phenomenal talk):
(1) How does viewing something as a craft rather than as a Mind Product undermine its worth? Your statement tells much more about your value system than it does about reality.
(2) Read. The school is not structured like a vocational school.
"Unlike traditional vocational schools, this new school will have a rigorous academic component and will prepare students for college"
You're going to the school because you want to learn to code, but it's not just coding.