The other stuff...algorithmic efficiency, recursion, design...can come later, and are much easier to teach after you've appreciated the potential of computing and computational thinking.
I was fortunate to have an uncle in IT who gifted me hand me down IBM PC hardware that my parents could not afford in the 80s. I was making more money in high school with stuff I was able to self teach than many of my "privleged" relatives in real adult jobs.
These coding initiatives are great, as they introduce kids to a whole new world of inspiration and discovery.
>...for students of color in particular, whether the emphasis on knowing Java and JavaScript only puts them on the bottom rung of the tech workforce.
The obvious follow-up question is, "Are there significant differences in the way coding is being introduced in schools based on the average income level of the area?"
Yes --> Is there some reason for this? Does one method require more resources? Is one way actually better than the other?
No --> Then, "Technical Ghettos" are not likely to result from the program.
Ofcourse once you graduate whether it be a bachelors degree or a boot camp, you're at the bottom rung by default. Yet what's unexpected about new graduates doing entry level work?
Similarly, art and music, science and mathematics. Everyone should get some of this, though not all of us will become artists or musicians or scientists or mathematicians.
I think it's generally a good idea, though I wish they'd leave off the "of color" qualifier; there are plenty of white children from rural areas or working class communities who could also benefit from introductory coding.
In fact, it's quite obvious that the way it's being presented (by president Obama among others) is exactly the opposite. They also mention the MONEY angle FFS both in terms of government spending but also expected ROI in terms of future careers !!!
On the other hand, not a word has been written on the points I brought up in my previous comment (checks and balances, inherent difficulty of the domain, requirements that have nothing to do with training).
Programming is an ART, not everyone can be Bach or Picasso even though most can slap paint on canvas or hit keys on a piano. It's actually a lot worse with software engineering because the end result doesn't only have aesthetic value but is an interconnected system that in many cases subsumes many facets of our everyday lives.
Software engineering is hard and requires intelligence, creativity and experience. Pretending that everyone can be a good/effective software engineer through training alone is supremely naive, actively encouraging this sort of society is extremely dangerous.
TL;DR There is no room for egalitarianism in software, it should be a meritocracy first and foremost, where the best are encouraged and those not cut out for it swiftly dropped from further participation. We have experienced what bad software engineers can do and the cost to society at large that they are directly responsible for. Let's not pretend that this new populist push will improve matters.
Btw, ponus points for (in the context of this article) implying that Black and Hispanic children aren't smart enough to be software engineers.
Also, I think perhaps the issue is with allowing "coding" classes to qualify as math/science credits may encourage some students to essentially come out of highschool with a working knowledge of how to write java / javascript to accomplish certain tasks but have little analytical training (ie the scientific method, math beyond the basics, etc)
I could very nearly count on a railway brakeman's fingers the number of times that high school math has been an asset in my software career. The three years of computer programming electives I took were wildly more useful - and actually taught me geometry...
"Coding literacy" may or may not be a worthwhile goal with a net positive impact, but it is certainly not going to let everyone get in on the current tech salaries.
If your goal is not to have codemonkeys - you need to give the people skills to develop themselves further - which means knowing how computers work.
Not really – but I won’t make that argument myself, but instead link to pg’s "Blub Paradox": http://www.paulgraham.com/avg.html
It's always cute to hear school administrators (or any non-technical policy types) predict the future based upon superficial understanding of the underlying science and technology.
Code synthesis for fully specified and very simple programs is still considered a hard problem. Automating the entire software and product design process is fully AI hard.
(Or Reginald Braythewathe's term of " Clerical engineering work" )
Do you think it's possible for development to be the new manufacturing? I have been saying that it is for years now - but I don't know if I truly believe it or not. There is a large academic distinction between coding and manufacturing. Solid middle class manufacturing jobs were mostly mindless monkey work. Screw this on, put that in the hole it fits in, etc. The more I work on this internal Java ERP/CRM sites the more I think it is monkey work too, but when I take a step back I realize that I have been programming since I was 10 (16 years), I have a bachelors degree in computer science, I have several years of working experience and after work I go home and code. The work generally seems like turn key work to me, but I'm not sure if that is true. Basically I'm saying that I don't necessarily believe the masses are smart enough to be developers even for shitty intranet applications
I do appreciate how the article makes a distinction between computer science and programming. We already have a computer science education in school. Its called math.
Is it the police and prison systems that are endangering another generation of black and brown youth? Is it the lack of fresh, organic food in inner-cities? Maybe it's the fact that black and brown parents have, at a disgustingly disproportionate rate, been taken away from their families for possession of plants and chemicals that are likely to be legal soon anyway?
No, no, it's not that stuff. It's the fact that kids are learning Java and Javascript instead of Python and Go and Rust.
Maybe it's the combination of many potential social problems, and the author is writing about one specifically? I don't see anywhere it's stated that this is the biggest issue facing youth of colour.
How does learning to code prep one for work as a service technician or helpdesk agent?
Because it's treated as an alternative to the main-line college preparedness curriculum.
This isn't Algebra I + Programming I. It's Programming I instead of Algebra I. Because if you're not good enough at math to do well on college entrance exams, you might as well start your career readiness...
(This is rally hard for us folk out in the real world to understand. We know that programming is a high-demand field precisely because it requires a level of intellectual preparedness similar to or sometimes even greater than that obtained while successfully completing a college degree. But K-12 people in the US tend to be idiotic about credentialism. So where we see "exceptional self-learner with great work ethic can make it without a college degree in software", they see "any schmuck who can't hack it at college can get a high paying computer job")
generally speaking couldn't care less about the marketability of their degree programs among the general public, much less the lower income general public. Enrollment numbers just aren't important enough currency in higher ed to devote enough effort to get the president and a bunch of celebrities on board.
Deans, maybe. But not run-of-the-mill professors.
And even then, almost all CS programs have the exact opposite problem right now -- too many people and too much hype so that it's hard to predict the future and grow sustainably.
Besides, it is a very well-documented fact that the current push for STEM -- and specifically CS -- education is coming from political types and insdustry folks.
But then the dot bust happened and enrollment went back down to much more reasonable numbers, and she was a lot happier for it.
So yeah, I doubt professors are the ones pushing too hard for this.
Personally I think Python, Java, or Javascript are good places to start coding. Python has the slight edge because there are a lot of good educational kits (Raspberry Pi as an example) that really make learning to code fun although the whole 2.x/3.x mess muddies the water a bit.
I think once the tooling gets a little bit better then Haskell could easily be added to that list. It's close but not quite there today.
I see being able to code as a thing like literacy, either you have it or you don't, and, if you don't have it, then you are going to be held back and not reach your own potential. In the workplace I see a lot of people using 1990's tools like Excel to create 'reports' of some sort, where the data in them is as good as dead. Meanwhile, those of us that can do a database join or two and get the results in some type of web page (or text file) don't have to keep creating the same 'reports'. The computer just does it thereafter.
Companies that used to have a web page (and not much more) are now using online tools for business, whether that is getting stuff out the door, handling customer service, doing business intelligence things, in fact almost everything gets touched on by this 'web' way of working. Doing things in legacy tools (Excel spreadsheets, Word docs) just does not cut it anymore, things now get done in a web-style way with some backend processes bespoke to the given business smoothing things along. 'Let's go back to doing everything in Excel' is the new 'let's go back to doing everything on paper'.
Even if one is not proficient at coding it is still important to be able to work with those that are, to be able to describe processes in a way that can be 'automated' to some extent, a 'systems approach' rather than hand-me-down ways of working.
This automation does not necessarily put people out of work, it empowers people to be able to do their actual work without the tedium of repetitive tasks. They can be more customer focused, do better 'business intelligence' or keep better tabs on getting stuff out the door.
There was a revolution in the 1990's when Word came along and replaced Wordperfect. Suddenly people could type their own letters and memos, they did not need to dictate to a secretary. Oddly nobody has gone back to the 'Wordperfect' ways of working. Code (particularly on the web, whether front or backend) is like that, a game changer, and I want to see people coding, not necessarily to do some SF next-unicorn thing but just to be able to be participant in regular SME businesses.
Counterpoints: I always excelled at math, and while I did grow up very poor, I am a white male.
If someone can code even a little bit, it really opens lots of opportunities, even without data structures, algorithms, and the rest of the computer science curriculum.
Which is much higher than most Americans. You'd be in your tech ghetto making more than your friends who went to a 4 year.
Literacy is the wrong word to use here. It doesn't work to compare English literacy with this sort of thing.
English literacy in school is gained by a lot of practice. Writing, even if it's texting friends, is something you do daily and throughout the day. The written language is in the same language (though there is some transformation involved in turning words in the brain to symbols on paper) in which you think and speak.
Doing something like computer programming is far different. You won't get daily practice just by going through the norms of life. Even pushing yourself to getting daily practice won't happen if you don't have something on your plate which is interesting. People are lazy by default and just opening an editor can be too much effort. I procrastinate bad enough on paid projects, let alone things nobody is expecting me to do.
Just because people can read, doesn't mean they pick up books to better themselves. People would much rather be spoon-fed entertainment through TV.
I don't see the point of learning to code beyond having some familiarity with it. For this to be a useful skill you have to put a huge effort into keeping up with it. Learning a different language is a huge barrier (not difficult, but for surpasses the point of which most people are willing to go.)
Jobs aren't easy to land. There is no equivalent to manufacturing in tech which can lead to an army of workers being employed. The tech rabbit hole grows deeper each day as we add more tools and specialty areas in which we need to be familiar with. Areas such as wrangling data has a daunting list of pre-reqs and I imagine this will be a trend moving forward (programming paired with knowledge of the domain you are building software for.)o
The sad fact is that technical knowledge doesn't take down the issues which data shows to be a problem with people in ghettos.
People who live in a ghetto have a hard time moving. A life of poverty creates huge issues which people who don't live in poverty don't understand. It's called grinding poverty for a reason. The grinding is going on in your head and that will drive you mad. For a long list of reasons, jumping past the most bottom rung of the employment latter is something few people in this situation will ever be able to do. A well paid programming job isn't a bottom rung job.
Well paid development jobs are well paid because they are hard to get and hard to employ for. If it were easy, then they wouldn't be well paid. Teaching people in the ghetto how to write code isn't going to help them get these jobs and it isn't going to help employers in hiring.
Freelancing and the gig economy is even worse. You can make far more money going solo by starting your own shop than by traditional employment. But the same ratios work here as in the rest of the economy. You get 1% (or less) who can figure out the game and thrive while everyone else just scrapes by.