New York City gets a Software Engineering High School
joelonsoftware.com
joelonsoftware.com
I bet many HN'ers are remembering what they were like at that age. Sure, plenty of geeks started programming in kindergarden or what have you- but I know I didn't pick engineering until I was twenty, and when I was fourteen I still had no idea what I wanted to do. (Besides knowing that I liked woodshop) If I had been forced to decide back then, I probably wouldn't have discovered engineering before it was too late.
Specialized high schools are moderately common in the United States, some organized as general public schools, and some organized as "charter" schools (a form of regulation in the United States with public funding, but less public funding than most schools, and some variation in regulations that apply to general public schools). In my part of the United States, Minnesota, there is public school open enrollment (any student can enroll in any public school district, anywhere in the state) and quite a few charter schools (Minnesota was the first state to have any charter schools). My public school district receives students from forty-one public school districts, the farthest one more than 100 miles away. (I've heard that the child stays with relatives during the school week and goes back to his parents' home on weekends. That is perfectly legal here in Minnesota.) There is another charter school, far across the metropolitan area from where I live, that purports to be a Math and Science Academy.
But as I think any European or east Asian reader of the school's website will soon recognize, the Math and Science Academy charter school in Minnesota does not have a credible academic program in mathematics or science up to international standards. (One of my good friends had a child in that school, and she is bitterly disappointed by how much the school killed her daughter's interest in mathematics and science with its underchallenging curriculum.) A regular public school in Minnesota is permitted to have an internal program that is academically selective, for example a "school within a school" for gifted students, as my local school district does
http://www.minnetonka.k12.mn.us/ACADEMICS/NAVIGATORPROGRAM/P...
and as other Minnesota public school districts had first.
http://www.invergrove.k12.mn.us/atheneum.html
http://www.springlakeparkschools.org/schools/la/la_lighthous...
http://department.services.bloomington.k12.mn.us/modules/cms...
By contrast, charter schools in Minnesota cannot be academically selective in any way, but must accept all applicants (which is also the plan for the New York City school in the submitted article), allocating spaces by lottery if the number of applicants exceeds the number of spaces. That is one of several ways in which regulations on charter schools are more restrictive than the regulations on regular public school districts.
Minnesota has a specialized program for mathematics only
http://www.mathcep.umn.edu/umtymp/
that draws in students from all over the Twin Cities metropolitan area for classes at the University of Minnesota. I like that program a lot. My oldest son is an alumnus, and I will have two other children take that program's qualifying test in a few months, for two different entry points into that program.
In general, the cultural attitude in the United States is highly hostile to advanced programs for bright learners, as you can see in some of the comments here. Many programs for "gifted" students may not even have added value for academic growth,
http://educationnext.org/poor-results-for-high-achievers/
academic achievement even in wealthy school districts is often below the standards achieved in poorer countries,
and the United States especially lags behind in teaching mathematics to its most advanced students.
http://www.hks.harvard.edu/pepg/PDF/Papers/PEPG10-19_Hanushe...
So I'm glad to see the New York City experiment in offering a software engineering high school, and will be curious to see if that example is imitated in other parts of the United States.
A side benefit is that because I was taking math at the University of Minnesota outside school hours, I had a free period at school when I would normally take math. (Along with two friends.) We had free reign over our Macintosh computer lab for nearly an hour a day for two years and it was AWESOME. I programmed some pretty wicked stuff in Hypercard, messed around with ripping audio from TV shows onto the computer, fked around on the school's network, and loved it all. (I'm dating myself a bit; this was around 1990-1992 or so.)
Programs like this are amazingly awesome, and they should spread far more than they do.
When I was in 8th grade at the best private day school I could find that would bus me (just under an hour away, but I lived in the sticks and accepted that), I was one of the few kids in "advanced math and science." This was 1 year accelerated, nothing special: we just went to class with the 9th graders. I was taught "Math A" out of this bad boy: http://www.amazon.com/Lets-Review-Lawrence-S-Leff/dp/0764122...
In my first year of the 1.5-year-long Math A, I was never once introduced to the quadratic formula. We were taught to factor quadratic equations by guessing the roots. Not kidding. The Math A test guaranteed integer roots, so... we learned to factor quadratic equations by guessing roots. I actually wrote a TI-83+ program to solve quadratic equations by guessing the roots (somewhat intelligently).
I still look back on that in astonishment - that's all you had to know for algebra 1! Integer roots and guessing! I'm sure schools in new york state - and schools in my region - taught the quadratic formula... but by the book, they didn't have to.
Thankfully, I was fortunate enough to be able to go to high school in connecticut where I could get a decent education. So my story ended up just dandy. Not sure about the rest of NYS.
Like many have said, it can be possible to have a "normal" school with all the usual subjects in addition to a prominent computer science program.
Take my experience, for example:
Freshman year I learned things like recursion, Scheme, dynamic programming, and cellular automata. Sophomore year, I learned basic data structures and algorithms and wrote a couple of games. Junior year I learned systems programming in C, signals, processes, network communication and wrote a filesharing system. The next semester I wrote a computer graphics engine from scratch --- all the way from line drawing to complex lighting and implementing an animation and scene graph language. I also took the independent research class where I worked on information retrieval research.
I am not bragging. This is typical (in fact, many of the projects, or variations thereof, are things that everybody in those classes does). And yet, I still took tons of math, physics, chemistry, european history, american history, classical literature, modern literature, tech shop, architecture, and many other things. This was also typical! Other kids took the same common stuff but instead of so much computer science and math they took special electives in philosophy, literature, history, economics, and so on.
You really can fit all that stuff in. Stuyvesant is a great example that you can have a serious, multi-year computer science program and still have more than enough focus on other subjects.
Just because the school will focus on software engineering doesn't mean it will lack in other areas. I'm fairly certain I would have done better in math, for example, if the math courses were programming-oriented instead of pencil-and-paper oriented.
It's pretty specifically stated that this is not a vocational school.
A lot of classes can benefit from an injection of programming - a few off the top of my head include statistics, maths, physics...
I did however excel at the programming course we had. I loved going to the computer lab and trying stuff out. This school would have been awesome if it was around when I was in school. It would have been a perfect fit.
"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.
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.
[edit]
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.
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?
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.
If you haven't seen this, I recommend this lecture by Dr. Alan Kay, that does address this issue (besides being a phenomenal talk):
(2) Read. The school is not structured like a vocational school.
One day his wife was asked what he did and when she said "oh hes an engineer" they reply was "that's nice dear what sort of cars does he work on"
The system seems to be working pretty well. The vocational path has been gaining popularity all the time (at the moment I think almost 50% of students choose it). The academic path is still considered more prestigious though.
The main difference seems to be that here we make the decision when we're 16-17 years old.
[1]: The difference is that a University teaches "computer science" while a University of Applied Sciences teaches "software engineering". You can also go to a University from a vocational school, or to a UoAS from an upper high school, but usually people don't do that.
There was an entrance exam and requirements, when I attended there were four schools: Marine Academy of Science and Technology (marine-biology with a heavy NJROTC component), High Technology High School (engineering), Academy of Allied Health and Science (where I attended and focused on medical careers) and the just opened in 2000 Communications High School (video, media, design, journalism). Since graduating in 2004 they've opened a fifth, Biotechnology High School.
Though I do not have a career in medicine, I don't know anyone who attended these schools who would have traded it for anything. The academic program was one of the most rigorous in the state, and I felt truly prepared for college. The schools are consistently ranked near the very top of the US News rankings nationwide and publicly financed.
The value is in the exposure, I still have a great interest in health and use that experience frequently, I'm even an EMT which I did as a senior elective there. In fact, there's even a YC founder who went to one of our schools.
TL;DR: It's not so much specialization as it is a rigorous 4 year college prep program with exposure to a field you have interest in.
In fact a lot of what industy needs is more Computer Enginering and lees hyper secpecialised CS majors - you dont see Audi or Mercedes saying we need engineers lets train a load of physicists.
Also, your Audi/Mercedes analogy is flawed. Physicists and engineers are very different, and if they needed more engineers, they would sponsor engineering schools. Right now we need more software developers, so training kids in Computer Science makes complete sense. Some schools (including my alma mater) do provide a separate Software Engineering degree, but they generally overlap so much with CS as to be virtually indistinguishable. It's also somewhat laughable to call Software Engineering "engineering", as there is a general lack of rigor and no formal qualification for software engineers like there is for every other branch of engineering.
And who, exactly, do you think is designing these new processors?
I think maybe what mjwalshe is thinking about, is the Computer Scientist graduates who cannot even program.
My first job after school (as a technical programmer) was at an Elite RnmD organistion (our boss was the mechanical engineers president at the time) and I remember I was told one way to think about it is that "engineers" are scientists with thumbs.
http://lifeinc.today.msnbc.msn.com/_news/2012/01/13/10142795...
That had a lot to do with what kind of programmer I am today even if I was one of the worst students in the class.
(Though admittedly, knowledge of English or German might be very useful if you are coming from Romania.)
Worst off are clinical psychologists (19.1%), best off (0%) are actuaries, pharmacists, school administrators, and surprisingly, geologists and astronomers (!).
As for learning you do because you enjoy it, treat it as consumption (i.e., the same way you treat an X-Box).
Since the cost of learning X tends to be high (at least if you learn it in school), and the cost of not knowing it is very often nothing but the cost of learning it + cost of delays, this inequality is very often not satisfied.
And the opportunity cost of not knowing things can be staggering.
If you just want to maximize your wealth, maybe that approach is workable, since there are more tangible numbers involved, but if you're optimizing for happiness, it's much, much harder.
I completely agree. But something is not only 'useful' if you can use it in your career.
Agreed but imagine how boring CS would be if people were ignorant of all of those other subjects.
Disagree. There would be no computer science without philosophy (but not the other way around).
> ...imagine how boring CS would be if people were ignorant of all of those other subjects.
If we eliminate philosophy from our curriculum, et cetera, I poise that kids entering high school this year will be obsolete by the time they have graduated. Because CS without philosophy is really just machine learning, right?
Stuyvesant opened in the beginning of the 20th century, and there are some vestigial components that should've been amputated long ago: in addition to the standard math, science, language (English and foreign), gym requirements, it has some requirements that truly made it historically a technical vocational school. To wit: 1 year of technical drafting (1 semester of drawing mechanical designs on paper, 1 semester of CAD), and 1.5 years of technical shop (1 semester of single-period shop, and 1 semester of double-period shop). By technical shop I mean the following: you get to choose two of ceramics, woodworking, metalworking (aka jewelry-making), electronics (aka computer tech), photography and video editing.
It's worth repeating: taking drafting and shop is required to graduate. By and large, these classes are not popular with students at all, the most obvious reason being "why the hell do we need to know this outdated shit? If someone likes it, they can take it as an elective."
Over the years, Z developed an ass-kicking CS curriculum: Intro to CS, AP CS (1 year), Systems/Network Programming, Graphics, and Independent Research. They are extraordinarily popular with the students, partially because Z is a great teacher, and partially because of the support of the previous alumni who would regularly take junior and senior-level college classes in their freshman college year thanks to that curriculum.
It's worth pointing out that none of the CS classes qualify for any graduation requirement. If you take them, you are taking them on your own time because you are interested. Aside from the knowledge itself, there's no carrot, even though the rest of the world is pointedly indicating that we need more software engineers and less metalworkers.
Now, Z goes to the current school administration and says "hey, can we add CS as an option to fulfill some graduation requirements?" and for 10 years straight (not kidding) the response he was getting was a consistent "GFY". Welcome to the NYC public school bureaucracy and people defending their own turf. It's not even that he asked anything outrageous. He didn't say "Hey, can we get rid of drafting and shop?". He said "Can we give our students more choice as to what is required to graduate?"
So, about two years ago Z decided to try a different avenue - working within the structure of Stuyvesant was not feasible, so he might as well go outside of it. Someone I know connected him to Fred Wilson, they chatted, and the rest is what you see in front of you. None of this would've happened if the Stuy HS administration had a few less heads up their asses.
It's interesting to hear that Stuy requires drafting and shop. As a former NYC transplant I always thought it was more like a public prep school. My high school in rural Minnesota also required a year of shop, and drafting was one of the electives.
A few of my friends from high school focused on drafting and CAD, and have great jobs with architectural and engineering firms in the area. When I had to return for a while to deal with some family stuff, I could not find a local programming job to save my life.
NYC has continual construction, both with new buildings and public works projects. Drafting certainly seems antiquated, but perhaps there actually is a local need to get high performing students interested in the preliminaries of construction, civil engineering, city planning and other related fields?
It all comes back to the difference between "requirement" and "elective". A situation where you must take a class in a field where the supply seems to be ok, but not in a field where the supply is low seems to be wrong.
Though the last time I used my Mech side was to point out to an engineer in the 4th largest Civil Engineers that he had used the wrong equations for a bridge design.
I haven't seen the curriculum for this new school, but I hope they balance the theoretical with the practical. I hope it doesn't churn kids who end up being cheap labor for the big IT companies in NYC and who don't see Computer Science as a discipline and an art.
Looking back to my CS classes at Tech, I still recall what I learned about basic data structures and common algorithms. Heck, I still remember and find useful the things I learned about assembly.
The things I don't find useful and wish I could forget: Visual C++ and Windows programming.
I was class of 2006 and we had AP Computer Science (which was Java at this point), computer architecture, networking, A+, some sort of PHP/MySQL web development class but it was mostly useless
http://en.wikipedia.org/wiki/Advanced_Placement_Computer_Sci...
Wow.
I've commented with others about the dangers of hyperfocus -- the flip side is denigration of CS by folks who are ostensibly guardians of "general education".
[deletion, material sent in email to poster, probably should have been so in the first place]
But at this point Zamansky has probably gone too far down this other road to have patience for that.
Computer Science teaches you to think logically about problems. It gives you primitives to build complex systems that will later help you understand the world. In fact, most computer scientists think the same when they approach a problem.
But there are other kinds of thinking that are also important which high schools should introduce to students. Art. Music. Athletics. Each subject requires you to think in a different way.
I will always remember what Marvin Minsky told me when I was taking his class: when he approaches a problem, he first chooses how he will think, not how he will approach the problem itself. He also said that he studied how the great minds of the past approached problems so that he could think like them.
Do I want to think like a Richard Feynman or an Albert Einstein? Have you ever thought about that question and what it means? If not, I recommend you start reading books that they've written so you can try to capture that brilliance.
Both my father and my uncle went to a mathematically oriented school in Russia; however, this does not mean their education suffered. What it meant was that on top of doing normal school, they had more math taught at a faster pace.
Specializing in high school does not stop you from getting a well rounded education, but it can provide focus and ensures an exceptionally thorough grounding in whatever subject you're specializing in.
Edit: If anyone has any questions about him or his teaching style I might be able to answer.
Some say brilliance is often a product of hard work over a long time.
Thanks for being an awesome teacher, and congrats on this new project!
So thanks, Z. :)
I choose software (while most of my friends of that time choose electrinics engeneering). The next three years we had lots of subjects related to CS. This is what I learned there: - Computer architecture, - Networking (osi model, ip stack, that sort of things), algorithms, - Structural programming (1st year), then oop (2nd year) (with C and C++), then Events Driven Programming with VB6 (3rd year) - systems analysis and design, database design (er model) - internet programming (back then, that was ASP, CSS and Javascript)
And all along the final year, we had a subject called Final Project, where we had to develop (from the requeriments to the implementantion) a REAL system (mostly done for family companies or NGO's ).
When I finished high school I was really prepared to start working, so I did, while at the same time, started going to the university. I can tell that it was REALLY easy to do my grad career because of my background. Even when at University some topics where seen in much deeper detail, i did it much faster than other people, because I already had my mind used to that things, and I just needed to learn the details.
But then again, even when I keept studing CS, some of my high school classmates chose other things to study (e.g: medicine, law school, economics, etc). But I think anyway that I must have to be a good experience for them, at least to learn that CS was not for them, and dont lose their time later.
Hope it helps!
It seems like it could also be a boon to many others if they can take the efforts of this school and share them out, similar to OCW at MIT, or Stanford, or even Khan Academy.
I think it would be particularly interesting because the other material out there tends to target either too high (the university material is at a university level, of course) or it doesn't have the same kind of feedback as what the students will be able to give here.
While Joel doesn't want it to just be superstars, it seems fairly likely that a good number of the kids would be the kind that already wrote their first OS and compiler before they attend, so I'm wondering if there will be a similar 'level divide' as what's seen in industry, and if so, what that ends up doing to the ones below that Mendoza line...
While Stuy was immensely fulfilling and I learned a lot, it was not thanks to the general history and drafting classes. While those were (sometimes) interesting, it was the fact that I was no longer bored as I was in JHS and got to take subjects that allowed to me excel and "stretch my brain," for lack of a better term. Those were limited to my CS classes (Z's classes), the math classes, and psychology.
The CS courses I took at Stuy were on par with, and occasionally better than, some of the courses I took at MIT. At the very least, it prepared me to do very well at MIT and allowed me to take more advanced courses.
If it hadn't been for Z, I know for a fact I would have been significantly more bored in HS and probably wouldn't have done as well. Being a part of the 'Z-Team,' as we affectionally called the network team at Stuy (yes, we were lucky enough to have a network team; sadly, due to the roadblocks placed in front of Z, I'm not even sure this exists anymore) was easily the best experience of my academic career up until that point, and one I still fondly look back upon.
I truly can't wait to see what Z does with a bit of freedom to build what he's been trying to build for over 10 years.
If that is the case, I feel this is a disservice to young humans: we ought to be exposing them to as broad a range of human thought as possible, and not narrowly focusing on a passion. The idea (as I understand it) seems to be a recipe for producing narrow humans.
This will very likely be a +1 over the status quo for 400 to 500 kids, at least over a 4 to 10 year period. But I expect that success will have more to do with the quality of the leadership than the soundness of the model -- which means this won't scale past the supply of Zamanskys and Spolskys.
And I'm afraid the characterization of the various symptoms skates around the deeper and touchier problems. (Some kids, in _school_ are struggling b/c their English isn't there yet, so let's focus them on subjects they can excel at anyway? Umm . . . ) That is understandable, it's a constructive effort, no point in picking fights and many people seem to believe those problems are beyond the reach of policy in any case. It seems Joel doesn't even agree with me about all of those. But the larger system ain't going anywhere until we tackle those issues. The larger problem is that we can't even discuss any of that without the whole thing turning into a food fight.
I admire the generosity here, I sympathize with the urgency to do _something_. But I really worry that efforts like this will divert a lot of valuable concern into sideroads without much potential for the larger system.
Sometimes the best ideas don't come to you until you've worked and struggled with the existing tools and materials to appreciate the difference between practice and theory.
I might be a special case but for what it's worth: I didn't start programming until I was a freshman at Stuyvesant High School. I took the intro course on a whim and was hooked. If the computer science program didn't exist, I might not have gotten into it. I was more into art than math/cs back then. I didn't have much of an environment to discover that I loved programming before that, and I bet many other kids don't either.
1 - In high school, the people who take multiple CS subjects tend to be intellectually curious, and good at many other things. The same folks who took AP CS with me also took AP European history. I suspect it will be similar here.
2 - Similar to what folks say about Stuyvesant, I don't think there will be a crowding out effect of other subjects.
3 - If done right, the teachers can connect many other subjects to computer science: Philosophy, Mathematics, the Scientific Method... This can make those topics more interesting, not less.
4 - The rigor of learning to program is applicable in many other fields. Computer Science grads frequently go into other fields precisely because of this. This diminishes the "Let's fix the software engineering deficit" argument, but it's true that CS as a major signals ability above and beyond programming.
If I had grown up in NYC, I would have done anything to go to this school. I am glad that my children might have the opportunity to go to a place like this if they so desire.
However, I wonder if the school will become a place for people who are passionate about software to expand their coding talent at an early age, or if it'll become a place for kids whose parents want them to make money later in life to slog their way through a curriculum. It seems like there's a mixture of both types even in college CS programs, and one kind is a lot more pleasurable to learn with (as well as a lot more useful) than the other.
The focus here seems to be more on training kids up for a job - would anyone be so enthusiastic if we replaced "software engineering" with "assembly line work" or "street sweeping"?
It's not like the kids are being forced to go into this school. If you graduate at 18 and decided you don't want to be a programmer that's still plenty of time to do something else and having some knowledge of programming is going to be useful in just about any field.
I'm a little confused by your post, because the tone seems to suggest that this is a good thing.
Basically, I'm saying that it's ok if what you do for a living is not an all-consuming passion. I know if you're doing a startup, there's a good chance that it is, but there are other ways to lead a satisfying life besides through your job.
It's not so much that working towards a career is good, but I don't think it's the unmitigated disaster that some comments here are making it out to be.
When I was in high school, teachers were in exceedingly high demand. Because of this, teaching was a career highlighted often by our teachers.
The result is that most of my friends ended up choose teaching careers; along with a significant number of others in my age group. I have watched my friends really struggle to find work in the field and a couple have even chosen to leave the field altogether because there are far more people than jobs now.
Anyway, the point is that being forcefully reactive to the problem of career demands is never a good idea. You will just end up with a bunch of highly trained people who are unable to use those skills. I do not believe that software development is immune to this fact: Both teaching and programming are skills that are useful everywhere, but it still didn't help my friends.
The market will naturally sort itself out. As pay for programers rises, more people will become interested in the field until the pay declines again. The influx becomes manageable this way. Any additional incentives will cause the problems above. It is best to not mess with the market.
I think this is a great idea, but hope that in 10 years the kids who only have experience in software engineering do not become a commodity.
It's a supply and demand curve, there really only needs to be a few thousand too many developers looking for work and the entire thing will crash from the programmer perspective. Salaries/benefits will fall because people will be more eager to settle...and then there'll be in a race to the bottom taking less and less compensation in order to get a job
I would actually accept a much lower wage than in industry (as long as I could live off it - which I doubt would be very low in NYC haha) to teach at such a school
And a "technical" school getting anyone into oxbridge mm that will be the day.
Similarly I am sure Eton (which seems to be one of the most popular ways into Oxbridge) provides a very good education, but I am also certain that it is almost impossible to pay that much for most people.
Also Ox-bridge along with Bath, Imperial and Queens (British telecoms Belfast engineering Center used to get the pick of those) do have a rep as being the best universities for CS.
Eatons where the thickos go :-) Years ago when Mum had had a stiff Gin she commented if we had stayed in Birmingham she would have tried to get my grandfather to pull strings to get me into King Edwards (Tolkien's Old school) which along with The Oratory (Tony Blairs school) are considered the top 2 schools.
"Starting salaries for smart programmers from top schools are flirting with the $100,000 mark. "
By that logic, we better start churning out more doctors, lawyers and CEOs because, gosh, the salaries for those folks are flirting way way past the $100k mark. And we can't have that!
"One of the reasons the elite US colleges seem to turn out so few computer science majors every year is that they are only drawing from a narrow pool of mostly white and asian males."
Ooooh... we definitely can't have that! There's also a startingly low percentage of redheads and part-time harpists. Let's fix this, stat.