Not too long ago it was "no one learn to code! it's all going to be outsourced to India!"
Now, "I'm starting a non-profit to spread the gift of coding to children. Coding is our future".
Give me a f-ing break.
I can't think of a faster, more accessible, more entertaining way to grow these skills.
In high school, I taught myself how to program and formally took the math classes offered. I remember many days in class thinking, "oh, this is just like programming with another syntax." There is a lot of overlap there. In terms of critical thinking and breaking down problems, a coding course would just be a reiteration of the existing math classes in an applied setting.
Of course, coding is a good way to stimulate thinking, or at least it is for me. But they must go hand in hand...
This is all besides the point, though. What is wrong with "code fever," as you put it? With that kind of connotation, you seem to be implying that there is some kind of net loss if everyone learns something about programming. Beyond being mad about a fad (which is itself an overreaction, I might add), it doesn't make much sense to me. Care to explain?
If you listen carefully, most of the interviewees are simply attesting to Steve Jobs' quote at the beginning: "Everybody in this country should learn how to program a computer...because it teaches you how to think." The second part, the ability to think, is a skill that people must have AND use in their everyday life to be successful in whatever they do. Zuck, Gates, Dorsey, Houston, etc. are all encouraging people to learn to code for this reason, and because programming is an extremely empowering skill--not just in one field but in all...if you want it to be. The fact that programming can be used in all fields is why there is such a huge push for people to learn. It is a self and world-empowering tool that is simply being encouraged to be taught/learned by the incoming generation.
The current generation needs to realize that programming exists everywhere, just as we are taught that subjects like math, biology, chemistry, physics, and history are. There is a HUGE distinction between learning to code just for the sake of getting a job or improving the economy and learning to code because it can empower us to THINK and then DO. Not to be philosophical, but part of societies' problems has been always knowing what problems exist, but not actually doing anything to solve it--until now. Programming, more than anything, accelerates our ability to solve problems, little or big.
In a world where so many problems exist, programming is many times the means to achieving the solution. And that is why these successful programmers are pushing everyone to learn.
"I think the video was great and people are over analyzing it. The following is what I got out of the video because I didn't over-analyze it like most people are doing:
(1) Everyone should be introduced to computer programming. Keyword here is introduced. Just like kids are introduced to Art, English, Biology, Sports, etc. Many middle and high schools are simply ignoring technology for the most part despite it's growing relevance in our lives and that is what this video is trying to point out.
(2) A career in software engineering isn't necessarily the cubicle dwelling, loner, boring stigma that most uniformed people associate with it. They're showing that it can be a very fun and impactful environment like at Valve, Facebook, and Dropbox (noting the free food, laundry, etc)
(3) You potentially have the opportunity to affect many people in very positive ways through the software that you develop.
(4) EVEN if you don't pursue a career in programming, it can help you understand its implications in many OTHER seemingly unrelated fields. And it will help you develop critical thinking skills.
(5) It can be a learned skill like any other and there's no need to be intimidated by it.
All of those are very noble intentions in my opinion and valid concerns to address to the general perception of programming as well as computer education at early stages to develop interest in people that otherwise wouldn't have known about it."
Certainly the self serving reason for the push can't be overlooked. The more people that are pushed into coding the more of a chance that Zuck/Dorsey/Houston can find a superstar to hire.
I'm sure in any industry (medical research as only one example) the people in that industry would love if more young people took a shining to what they do. Then they would have more to pick from. Sports works the same way. If you get a bunch of people interested in football out of the funnel comes some superstars and you have an entire industry.
But also remember that Zuckerberg is now investing in young medical research and Gates has been a philanthropic investor for a long time--these guys are looking beyond their companies and show that they truly care about the world and solving the BIG problems that exist. They are literally world-serving through these investments.
The code.org video opens with a Steve Jobs quote, and the language that powers much of his legacy isn't good enough to teach? Really?
EDIT: They added an "other" option to that list since yesterday when I first tried to sign up. That's a good start.
Chris Bosh was a complete surprise to me but made me like him even more.
BTW, I posted news about his death (I heard of it a week after he died, go figure) on facebook. Its sad that one person replied with RIP Mr. Ritchie and a "like". I was pleased though.
That's the way the world turns.
It's exciting to see a video like this highlight the real need and current lack of computer science education in high schools. That is exactly what we are working on, and have high schools all around the country! If this is an issue you are interested, in please contact as at email@example.com
Not everyone wants to sit in front of a screen all day, and imo thats a good thing.
Currently, there is not a basic grasp of digital literacy. I don't think everyone should know, off the top of their head, how to compile a script. But if people understood the idea of patterns in text and repeatable tasks (i.e. for loops), that could be very helpful, especially to professional developers who can make use of structured, well planned information.
I'd imagine that if they stopped looking at their computing device in those eyes and were able to truly express their creativity, their viewpoint would change. Programming is not about "[sitting] in front of a screen all day." That's a misunderstanding. Programming is about taking control of your computer for fun, fame, and fortune. It just so happens that our only way of doing that is by sitting down in front of the damn thing, currently.
* reading and writing code is basic literacy for the information age
* One generation hence, any company that is literate (almost all employees write code, the use of code runs through all its processes) will have enormous competitve advantages. Or rather any company that is illiterate will have enormous competitive disadvantages
* So Software will eat the world.
* but in the process from here to there, developers will take over more and more - moving from the "typing pool" into
all of the company.
* this is unlikely to be a fixed supply of coders getting more % of revenue, and more like everyone learns to code and then usual political fighting resumes.
> reading and writing code is basic literacy for the
> information age
"Everyone learns to code" is a pipe dream.
The analogies will always break down but really, in this day and age, an adult in the Western world who cannot drive is socially and econmoically disadvantaged. (chooses not to is likely a different thing - for half of 20 years in London I had no car and biked / tubed everywhere. Now, my day would be impossible without a car. Sad but true)
I mean how many 17 year-olds do you know who say, "Learning to drive - who needs it?"
I think being a car driver is more equal to being a competent computer user not a python programmer.
"competant" computer users who do not code basically send email and write word docs. Thats the level of putting on a seat belt, or working out how to turn on the air-con.
We can argue about the analoigy for a long time, but pretty much anyone can be taught to code a simple dynamic web site.
Children learn Logo - thats Lisp basically.
Anyone can code - just teach them young enough.
This is not to knock anyone but let's say all of us participating in this discussion are at or better than the level of coding we think the general public should be at. This coding ability still doesn't seem to make us have great, sound, logical arguments and all these other attributes that are being espoused.
Google/SO customize copy and paste. Thats what I have been doing. I wonder if I actually think to solve problems while coding or just pile patterns of text, place proper settings and API keys.
Having said all above, Deep within I believe hackers are like painters(Read pg's great essay - http://www.paulgraham.com/hp.html), for hacking is like painting, would you want every one to be a painter? If not why everyone a programmer? Why learn to code? Programming or Painting is not mathematics nor reading writing skills, i can live happily without learning how to paint and how to write codes. Coding is NOT an essential life skill, there are many who have been living without and will continue to live. I won't learn programming because i don't require it.
I feel sad, on such brainwashing. And starting with steve job's quote about programming, is like doing a ferrari promo by Michael Jordon. I would have been happier, had they got something from woz.
Michael Moore come up with a documentary please.
It isn't so much that I think everyone should be writing their own databases, but some understanding of how good software _should_ work, (for example, standard data formats), can guide informed decisions about software. Some basic technical knowledge is enough to understand why you should never build a large website on an ancient CMS where you end up with thousands of HTML pages that will need to be completely rewritten, one by one through some clunky web interface, when the site's design changes. Anyone should be able to look at that kind of setup and say "hey, that's complete garbage — let's hire someone who knows what they're doing!" and there will be a few less website janitors in the world. And hopefully a few more people making cool new stuff in their place.
Sorry, that kind of veered off course :/
I am being sarcastic.
(4) EVEN if you don't pursue a career in programming, it can help you understand its implications in many OTHER seemingly unrelated fields. And it will help you develop critical thinking skills.
(5) It can be a learned skill like any other and there's no need to be intimidated by it.
All of those are very noble intentions in my opinion and valid concerns to address to the general perception of programming as well as computer education at early stages to develop interest in people that otherwise wouldn't have known about it.
Basically, everything Mike Rowe says here - http://www.youtube.com/watch?v=0NwEFVUb-u0
Today's computers are so engaging as a communications and entertainment device, many young people are not exposed to the possibility of using the computer as a creative tool.
Learning to program is just one such activity to get the creative juices flowing in the next generation. Learning to use a computer to write a paper, make a presentation or build a spreadsheet are fine; but the power a computer can unleash has much more potential for creativity and originality when students are taught to instruct the computer directly.
The early learn-to-program sites are focused on learning programming languages. This should evolve into more sophisticated environments where higher level constructs are made readily available (e.g., graphical environments, data storage and communication features).
It's exciting because we can also bring the social element into the equation to create for and with your friends and family.
> We want to see it being used by kids all over the world to learn programming.
It used to be a lot more expensive than $40 to give a child access to a computer that (s)he could program and tinker with...
Schools, teachers, and most parents are not equipped to deliver these experiences today. The superficial "technology programs" at most schools are appallingly shallow, not going much beyond Garage Band and book reports in Powerpoint.
Videos like this help motivate those who have the skills to engage and make a difference. What's not to like? Go out and get involved in volunteering to teach programming to kids. You will love it, and you will make a difference for kids who will go on to be the next generation of software developers.
I wonder if the global trend towards open solutions for problems will discourage people learning to code. I've been using computers for perhaps 15 years and I've only ever skirted around the edges of coding. I've learned a little regex and a tiny bit of bash scripting and I know how to edit a little php to get Wordpress to do what I want it to, but that's as much as I've needed to solve every computing problem I've encountered.
Wordpress is a pretty good example: there's now such a rich ecosystem of themes, plugins and hacks that you can get it to do some pretty amazing things without needing to actually write any code yourself.
Also, a key aspect of a good programmer is experience. If kids start early say for example at age 12, by the time they are 18, they have 6 years experience already. Think about the things you can do with that much experience? It could lead to innovations in software far beyond what we see right now.
I'm a senior developer and I teach my methods to my colleagues all the time. It doesn't hurt me, but helps the team and the cause immensely. It makes going to work much more enjoyable when everyone is on the same page and pushing each other.
I'm twenty-five years old. My wife and I have four cats, a home, two cars, and more than six figures of combined student loan debt.
I earn 75% of our total income as a Software Engineer. We can't survive on my wife's income alone and we don't have any family members to fall back on if times get tough.
So you, a senior web developer at JPC, might say "bah-humbug" to job security, but I, for the reasons listed above, do not.
We owned one car prior to university and took out an auto loan to get my wife her own car.
We work in opposite directions and we each have a commute time of ~20-25 minutes, so moving closer to her job would increase my commute time and moving closer to my job would increase hers.
Our schedules are too different to make carpooling a possibility anyway. Also, there's no way to get to either of our jobs using public transportation.
I'm not worried about job security. But I am excited about what armies of coders can invent.
I've a very very positive experience with load81 , something I wrote almost solely for my son. In the latest months and thanks to this program my son learned to write Lua code and we are having a lot of fun.
I don't think it would be possible without a system that makes drawing a circle or checking where the mouse pointer is trivial.
I learned basic programming in middle school (turbo pascal!) and high school courtesy of those opportunities. I plan to give back throughout the rest of my life, to the education system I came from. If even one or two people per school did that, it would make a huge difference.
Now, of course, you know that these tools exist, and I know too. But most people don't and to them programming simply doesn't exist. Teaching these people quicksort in school won't be of much help.
> School courses will do nothing if people don't have
> access to programmable computers
When I finally had access to a computer and a real programming language (not some pseudo code) I just needed the syntax to write my programs in.
The tricky part is not to teach kids the syntax of language X, it's to teach them to operate abstract structures, and that is much much harder.
- Both have their quircks
- For the things people do in their day jobs Excel/VBA is a better match
- You can do some mathematical stuff easier, it has matrix multiplication and a generally usable solver
It doesn't help you with everyday stuff. It doesn't exist in Windows GUI, unlike (most) other Windows software. You don't use it to build GUI apps, games, web services or whatever may be considered "interesting" nowadays.
Contrast this with DOS which shipped with BASIC interpreter and demo games.
Well, that's almost solved with the Raspberry Pi: a fully programmable computer for just $40. It used to be a lot more expensive to give a child access to a computer that (s)he could program and tinker with...
A.) download this software package (say, Python) that allows kids to learn how to program.
B.) buy a dozen $40 mini-computers kids can use to learn how to program.
Most schools I know of would pick option A.
Day 1: Learn how to setup the language on your computer.
A lot of books, like Learn Python the Hard Way, make this the first step.
You are given a black box which does some stuff, but you have no idea how it does this stuff or how to make it do something else. You don't even know that it would be relatively easy with a decent IDE.
To me, the biggest challenge is to get bigger picture of technology I am using -> once I understand that learning is much faster.
the fall telephone thing: http://www.youtube.com/watch?v=vEOtckaZtLg#t=0m36s
pretty distinctive way to say "i'm tapped" used in movement: http://www.youtube.com/watch?v=o6MIChyCBAU#t=0m43s
in general his vocal style and delivery alternate between mark e smith from the fall and brian eno. really not a bad thing in my book, but still not entirely original.
homosapien by peter shelley: http://www.youtube.com/watch?v=2HwmO_GZfzI
sounds like the basis of north american scum: http://www.youtube.com/watch?v=Jmm14g4cAFc
there's also the more than passing similarity between somebody's calling me: http://www.youtube.com/watch?v=wRCAuao67F4
and iggy pop's nightclubbing: http://www.youtube.com/watch?v=G3OaMZojJRg
all i want http://www.youtube.com/watch?v=A6BYCcy5aeo
is pretty much bowie's heroes.
What good programmers have a lot of, though, is self-discipline, initiative, and patience. If we can teach kids those core skills, they can use them to learn programming later or excel in any other profession they choose.
Show them some Pixar movie and tell them how those movies were made with technology. Tell them how technology enables sports bring people whom they can relate with. Not Zukerberg or Gates.
We're all going to look supremely stupid for things like this in ~2 years.
A big chunk of my peer group is 30 year-old underemployed humanities students. If they were interested, I'm sure that most of them could be not-underemployed.
Though TV takes its toll.
I don't believe this is a collective personal shortcoming on their part-- it's probably just the way of the world-- but the idea that so many of them hate their jobs but have ten hours a week to play games/watch films frustrates me. Rationally I understand why you might want to spend the day between your swing shifts waiting tables doing something other than working, but from where I am I think that all I can do is encourage them to do other things and point out resources.
Also why exactly do you think it is so easy to get a programming job? Most employers want either work history or formal education. Even if you teach yourself programming, finding a better paying job might not be any easier.
Theres a commercial interest in encouraging kids to code: cheaper manpower in the future.
Still, if there's such a shortage of good programmers (and I agree that there probably is) then why aren't we playing this to our advantage? A senior engineer can't afford a house in the Bay Area or New York, and our status is low-- we still work for managers; we're a defeated tribe in this way. Most of us don't have the autonomy to choose our tools or decide whether to use or replace old legacy code. Shouldn't our top priority, as a tribe, be to change this?
We should make programmer autonomy our major issue. http://michaelochurch.wordpress.com/2012/11/25/programmer-au... This will benefit us and the economy as a whole.
Then, after we've had this victory, we can work on increasing the total number of programmers.
1. Coding is the equivalent of literacy after 1451 (Gutenberg).
2. in say, one generation, any company not having literate people at all levels of the organisation, and not having then changed how they work at a fundamental level to take advantage of these programmers/business people will be at as severe a compettive dis-advantage; similar to trading company in 1600 where no-one at the top could read or write.
3. If you think that's a bit of a stretch, or say "yeah but there were loads of illiterate people on trading ships" - but the people at the top, the captains, the investors, could all read and write. So they could exchange information globally and accurately. Share a model of the market effectively.
4. So, the successful companies in a generation will have coding in their DNA. And to get there from today, companies will benefit most from hiring great coders and teaching them how to be CEOs, how to be Salespeople, how to be accountants. And letting them run the company as CEOs, and accountants do now. Let me repeat - hire people who can code and teach them to be CEOs. They will find ways to run the company with coding at its core.
5. In short programmer anarchy / autonomy is the right way forward. The advantages of running a company through code is so great (comparable to running a company through writing) that all other skills come second. They are necessary but software eats them. For a generation only.
Takebacks: I am guessing that the econmoic advantages of code-literate population is a diminishing return compared to a text-literatate population. say 50%? Thats still phenonemonal.
Lets focus on one point.
Literacy facilitated efficient information exchange.
Likewise programming facilitated efficient information exchange.
But, not everybody needed to program the Internet for this advantage.
I think you are confusing a personal advantage and societal advantage. Certainly, we need programers but I am uncertain if everybody needs to be a programmer.
I work a full-time software job, and I can say that the software is the easiest part. I do big data HPC, C, C++, learning models and physics simulation. I need people to come up with models, Ontology and even vision. I think at the Hacker News Ivory Tower of software-for-software or software-for-programers, we often underestimates the value of domain specific knowledge.
The number of times in all my jobs where I've seen people working on problems that could be done orders of magnitude faster with a bit of coding knowledge, is beyond count.
Reformat that document? How about a Regex?
Analyse this data? Automatic graph generation and statistical methods.
Keep records updated? Database with automated queries.
Always building weekly reports? Template substitution and HTML generation.
There are so many jobs, that would not be considered anything to do with programming, that can be made hugely more efficient with a bit of coding knowledge.
As this video says, for most of this you don't even need to know algorithms or data structures or the 'important' stuff for being a programmer.
You just need to understand 'SELECT date FROM records WHERE quantity > 10'.
Or 'println("Report Week Ending " + date.GetToday()))'
With that said, we mostly come up with these ideas because we are able to program, so yeah.
> companies will benefit most from hiring great coders and teaching them how to be CEOs
That's why everyone needs to learn how to code (a bit). So they can go "Ah, I think software might improve this thingy here; let's call in an expert and ask"
Any field -- any field at all! -- that can benefit from information organization and retrieval, automation, scripting, robotics, internal wikis, private smartphone apps, information dissemination, etc., will benefit from people who have deep domain knowledge ALSO being programmers.
And I think that's just about all of them.
> Despite these challenges, we republished the updated graphic without too much delay. But I was left thinking how much easier it could have been had I simply recorded the process the first time as a makefile. I could have simply typed make in the terminal and be done!
In other words, the key "transferrable skill" of programming, is being able to describe a process in enough exacting detail, that nobody ever needs to "reconstruct" it again. The computers-being-able-to-execute-the-process thing is just a nice side-effect.
Calculus, statistics, physics simulations - all of these will be of use in a persons career, yes, but like you I think that is not important. What is utterly important is that the most expressive and flexible tool in the mental toolbox for two hundred years is put in the hands of as many human beings as possible.
I want the next Einstein to be literate, able to use Lisp on her OLPC device and change the understanding of the universe from her school hut in Rwanda, circa 2039.
We live in a world of wonders, invented by the brightest few thousand humans who ever lived. Let's give ourselves the best chance of the next thousand adding their full worth too.
I am certain that there are many people who rarely use calculus and physics simulations in their work, and who would never need to program even if they knew how.
But that does not mean learning those was useless - either to make me a more rounded person, or to pass me through a filter so that those who do want to contribute to society through chemistry actually discover their interests
School is a process for finding and educating those who will invent the next 100 years, and persuading the rest of us that we should support them.
The best way to teach problem solving skills is through computer science without a doubt. A smarter population will lead to more peace and prosperity for the human race.
Do I think that computer science can lead to a more peaceful and thoughtful society? Absolutely; therefore I think that it's crucial to teach it.
I don't think programming and learning to code is the "everyday problem solver," "more peaceful" person. I think what you're talking about is the phenomena that intellectuals tend to be more circumspect, perhaps less violent whatever. We don't need programming for that. We have a whole history of knowledge and art in philosophy, literature, other sciences, logic, mathematics etc. I fail to see how programming is special in that sense?
The average person, say in the US, may be more likely to be able to read than in the past but they do not tend to be less "ignorant" of many societal issues, cultures, etc (because you bring up peace and harmony) even thought we have educational tools long standing to solve that problem, much better than programming.
Honestly, I dispute this outright. I've been programming a long time, met many programmers and computer scientists; it does not seem like the ability to produce CRUD correlates in any real sense to a person being less likely to join the Tea Party.
You're viewing programming as this great society benefiting solution to social ills or something that makes you a better person; large swaths of people would just view it as an engineering and say "fine, sure, programming skills make it easier for you to get a job, great" but not anything that substantially creates peace in the world -- that's too much I think.
I wanted to add that Internet culture has facilitated many people to realize their most twisted fantasized this perhaps not good. Consider the desensitizing effects of r/spacedicks.
Or language wars fought with real weapons.
As does the U.S. in general, the NavLabs suffer from an increasingly severe shortage of trained replacement civilian personnel in science, technology, engineering, and mathematics (= STEM topics). The Navy’s problem is more severe than the nation’s because only U.S. citizens can work at NavLabs, and a great many U.S. STEM graduates are foreign nationals.
 The following is a report http://www.dtic.mil/dtic/tr/fulltext/u2/a503549.pdf.
When I was a kid and first learned about the Roman Empire and its fall, and of all the other historical empires that collapsed, one of the things that I wondered was how these people could be so "stupid". Of course, I didn't understand the day-to-day nuances involved. I saw these as personalized historic entities rather than complex patterns of behavior. I just couldn't grasp why such things would "allow" themselves to fall apart.
When I look at what has happened to the U.S. job market for scientists, researchers and academics and place that in the context of what we were as a society and what we've become... I get it. I now know what it is and what it looks like when a complex society "chooses" decline.
As a scientist, it is totally sad to see the state of research, and the standing scientists have in society. I don't understand why sane people would choose to get themselves into such career paths.
Coding is not a form of communication.
As for the career prospects of anyone fresh out of law school, the legal profession suffered a massive meltdown in 2008 and hasn't recovered.
As for legal work, the median starting salary for the top 14 schools (remember, there is a shortage of 'good' programmers) is still 160K+. How many good programmers start there? Sure lower-grade lawyers don't make much, but neither do lower-grade programmers. Facebook and Microsoft both have reasonably high hiring standards and are complaining about a shortage of people over their threshold. As for 'the rest of us', the average lawyer salary is higher than the average software engineer salary. There are a lot of low paid software engineers too, it's absurd to compare only the highest paid software engineers to all lawyers which it seems you tried to do.
The fact that you can see the average lawyer salary being higher than the average software engineer salary, and still claim there a meltdown in the former industry while the second is struggling for people, just shows how deeply ingrained our cultural perspective of what job markets and compensation for a given career 'should be', and how it skews our perspective away from the simple econ 101 supply and demand curves that tell the real story. Markets are a lot more honest than PR releases from billionare tech executives.
But on a side note I did like your blog post, I just think it's irrelevant to this conversation.
This is an important and under-emphasized point, which is elaborated here: http://www.slate.com/articles/business/moneybox/2012/05/face... . One problem with programming salaries is that so many programming jobs and opportunities are concentrated in areas with very expensive housing, such that salaries themselves have to go up to compensate.
Before 1976, this wasn't as big a problem as it is now: most places that experienced rapid growth could build housing stock in response to that growth. In 1976, however, the Supreme Court upheld a 9th District decision allowing the City of Petaluma to impose severe restrictions on construction (see 522 F.2d 897 if you're the sort of person who likes reading court decisions).
After that, more and more cities made construction harder and harder; now areas that have a geographic advantage in some industry often can't build sufficient housing to keep up with demand because of legal barriers.
But relatively few people connect these issues.
As a fairly senior developer, I just can't fathom this attitude. Working for a manager means you're low status or defeated? I want to work for a manager. Reward me and give me autonomy and respect due a valuable developer, sure, but please do all that management shit for me. In my mind (and at every single company I've ever worked at), the guys who actually build stuff are high status.
Most people have better things to do than programming, and don't want to invest the time to learn just because a news article said they should.
Most people have no idea what programming is and can't make that judgement for themselves—coding should be taught in high school, not because everyone will code but because people need to know what kind of opportunities exist. Let's be honest, a lot of high school classes were nearly useless in terms of how much you used what you learned, but they were useful because you learned you didn't want to become a chemist (or whatever).
You have a very optimistic view of high schools.
You don't agree that any student should be allowed to program on computers in the library? It seems like a security issue, whereas in a classroom students would be supervised by a computer science instructor. I'm not saying students need to be hand held, but schools really just don't know enough about programming to open it up. Web development, Flash, and Photoshop could be installed on library computers - they were on a few where I went. Otherwise I totally understand why school district IT would not allow it or fight against it.
Working for someone else will almost always end up like that. Programming is interesting in that you don't have to work for someone else, you can scratch your own itch. You just need to make something that is useful.
The implicit assumption is that "working for an established organization" must imply "working with miserably low levels of autonomy". I'm not sure that I agree.
If we negotiate better terms, we get more autonomy and more compensation. This will also give more people the financial means to start their own companies and get that level of autonomy.
The problem is that the exchange rate between capital/establishment and talent/effort is very unfavorable in comparison to what it could be.
And it is not only about autonomy. It sucks to work for somebody stupid, in general somebody that doesn't understand the nature of software development, probability, statistics, etc.
The difference is that when the law is code, and code law, we shall have a professional ethics body too. When programmers can do real damage and affect real lives they naturally gravitate to professional considered advice
Look at JPL or NASA, or a medical devices company.
The level of testing and reliability there is astounding - but so is the cost. And one day the engineers will find a way of capturing all that cost.
We need some traits of old-style professionalism: autonomy and the right of self-investment. A profession is a set of ethical rights and obligations that supersede managerial authority. That's what we need. http://michaelochurch.wordpress.com/2012/11/18/programmers-d...
and the BMA and AMA do quite well for there members.
Conversely, you don't need to be a decent programmer to get a CS degree. It's a shame that in the age of the internet and self-directed learning, degrees are so heavily weighted in the job market.
I'm not talking even knowing the algorithms, I mean a guy that writes list.contains(condition) in a loop and it brings the server to a halt because every call to contains runs through the entire list, when a hashset.contains(condition) would run in milliseconds.
* no I did not go to a top tier school and only have a CS Minor, but I did read the books to make sure I didn't have gaps in my knowledge. It's just rare in my experience to find people that know the basics who also claim they were self-taught. People get all pissed off if you ask them what a HashMap is, which should be the most basic thing in programming.
Some people just don't fit into the way academia works, and making silly judgments like yours about them does nothing but entrench the status quo.
Absolutely it can. I would even argue that is the best way to intro into programming, and even learning in general. You, of course, cannot stop after you have pasted it in. You have to think about why the author made the choices he made, but in doing that you will quickly build an intuition to be able to apply similar choices to entirely new problems. With a little experience, you won't even need to draw on other's code anymore.
The distinction you really seem to be making here is that self-taught programmers are able to enter the job market on day one, without that experience. While graduates have at least four years of experience under their belt before they are reasonably able to enter the job market. Of course the people with more experience are going to perform better. As more time passes, the skills between the groups will start to average out (with amazing and not-so-amazing people found in both groups).
There's one set of them who can write new programs, build systems, and learn technologies they aren't familiar with, but put them on a team of 30 people for a typical enterprise project, chugging along at 10 lines per day of code, and they'll be bored out of their minds.
There's another set that can't function outside of an IDE or design new systems, have no idea how anything actually works, but they can slog through corporate stuff and follow orders well enough to stay employed.
Both are called "programmers" but they're practically different jobs. It's easy for us in the first set to look down on the second, but maybe we should just admit that they're different task categories altogether.
This sounds like a case of a programmer using the wrong datatype, realizing it, and then being too lazy to fix it.
In the UK, we have the British Computer Society (BCS) who give accreditation. If your doing a CS corse without BCS accreditation everyone knows it will be a bit suspect.
However, the BCS you've probably never heard of, they aren't exactly at the forefront of anything, they are also quite stuck in the past.
In a world where dynamic or at the very least JIT'd languages are the norm, teaching Pascal or Delphi I really doubt is in the best interests of the students. Yet in 2003 that is what I was taught for first year.
So the idea that a CS graduate will be able to go in to software development immediately is a bit missleading. It's more a case of someone who has a CS degree will have demonstrated they have the aptitude to become a software dev.
tl,dr: its education, not training.
In my university, for example, I have not once ever heard about design patterns or ever seen different coding paradigms other than OOP. What I've learned is how to solve trivial or nuanced problems in poor ways in languages not really suited for it. In job interviews, I've only passed through because of things I've personally self-taught myself due to projects I've worked on. So what's the point of an education if you have to teach yourself most things?
If autonomy is the end-goal, start a company or go freelance.
Every company has a set of main goals that imply that development can't be completely autonomous, but hiring good developers is not just about code it's also about people with a vision and a sense of purpose for your product. Take the way Github works for example: at the end of the day their main goal is an accessible hosted interface to git, to make git version control easier and ubiquitous; nevertheless having that main goal does not stop their developers from creating new features (say for example a desktop client) that make the product better though it may or may not directly translate to their main goal.
If you have a company that develops software and your developers have the autonomy to work on things that they actually believe will further increase the companies value (be it an interface change, bug fixes, or the refactoring of bad code) you will most definitely have a better result than if you make people work on things that might not be their forte or that are uninteresting to them.
Now I don't mean that people should have a complete free reign of the product, as some things are too important to forgo because no one wants to do them, but giving developers the chance to work on things they actually believe in as opposed to things that might not translate to creating value in their minds can go a long way towards good morale and retention, and un-doublty a better product because of it.
* mediocre compensation, especially considering the horrific costs of living in the places with the strongest economies.
* low autonomy, respect, and opportunity for advancement due to a scope-of-work defined to commoditize rather than grow engineering talent.
* low job security or transfer opportunity, which is the main reason for working for a large organization.
I believe that this arrangement exists because most software engineers lack the skills to negotiate for better terms.
Realistically, we need to improve organizational and independent employment at the same time. Market dynamics will corrupt one if the other is bad. Fixing one while giving up on the other is not a workable strategy.
Second, if programmers take the decision-making roles back from smooth-talking executives, that means that smarter and more competent people will be calling the shots and society will run more efficiently.
I disagree. The self-motivated path may be "more productive" for that one person, but it does nothing to guarantee returns or value for the larger organization.
Any employee should leave a company if they believe that their executive team is consistently shown to be inept.
I don't think you've been in software for very long. Most software is terrible. Code and software quality are serious issues. Unmanaged complexity costs companies millions of dollars. This is a direct result of the low average competence of software engineers, which follows from their inability to get good projects on which they would improve.
If engineers had better working terms, there would be a much larger number of decent software engineers out there, and the productivity of the software industry would improve massively.
Any employee should leave a company if they believe that their executive team is consistently shown to be inept.
Bad idea. 95 percent of companies have executive teams that are either incompetent or malignant. If you have a bad immediate manager, leaving is a good idea. Leaving a company because it has worthless executives is not, because that's the norm. You'll just end up job hopping in the search for something incredibly rare. Better is to assume that most executives are harmful and minimize your career exposure to their incompetence and malice.
If the executives aren't aware of these facts, then it's a communication error. If they are ignoring the facts then there's little chance they would entertain a push for autonomy.
> ... You'll just end up job hopping in the search for something incredibly rare. Better is to assume that most executives are harmful and minimize your career exposure to their incompetence and malice.
Blame flows downhill, my friend. By accepting autonomy you're opening yourself to the risk of those actions. It's quite the opposite to minimization.
Conceptually, I like your ideas. Empowering smart people is rarely a bad decision. But attempting to change from within an existing behemoth, with their entrenched positions, is a far-fetched dream.
As someone who learned to code informally and is now looking for their first real software development job, I worry about this most.
You need one to get a job, though. If not now, in twenty years when you're old in an ageist industry.
Granted I'm 20 and still in school, but just being a CS major doesn't make someone a great programmer. I like to think that employers care about projects you've worked on as that is the best way to see a true programmers talents.
Because of all this social programming, there are few who will admit that modern undergraduate programs, and often their graduate counterparts, are a horrendously inefficient, slow bureaucracy that provides a form of pseudo-independence for developing adults, cater classes to the lowest common denominator in order to pass more students, and occasionally have desirable network-building properties. But that's the reality.
We tie up adult identity in degrees very, very closely in our culture. Someone who never graduated college (or worse, high school) is automatically considered lower class by many. It is considered an essential of both personal and professional development in the white-collar world. Their whole lives people are told, "Go to college so you can get a good job." Is it any wonder those who've "paid their dues" and gone through these motions feel entitled to employment, even if they have no commercially viable skillset (and, this is critical to understand: most don't)? It's becoming a large social issue, but no one is willing to admit the real causes.
I don't include 'education' on my resume, and I don't mention it to people. I can't recall the last time I was asked. Everyone seems to assume I have a degree because everyone else in the field has one.
I was an econ major and learned html/css in a few short weeks pretty darn well. At least enough to land me a web developer position with a rising startup. I have decided to change my major to a more technical one purely because I enjoy learning both HOW to program and what I can do with it--which I'm learning is just about anything :)
I'm emphatically not saying this, I'm saying that a degree is good for employment. Many places will outright refuse to hire people without at least a BA in computer science (or computer engineering, I guess? I am not aware of the related fields).
Thankfully, investors care more about the end code than degrees.
I have a few relatives who are well versed in computers but cannot find employment. I'm sure they would be reassured by your comment.
I have no degree, and have never gone more than a month without a job offer while actively looking for a position. One time it took two months to find a position with acceptable compensation, but I'd received a low-ball offer in the first month.
Edit : essentially, you just re-defined bar without providing any real context.
Taken a step further (and perhaps in a different job market), someone might say "oh, well being a valuable programmer isn't the same as being a Rockstar programmer..."
The key lies in the word "valuable", which is completely situational and vague, whereas "programmer" is not.
I do Python/Django work and I have 3 years of experience. I have a GitHub profile which I show when applying for jobs and my profile shows that I've made 359 contributions in the last year. I have a LinkedIn profile through which details the technologies I use and the experience I have.
Since the start of the year, I think I've been contacted by 10 recruiters with job proposals. I chose to work remotely though, with clients outside of my country.
Namely, that you can get a job "just fine" if you're a programmer of sufficient talent and knowledge to be able to be a net-positive influence on a company's financials.
YMMW, but that's a relatively high bar. Higher, at least, than the ease that "just fine" (IMHO) implies.
It's certainly possible, but non-trivial.
I dropped out of college because I was learning very little, at a slow pace, and mostly in areas not related to my major. I love to learn and work on interesting projects, but I've never been the type to do things just because an employer/school/society expects me to. And I've definitely had to pay for it in many ways...
p.s - I did not read your post.