What Is Code?
bloomberg.com
bloomberg.com
[0] http://www.amazon.com/Soul-New-Machine-Tracy-Kidder/dp/03164...
the content is quite good but the layout, colour, animations etc. are a mess.
Isn't that a seriously mind-bendy kind of article to appear on Bloomberg? Also, isn't it very cool that a whole class of people who may not know a thing about coding (but may be interested) might get to know something about the craft and culture?
And it's presented in a very fun, off-kilter sort of way. That must have been a hell of a lot of work. I actually skimmed the second half and the little robot told me I read it all in 16 minutes which was not possible and who was I kidding!
I had a thought the other day while browsing Etsy. If software really is a craft, could I fashion a bespoke software creation and sell it on Etsy? I know this might seem like a non sequitur. But, you know, what is code? Why couldn't I do something like that?
It's such a strange but vital profession. (Seriously, I would have thought there are a _lot_ more than 11,000,000 professional coders worldwide) and one that is still coming to terms with itself. Inspiring. Note to self, do not think outside the box, code your way out of the box.
There's tindie (etsy for electronics), but due to the infinitely cloneable nature of code giving it away works much better than trying to sell it for tiny amounts. In someways the demoscene is this area of software craft for the sake of it.
And I agree with you about the Demoscene. Very much one off creations which is more what I had in mind. I'm imagining extending this idea to software objects that people would like to own, that was personalised to them, that had a strong crafting element, and so on. The reason I'm having trouble articulating it is because I don't think the category of thing exists (yet?)
This adds another dimension to the content by including the open source community such that the subject matter (coders) can influence (and improve!) their article's content.
As an outsider, I just love it when I read something presented as an introductory text and I'm confronted with an elaborate series of self-serving in-jokes that go "ha ha ha, ha ha ha, you don't know what I'm talking about!"
Are you sure that's what it's supposed to be? I mean, the author didn't supply unit tests, all we have to go on is the specification, which was that the editor of BusinessWeek asked Paul Ford "Can you tell me what code is," and Paul Ford said "No", and instead wrote this.
I've sent this to him -- he's about 1/4 of the way through and thoroughly enjoying it.
This is a very fun read that's worth leafing through
<First guy> June 3, 2015 at 10:12 am I think software developers like to impress people with how many lines of code they can write.
<Second guy> June 3, 2015 at 3:31 pm That is not true. A good day is when you leave the office with more powerful software, but fewer lines of code.
<First guy> June 4, 2015 at 4:31 am So why is software always getting bigger ? Is it because the marketing people want to add new features all the time ? Does this even apply to free software like browsers and email clients ?
-----
Personally, I like writing less code, or reducing code to less code. Less to think about.
No coding at all required.
The more I get involved in open source the more I think most code bloat is due to people needing their egos validated by getting a commit into a project, regardless of whether the commit is all that useful or not.
I then spent the next year cutting huge chunks of crap out of a C++ application that I had inherited.
Was a most satisfying experience.
I still believe. Someday, somewhere, something incredible will emerge for the right-brained bourgeoisie and literati.
Perhaps the "right-brained" are already very good at programming other people, working with faulty, non-deterministic, somewhat chaotic computing environments where "left-brained" patterns of software development fall short....
Basically, I want a computer as smart as a good junior dev so I can just yell my brilliant ideas at it, and it will do the dirty work for me.
Somewhat similarly, entheogens do not really give you profound ideas so much as the feeling that the ideas you are contemplating are profound.
There is, of course, nothing wrong with being junior. But the rate that requirements are misinterpreted even by intelligent humans is, I think, a fundamental reason why programming isn't doable by the masses yet.
It's not because computers are hard, it's because knowing what we actually specifically want them to do is.
This suggests that current, important and well-meaning attempts to get non-programmers to meet code head-on as code may be misguided. Programming is generally easier if you're not thinking about how much it isn't something you do.
There's something about calling it programming that turns certain people off. I remember a story about a freshman in a physical mechanics class that complained about all the MATLAB code they had to write. The professors retort was that they were free to use a slide rule instead, and that particular freshman stopped complaining.
But you're right. The mere act of calling it programming is somehow a problem. It's as if doing programming pigeonholes you into being a programmer until the end of days.
There are some words that carry with them unshedable connotations that people want to get away from so strongly that they will call themselves something else at the first possible instant. "Programmer" is one of them.
"Poet" is another. No one makes money from poetry because as soon as a poet makes money they are something else: a musician, a performer, a copy-writer, whatever.
Just don't call them a "poet", because "poets" are poor, sad people with no future, just as "programmers" are neckbearded nerdboys who smell bad, and no matter how many programmers (or poets) fail to live up to those stereotypes people will continue to impose them on reality come hell or high water.
Any specialist user willing to invest some time in learning their tools can do this. A culture develops around it.
And replying to parent: those efforts around teaching 'civilians' to code are probably misguided. The investment needs to be in adding scripting and programmability into existing line of business tool, not on encouraging people to sit in front of an isolated REPL disconnected from any business value or context.
The downside is, when all you have are Excel sheets, everything looks like rows and columns (and not e.g. objects with behaviors). If Excel had more robust import/export mechanisms that normal users could understand (e.g. built-in REST client with JSON + XML serializers + many database adapters w/ lots of helpful wizards or tools to guide you), it'd be way more powerful. Then again, if someone is at the point where they'd be able to look at some JSON and compare it with their spreadsheet and be able to describe the mappings, they're possibly better off going to some training sessions on ${your favorite programming language} to learn how to do this the easy way.
Ideally, an organization comes to understand that Excel is a fantastic tool at the frontier where the business needs to adapt rapidly, but once a process is fixed, replacing it with a fixed system is worth the tradeoff in reduced operational risk.
To your second para., much of that falls to internal apps to provide decent RESTful APIs across their systems. Some companies are doing this, in the process getting to a point where the Excel frontier is just analyzing and reporting on data, not acting as a source in its own right. Then you have traceability for every data point in the organization, and you're in a pretty sweet spot operationally.
It seems more like a non-functional declarative vm to me.
Excel isn't much different in my view: most people are only using a very limited set of predefined tools to get a job done. Often badly: it is well known that there are many bugs in important, company critical Excel sheets. Excel seems like coding because it is mostly used to perform the fundamental mathematical operations we all associate with coding. But if that is coding, then so is constructing a Rube-Goldberg machine for a specific task from the parts you happen to have available. A nice exercise in problem solving under constraints. Which certainly has something in common with coding. But that doesn't make it coding.
I don't think it matters if the tools are predefined - what matters is that they can be used together to build a system greater than the sum of it's parts.
I think it can matter a lot whether the tools are predefined, because the exact nature of those predefined tools determines whether they are easily composed into something greater than the sum of its parts. You need iron ore, wood and a forge to construct a different hammer. Of course you can cobble something hammer-like together with the tools in your toolbox at home, but it won't be like the hammer forged afresh from more fundamental parts better suited for that purpose.
Excel is much closer to traditional programming: it's basically a purely functional language (absent VBA), but instead of a linear description of the program in a text file, you're in effect embedding functional code inside a virtual machine's memory.
EDIT: I suppose an important question about Photoshop is, can you do computation in it?
Sadly, when I point this out professional programmers often go 'pffft - that's not real programmming' as if being knees deep in stack traces and gigantic code bases was a something with intrinsic value.
Photoshop is more like a REPL tied to an image-processing library than it is a programming language.
It probably doesn't help to think about it that way when using Photoshop, but it might be a useful mental model for developing Photoshop, or as an example of how a general visual programming language UI might work. Importantly, Photoshop does not give you a bunch of little boxes with arrows crisscrossing everywhere like all the clumsy and disappointing visual programming experiments I've seen.
Maybe "visual programming" is like "AI". Whenever you make something that actually works, it goes by some other name.
I think to be programming, there has to be some kind "logic" (conditionals, mathematical functions, loops, etc.) embedded in the structure (cf. https://en.wikipedia.org/wiki/Jacquard_loom) and I'm not sure Photoshop qualifies.
I will concede that "programming," in the sense of "I've been programming for the last couple hours" or "He isn't very good at programming" implies the use of a Turing complete language. Photoshop would probably fail here, along with more programmer-y things like writing html.
https://www.blackmagicdesign.com/ca/products/fusion
It's like After Effects meets Simulink.
[1]: https://helpx.adobe.com/photoshop/using/creating-data-driven...
Indeed, Lego Mindstorms is based on a similar principle, and it's used for programming robots!
I'm working on a longer essay but that's the short version.
Programming isn't so much about the "code" or syntax; it's semantics and intent aligned with the machine.
If you can express your problem clearly then the program practically writes itself.
I've seen it happen in front of my own eyes!
Been in "IT" for a few decades, I've seen it happen in front of my own eyes time and time again.
The only self-help tool that has lasted so far has been the spreadsheet, and even that has gone horribly off the rails in many companies.
WYSIWYG web editors, divorce 'kits', many DIY 'kits' for home improvement, etc. Something inevitably goes wrong and the lawyer / contractor wonders just why the hell the client didn't just call a professional in the first place.
Yes, a real quantum computer. As long as we're dealing with 1's and 0's, there's an insurmountable barrier for those who would get creative with computing.
I still believe. Someday, somewhere, something incredible will emerge for the right-brained bourgeoisie and literati.
I don't see it ever happening: because the bar of expectations rises at the same rate at which the tools improve.For example, think about what the NYTimes website looked like in February 2000:
http://web.archive.org/web/19990202013312/http://www3.nytimes.com/
That probably took millions of dollars and a team of engineers back in the 2000. In 2015, a reasonably computer-literate person could do something close to that with SquareSpace or Wordpress.com in probably.... a week?[1]But that site would never pass muster in 2015. Something 10x (if not 100x) more complex is required for NYTimes.com in 2015, plus various native apps, plus a subscription service, and so forth. So you still need a team of engineers...
____ [1] I'm talking about the act of putting the articles onto a website, not reporting and writing the articles, obviously.
I've seen non developers try to write specs in whichever format they like: word, excel, drawings, hand written, in speech, mockup tools, anything. They decide exactly how they want to express their idea without any constraints. And yet, they always fail.
There are always too many edge cases they do not think of. They only cover the "happy path" and quite often not even that. Just take the email conversation from the article as example, they didnt even touch the subject of implementation and it was already jibberish even for a developer. You need someone to actually sit down and squint their eyes over something, do research and run some test cases for a few hours before these emerge. Once you start doing this you are already by defition a software developer.
Oh, and why does bloomberg.com want to use my web cam?
To capture your photo in the certificate of completion.
I downloaded my certificate. Might put it on my resume. Evidence of willpower if nothing else. :)
This is my own, personal, incomplete work in progress in that vein: http://www.leannotes.com/
A story like this is probably dangerous - it touches on so many ideas everyone will find something to gripe with, and it's hard to make a comprehensive and consistent story.
The last time I read something that so awesomely bridged high level abstractions and low-level implementations with a human touch was Godel, Escher, Bach (albeit with a very different feel). Well done.
If you've read GEB and do software development, what actually did you find interesting and beautiful in the article? I've just finished reading the whole piece and I don't think I've learned much at all. Presumably as someone who already knows programming and theoretical CS I'm not the target audience, but then I'm also surprised why this has so many upvotes here on HN.
I get the GP's point about this being reminiscent of GEB, not in the sense that it covers the same topics or is at the same 'level', but in that it describes an intangible idea by approaching it from different angles and describing that same core concept from the shadow it casts in different directions. In GEB that core concept of self-reference was tackled from multiple perspectives so that an image of this common theme emerges as you read these different views onto it. Similarly, this article tries to conjure an image of 'code' as a cultural artifact, by portraying the shapes it casts in different directions - on the people who create it, the people who have to fund it, the tools and artifacts it generates. And it does so, like GEB, with wit and intelligence.
Imagine an auto company VP who says "I don't know anything about engines and drivetrains and all that technical stuff. All I know is that when you guys are in a meeting talking about your variable valve timing system, all I smell is money burning!"
That would not be acceptable. Yet, here we are, over 30 years after the original IBM PC was released, and there's still a corner-office audience for "what is a computer?"
Then again, I'm reminded of a boss I used to have who would ask me to fix the shipping calculator on our web server, then ten minutes later he would poke his head in the door and tell me to "quit playing on the goddamn computer and get some work done!" He didn't realize that "working on the web server" is done at a workstation, not physically taking the server (remotely hosted of course) apart and putting it back together. All he knew was the customers were complaining about the shopping cart module not calculating shipping correctly.
The page I linked spells it out in pretty plain terms. In short: being in the right place (in terms of general business experience and family connections) at the right time.
Who is supposed to teach people what code is? Our schools? Who with a CS degree and programming experience would willfully choose to teach in the USA's education system?
Or maybe the companies who make all their money from code? I think not- it wouldn't help the economic position of Apple, Google, FB, or Microsoft if everyone knew what code is and how it works. It strengthens the tech economy's stranglehold on society when code is treated as something inscrutable.
So there's really very few resources for people- even educated, successful, technically literate folk- to grok "what is code?"
Many coders would do well to read a similar article, if there was one, called, "What is Society?"
Grade school teachers aren't expected to be specialists in the field they teach. They're expected to be specialists in teaching. Usually they have a bachelors (or masters) in education and maybe another degree, but it may or may not be the thing they teach (if they even teach only one thing at all).
To put it another way, this is a bit like asking what physicists would willingly teach in the USA's education system? The answer is obviously not very many, but that's beside the point. Physics still gets taught.
Yeah, and this breaks down pretty fast, particularly when it comes to teaching the stuff you can't easily hand wave, e.g. science. Even at the middle/high school level, where teachers are supposed to have studied topic they teach at the undergraduate level in some capacity, you find plenty of foreign language teachers who are terrible speakers of the language they teach, or math teachers who basically have the same level of math as their students, with the distinction that they have access to the answers for the exercises they give. I spent some time in a US state university for grad school, and the level of some students who majored in education and later went on to teach was abysmal. It's hard to tell if the hegemony of standardized testing is the root or a symptom of the problem, but the overall picture is bleak.
This is precisely why if we want a great education system, we need to incentivize people who are practicing professionals first to then go teach. My best teachers in high school all shared those traits: a historian who had spent many years doing field research teaching history/geography, a geologist who was also a researcher for a major lab teaching natural sciences, etc.
Not everyone is made for teaching, but we as a society need to become much better at encouraging and enabling the people who enjoy it to teach in parallel to their professional activity (I would happily teach math from 8-10am before my day job 2-3 days a week if there was the structure for it.).
The people who want to become teachers just because they like kids but don't have any deep knowledge/understanding of any particular subject can teach kindergarten.
In every European country I've lived in schools are generally split into primary and secondary. Primary school teachers are general educators whose primary skill is teaching but who do not need advanced knowledge in any particular subject. They usually have the same class all day, which gives them a deep insight into students' progrewss (although from a kid's point of view, if you don't get on with your teacher then school may suck). In secondary school teachers may teach more than one subject but they're required to have studied their primary subject at university and done some additional study in other subjects they teach, as well as additional study in educational methods. So your math teacher has a math degree, your history teacher a history degree and so on. People who plan to teach usually develop themselves academically in two subjects, sometimes three if they're closely related or you have special experience. For example: http://www.teachingcouncil.ie/_fileupload/Registration/Gener...
California seems to be moving towards this model too: http://www.ctc.ca.gov/credentials/leaflets/cl560c.pdf
The downside of this is that if a particular teacher is sick and another has to take the class as a substitute, the substitute teacher just babysits, or comes into class with a homework assignment from the sick teacher that should be doable during the class period. The upside is that in general students are keenly aware that teachers know what they're talking about and are considerably more expert in the subject than would be possible using the assigned textbooks.
I've ranted on HN before about how destructive of educational ends the practice of using 'Teacher's Editions of textbooks with scripts and answer keys is. It degrades teaching to a branch of bullshit artistry, and students who take a subject seriously can quickly detect a lack of true expertise.
Obviously this short comment isn't meant as an accurate descriptor of the whole state of the US education system, just the legacy of the non-specialization referred to in the grandparent comment.
As someone who went to school in the US, no, you're wrong.
While 'grade school' often refers to elementary school, surely you are aware of people's tendency to talk about 'k-12' education in a lump and the lax academic requirements for substitute teaching in many school districts even at high school level.
You are simply factually incorrect about your assertion that higher grades are run the same as lower grades. I don't particularly care about your inability to accept that, but I do find it surprising that you would assert your inexperienced viewpoint is correct.
Also your insult was not missed. Thank you for that, it verifies to me that you have nothing of import to say.
1-6 (or 7 in some places) is taught single teacher who probably majored in education with the whole class (with maybe a once a week art or muisc class taught by a specialist if the school is well funded).
7 or 8 through 12th is taught with 6-8 subjects a day (or in some places 3-4 subjects with alternating days having different subjects) with teachers who teach a smaller number of subjects. At HS level, in many places in the US it is expected that the teacher will have a Bachelors related to the subject they are teaching.
The general consensus is that California school systems are poor, and what little I've seen of them seems to hold true: I grew up in the Northeast, and communities that are comparably affluent in Southern California to there are much worse off school wise. The most common point to blame seems to be Prop 13[1], but I also notice that California has many more decisions centralized, and does also tend to have more parents who are non-native English speakers, so I don't know what is to blame.
1: http://en.wikipedia.org/wiki/California_Proposition_13_%2819...
Also the TONS thing is kind of bad, because it becomes a lot harder for the layperson to filter out the bad resources from the good.
There are two big problems for would-be programmers: there's a shortage of obvious standards on architecture/program sturcture (not least because it's hard to prove mathematically which structures are optimal), and endlessly proliferating options. For example, betweeen HTML 5, CSS, and JS, it's quite complex to put together a web page these days.
I mean look at this page on the DOM: https://developer.mozilla.org/en-US/docs/Web/API/Document_Ob... there are hundreds of subtopics, and it's not obvious which ones are most important. The Introductory page on the DOM is less-then-inviting to a non-programmer, not least because it presumes code as the optimal medium for production, when most people would rather work through a GUI and have the computer take care of the abstractions.
I wish sometimes that programmers were forced to decompose their latest and greatest algorithms into electronic circuit diagrams or diagrams or something, to remind them that translating functionality between different paradigms is a Hard Problem and that ,amy people do not like all the typing and syntactical overhead of text-based programming.
There was a thread a while back where software developers told me I was unreasonable to expect them to know who the vice president of the country they lived in was. I feel you here a whole bunch.
It is absolutely unreasonable. The average person has no clue who the vice president happens to be ... so why should software developers?
We can complain about how clueless average people are, sure, but there's no reason to apply a higher standard to software developers.
Most smart, educated people I know can name the vice president of the United States, and I don't even live in the US. I think it's completely unreasonable for someone not to know who the vice president of the country they live in is.
By and large, knowing the vice president's name will not cause any appreciable dip or rise in how much money a company makes.
So, in the context of 'why is it important for business people who's livelihoods partially depend on code to know what code is?' not knowing what programmers do is worse than not knowing the vice president's name
Lots of people hate politics and really avoid any study of it.
So the majority of Americans do indeed know who the vice president is. (Although yes, a large minority don't.)
I stand by my assertion that the majority of Americans have no clue who Biden is and I swear to you, I wish I didn't either. The whole political arena is absolutely revolting and I'm not surprised the majority of people are apathetic to it.
> Although the majority passed, more than a third - 38 per cent - failed,
Daily Mail is fucking useless.
We, as a society, should have started integrating computational thinking (Wing, 2006) as a core competency in the k-12 curriculum from the late 1980s onwards. We didn't.
anecdote
In 1991, I was in 5th grade, I saw the first computer enter the classroom in my primary school. It wasn't used but for some remedial mathematics training for a students or two and I believe the teacher did a computer course with it.
In 2010 I became a high school computer science teacher. There were three computer rooms (about 30 computers each) for the whole school (of about 1500 students) running windows XP + IE 6. Besides my class, the computer rooms were mostly used for making reports and "searching for information". Some departments did have specialized software installed (most of which came with the text books), but used it sparingly at best. On top of that, these software was mostly simple, inflexible, mostly non-interactive, non-collaborative, and "pre-fab" instructional materials. Often this software was not much more than a "digitized" version of parts of the text book with some animations, games, and procedural trainers mixed in.
In 2015 my teenager will start High School in a small, rural, school district and each student has a Chromebook. No, I don't know what they will be used for besides googling information, but times are changing.
I emphasized small and rural for a reason.
It's really amazing stuff. I wish these sort of programs existed in the US back when I was in elementary school... back then, we were lucky if we got 30 minutes a week to play with Claris Works in the school's only computer lab.
- are teachers able to choose, remix, adapt, or make new "computational" instructional materials like they are able to do with conventional instructional materials? (Stencilling and xeroxing for the win :-)
- are computers only used as supporting tools (i.e., typewriter, encyclopedia, drawing board, ...) or is computational thinking integral part of the curriculum?
- is there software like programming tools, CAS (such as maxima, or matlab, or mathematica), CAD, and other configurable and programmable professional tools available? (and will they be used beyond a module of two weeks here or there?)
- has the (core) curriculum changed at al or are we still teaching topics like it is 1982? Computer technology makes it possible for students to tackle complex authentic problems instead of "school problems" (Death to linearity! Away with nice round numbers!)
I graduated college in 2012 and I learned what css was and why it was better. I took an intro to java class. Learned some stuff volunteering for NPOs doing website work. When I graduated I knew I wanted to do something in IT but not program. Now I am a software dev.
Turns out its easy to get a job and teach yourself how to code when nobody understands what coding is.
The day Netscape 1.0 came out, the teacher had us all download it from a few of CDs passed around had burned after downloading it on the class modem. The classroom was networked (coax) and figured out how to get Trumpet Winsock to work over the next few weeks to share the network with the computer with the modem. By 1996 we had a frame relay connection.
There was no curriculum other than what these two teachers could envision and sell to the achool board. Pretty thankful for that.
But this:
"it wouldn't help the economic position of Apple, Google, FB, or Microsoft if everyone knew what code is and how it works. It strengthens the tech economy's stranglehold on society when code is treated as something inscrutable."
Is just cynical. Tech companies aren't so fragile as to depend on general ignorance among the human population. If more people understood code, these companies could create more code. I think you point to an underlying misconception that some how technology is just a barrier to entry, and doesn't provide intrinsic value. But I do not believe this to be true.
'But no one told me I needed to know this' stops being an excuse as of adulthood, if not earlier. Anyone who cares what coding is only needs curiosity and an internet connection, the web is full of introductory material for almost every level from almost every angle. If a professional in the current world doesn't know 'what coding is', they just don't care.
The VP is not in charge of a software company. Presumably some sort of widget/manufacturing operation ("cycle reduction"), so it is unfair to accuse him of not knowing what is going on in IT (at the level of engines/drivetrains for an auto company).
There's a technical audience for "what is sales?", and that's thousands of years old. Generalists, especially good generalists, are rare.
Why should the VP of Human Resources need to know how a drivetrain works? Or the CTO? Or the CFO?
They are experts in their area focus. It's ridiculous to expect every manager to understand everything about their business. Would you expect the CTO of Starbucks to be able to tell you how all of their drinks are made?
I wouldn't. And I wouldn't care if they could.
In general, a good executive doesn't need to know the minutiae. They need to know how to motivate people, how to keep projects on track, how to recognize talent, how to delegate, how to budget, how to distill information for other executives, etc.
Sure, knowing the minutiae usually helps. It's easier to sniff out all the BS people feed you, etc. But it's far from the most important knowledge and skills a great leader needs.
I've only skimmed the article so far, but the part that stuck out to me was this (technical manager talking to the VP): “My people are split on platform,” he continues. “Some want to use Drupal 7 and make it work with Magento—which is still PHP.” He frowns. “The other option is just doing the back end in Node.js with Backbone in front.”
Now, that's an example of a terrible trait for an executive. TMitTB clearly has very little ability to communicate with people outside of his area of expertise. The ability to convey complex ideas simply is crucial. Why would a non-technical executive care about the framework you're using? That's asinine. Worrying about the implementation is TMitTB's job. When meeting with the VP, TMitTB should talk about the business impact of options. This option is cheapest but doesn't give us these features that the marketing department says they must have. This option is best, but it's much more expensive to hire developers with those skills right now.
I don't think he even knows what the business impacts are. TMitTB is just a tech guy who works for the new CTO. Presumably, the CTO (being an executive in charge of technology) can speak both the language of tech and the language of business and could make a business case to the VP, in terms he understands, as to why the company needs the new software. The CTO should not have sent her tech guy to talk to the VP.
Yet at the end of all this, "TMitTB will get his bonus."
WHAT!?
What's the message here? Big companies are hard and inefficient places? Programmers and techies are confusing and dress funny?
Other than being technically illiterate, the VP seems to be the hero of this story. Not recognized as such, of course ("Money? Hours? Due date? Value? Bah!").
The CTO ("who has several projects on roughly the same footing [e.g., horribly mismanged] scattered across the organization") and TMitTB should have been fired long before the 30,000 words came to a close.
If he really knows his shit, he should be expected to break his technical insight down into layman-friendly terms.
Hell, we're expecting just that from our doctors all the time.
A lot of people find themselves in this role, people who specialize in other fields but still need to interact with developers because software is eating the world, but more quickly it's eating their role.
The company sells products. The website with a shopping cart is not the primary purpose of the company.
The company may in fact sell automobiles.
As someone who got their start on DOS and BASIC back in the 80s, I say you raise a pretty good point. There are so few languages depicted in this web brochure that it does not illuminate anything.
So many people stopped learning in the 80s that the 50s are starting to catch up with them again.
This is the stuff that cardboard box forts are made of.
Maybe instead of ridiculing the majority of people who don't understand what we do, we should celebrate a piece like this that makes an effort to educate. Maybe instead of lamenting their ignorance, we should commend the VPs and everyone else with enough curiosity about code to make it through this behemoth of an article.
I met a CIO of a large insurance company who didn't know what Python was.
I know a senior banker and educator who struggles with the basics of Excel and Word. (Yes, there are still people out there who are used to the days when secretaries did all the work.)
I knew an IT exec at a large consumer products company who didn't like using computers at all.
His job isn't to know about drivetrains and engines and stuff. His job is to manage products, cashflow, audit requirements, stock market regulations, and marketing. That's the stuff he has to deal with day to day.
Also, the whole article is written as if it were 1997. The graphic design is rather HotWired-like, in a world where they had the tools we have now.
At least, I know I would be lost and would greatly appreciate a guide like this.
After auditing the software of at least 20 different startups, I'd have to say there will always be people in positions of power who know nothing. Just look at our politicians.
In the article, the VP worked at a company that sold things on the internet. The things they produced were their primary function; internet platform development is a secondary function, much like marketing, hiring, business development etc etc.
So the theoretical VP's core competency should not have been software dev, or even technology - that's what CTOs and technical leads are for. In fact his core competency probably wasn't product development anymore, if it ever was. He was a manager, and his role was managing resources within the company to optimise their primary function.
Hence the disconnect, and hence why articles like this (and audiences for them) exist.
Three generations of my dad's side of the family were in the print industry: everything from printing Vogue and Playboy to fancy art books to dull but well-paid corporate stuff (annual reports, mergers and stock issue documents—500 page books that the SEC make you print filled with legalese that nobody reads).
Most people working in big print companies know nothing about print. They don't know about how paper works or how ink works. They have no understanding of how colour works or why you can't print certain colours on certain materials, or how long certain types of print work takes. Not at the junior level and not at the management level.
Hell, if you took half the people in a big print management company and asked them to explain the basics of offset printing, they couldn't give you a "lead paragraph of Wikipedia"-level description. And that technology has been around since 1875.
For all but a small set of technical and management roles, a lot of businesses are far less interested in technical know-how than "soft skills". In a shocking number of places, the ability to build a tower out of rolled up newspaper and sticky tape in a team building exercise is valued over an ability to know the details of how the industry or its core technologies work.
Well, the audience most certainly does exist whether it should or not. The thing to think about is what to do about that.
And too, even the open spaces. For Minecraft reminds you that a block can occupy any space. Indeed, an open space is a set of blocks whose block type is "open", which makes it both transparent to light sent from neighboring blocks, as well as not blocking player movement.
Oh, I don't know why you're not there I give you my love, but you don't care So what is right and what is wrong Gimme a sign
---
Oh, I don't know, what can I do What else can I say, it's up to you I know we're one, just me and you I can't go on
source: http://www.lyricsondemand.com/onehitwonders/whatislovelyrics...
That's why I crush it. I crush code.
[1]: http://en.wikipedia.org/wiki/List_of_the_largest_software_co...
(My intention is not to bikeshed over who is or isn't in the "Software & Programming" industry or specific ranking, but to convey a sense of scale)
The whole post is just a stream of consciousness brain dump that a layman would never understand. I believe it's possible to explain these things without circular reasoning.
Granted, I think Ford expanded the domain of his question a little further than he needed to, for the sake of what looks to be fun. And I think he occasionally picks a piece of jargon where a clearer, more ordinary word would have done just as well—though I'm not in the mood to dive back into the article to find a case.
The computer, for most people, is a tool. A means to an entirely unrelated end.
Anyone else experiencing that or is it just my laptop running wild?
Whatever effects they're running, they did an impressive job with graceful degradation.
Is there a way of doing this on web pages or is it really still just callbacks for mouse motion?
How meta.
> You know what, though? Cobol has a great data-description language. If you spend a lot of time formatting dates and currency, and so forth, it’s got you. (If you’re curious, search for “Cobol Picture clause.”)
https://www.google.com/search?q=%E2%80%9CCobol+Picture+claus...
What am I supposed to be looking at here?
As a writer, it's both inspiring ("look how amazing nerdy non-fiction can be!") and soul-crushing ("look how much better someone else is at writing!"). I try to focus on the former, but, man, he really makes the rest of us look like Celene Dion showing up at your dive bar's shitty karaoke night.
There are so many ways to mute my computer, I wouldn't even know how to list them all. But on top of the list I would start with the volume keys on the keyboard and then with the volume panel in the menubar and then with the audio panel of the system preferences. Towards the far end of the list I would cut the wires to the speakers.
http://fieldguide.gizmodo.com/mute-noisy-tabs-in-google-chro...
Type this in to the address bar: chrome://flags/#enable-tab-audio-muting
Then click Enable under "Enable tab audio muting UI control."
chrome://flags/#enable-tab-audio-muting
But then I see the interactive circuit simulation and think "Fuck it, who cares, this is awesome!". Designing circuits is one of those things that, if I were a self-learned coder instead of a comp. eng major, I would've never delved into...yet learning how to build an adder circuit and getting an appreciation of the most basic building block of computation (and how surprisingly complex it is to just add 1s and 0s) is a profound lesson that I think is essential for me, personally, to really grok programming. All the sections about culture and conferences and etc. are a little bit off-field for me...it's not that I don't think that code and life and human thought and behavior aren't intertwined... * I just think the discussion about conferences reads as if the author doesn't realize that all disciplines spawn conferences and conferences culture. There's nothing particularly unique about code conferences. Not the sexism, not even the nerdiness.
I would love to see the OP's editor respond in a not-quite-as-length essay. What did they learn about code after reading the piece that they didn't understand before?
edit: * I'm emphatically not arguing "Oh but everyone does conferences shittily so tech conferences shouldn't be shamed". Just that having it in this "What is Code" essay makes it seem as if it's a notable "feature" of programming...but that understates the problem by an order of magnitude. Sadly, it's a feature in most every discipline, and the inherent feature is the gender imbalance, not the topic of the conference.
edit: Also, I wished that the section on Debugging was much higher than it is...Robert Read's "How to be a Programmer" [1] makes it the first skill, and that's about the right spot for it in the hierarchy of things. Maybe it gets overlooked because it has the connotation of something you do after you've fucked up. But, besides the fact that programming is almost inherently about fucking up, the skill of debugging really underscores the deterministic, logical nature of programming, the idea that if we have to, we can trace things down to the bit to know exactly what has been fucked up in even the most complex of programs. And that's an incredibly powerful feature of programming...and not very well-emphasized to most non-coders.
Edit: Also, as a late-bloomer and self-taught (self-teaching) programmer, I am on the other side of the paradigm you're talking about. Petzold's Code is one of the first books a self-taught programmer should pick up. It is an awesome introduction.
It also showed how the chip itself would be laid out, where the dopants would be and such.
I completely agree. I got a third of the way through it before I just couldn't stand the obfuscation and decoration any further.
What's sad (as I [tweeted][1]) was that there's a 1972 article by Stewart Brand, published in Rolling Stone of all places, that does a better job of actually explaining what computers can do, without resorting to jargon and jive: http://stuartpb.github.io/spacewar-article/spacewar.html
One thing I noticed though is that the author is definitely stuck in the old "Microsoft is the great Satan" mindset. If he ever finds out about all the open-source stuff MS is doing these days under Satya Nadella, I think his head would probably explode.
He doesn't know what to say to a C# developer (nothing in common), but automatically trusts a Python developer? Really? sigh
* <div class="videoWrapper">
<div class="videoWrapper2">
<script src='//cdn.gotraffic.net/projector/latest/bplayer.js'>BPlayer(null, {"id":"P4_i7PihRGiWcPh3gdNMhg","htmlChildId":"bbg-video-player-P4_i7PihRGiWcPh3gdNMhg","serverUrl":"http://www.bloomberg.com/api/embed","idType":"BMMR","autopla...
</div> </div>
*Also - I have no CPU activity at all, so presumably some plugins that are running for others, aren't being executed in my copy of chrome.
>
> 1. Java is an object-oriented language, influenced by C++, that runs on a virtual machine (just like Smalltalk).
> 2. Objective-C, per its name, jammed C and Smalltalk together with no apologies.
> 3. C# (pronounced “C sharp”) is based on C and influenced by Java, but it was created by Microsoft for use in its .NET framework.
> 4. C++ is an object-oriented version of C, although its roots are more in Simula.
>
> The number of digital things conceived in 1972 that are still under regular discussion is quite small. (It was the year of The Godfather and Al Green’s Let’s Stay Together.) The world corrupts the pure vision of great ideas. I pronounce Smalltalk a raging, wild, global success.
Except that these examples are "object-oriented" in almost none of the ways Smalltalk was object-oriented: http://www.paulgraham.com/reesoo.html
The specious reasoning on display in this paragraph is almost offensive in its glib uncomprehension. Calling Smalltalk "a raging, wild, global success" because modern programming languages call themselves "object-oriented" is like saying women in technology are well-represented because Ada Lovelace was the first programmer.
I get that it's supposed to be tongue-in-cheek, but like the rest of the writing in this article, it's supposed to be tongue-in-cheek in a way that gestures toward what the author actually thinks. In this case, what it's gesturing at is the notion that Smalltalk has had a large-scale tangible influence (if not wholesale adoption) on modern programming languages, which, if you actually take the time to understand the subject, is just not true.
seriously?
How dare you pollute my ears with garbage without a mute option.
> It’s amazing any of it works at all.
although to a layman I would try to answer "what is code" more simply: code is just instructions.
instructions for how to tie a windsor knot or cook a recipe or play a piano piece can be thought of as "code" executed by the human.
if (!console.log) console.log = function(){}
shouldnt it be if(window.console) ?(..old school video game code)
1. This clearly took A LOT of work, and I have not finished reading it. I intend to, but as another comment calculated below, that will take around 127 minutes. This comment is simply about the beginning.
2. I'm not 100% certain yet what the intended goal of this article is, so I may just be off base. That being said, my criticisms should be interpreted more as questions, since I'm deeply fascinated with how to make programming more accessible. I hope they are taken as such, and people share their experiences/successes/failures in getting people to understand "what we do". Again, like other commenters here I have suffered the fate of parents not really understanding what you do (unlike the even superficial understanding of what a physicist does).
3. People learn differently, this is me pretending to not know anything and reading this article. It is thus flawed on two axises: I can't know for sure how I would have taken it in, and even if I did, it may be great for most people but bad for me.
All that being said, I had a few issues with this article('s beginning) if the goal is to make programming seem understandable to non-programmers. It seems to jump around a lot at the beginning and focus on just how complex everything is. If the goal is "programmers are justified in their work, look how complex everything they deal with is!", then this may be an OK approach. However, if the goal is to help them understand what we do day to day, it may not.
Some examples:
1. The early references to math. I once upon a time thought math was a pre-requisite to programming. I have now met enough awesome programmers that are absolute rubbish at math that I no longer believe that to be true. I believe referring to the "math" of things a lot scares people off (makes it seem like "one of those math things math people do" and inaccessible, when in reality your everyday programmer does not do a lot of (complex) math).
2. The early reference to circuits, compilation, and keyboard codes. This is a tremendous amount of scope that is unnecessary in my opinion, and just makes everything seem so obtuse. Showing keyboard codes goes a long way in conveying how much a computer does, but I feel is very confusing in relation to programming. I don't deal with "keyboard codes". We could also get into for example the actual hardware and how even having to deal with denouncing a key is hard! But I think everyone would see why that isn't great for the (introduction) of a programming explanation.
3. The circuits I believe are pretty and let you do things interactively, but I have a hard time believing they convey any information to people not familiar with programming. No one knows what XOR means (which you can flip the gates to), and just furthers the idea that code is this weird incantation we do. More putting them in "awe" of programming than understanding it.
Then again, I've been criticized for relying to heavily on analogy. My explanation would probably start with a lot of hand waiving: "lets tell the computer to get a sandwhich shall we?", then trying to get deeper bit by bit, etc. Others have probably tried this and failed, so I am genuinely curious if people walk away from this article feeling like they have a better understanding of things.
This is a joke right?
So, for example, when talking to the non-technical executive, the first level of abstraction is the technical expert that tries to explain complex technical issues. Below that, there might be a technical management layer that deals with technical issues on a more granular level, but still isn't looking at the code. Below that there's the actual developers who are writing code and are concerned with the actual logic the computer is executing. Below that are the framework authors that abstract away the common parts of writing an application of a certain type. Below that are the language platform authors who write compilers or interpreters that translate the code typed by the programmers into a format that either the computer or a lower-level abstraction (LLMV, etc) deals with. At this point, it's probably not necessary to go any lower, but you can go all the way down to CPU/machine architecture level, if necessary.
The key point is that even highly-technical people have to trust the layers of abstraction below the point where they have full understanding. I've been coding for over 20 years and I still only have a cursory understanding of how my compiler is translating the code I write into machine code, let alone how the actual hardware that runs the code. I took EE courses in college and understand the theory, but the implementation by the folks at Intel and other hardware vendors is opaque to me and I'm forced to trust that it works.
The coders employed by your company may be able to dig into framework code, but the chances are that they're fully trusting the runtimes that they work with. That trust may be the result of a well-earned reputation or through testing that the claims made by the language runtime are empirically true, but it's still trusting something that they're unequipped to verify themselves. This need to trust bubbles all the way up to senior management. The systems are just too complex for anyone concerned with the finished product to understand the whole picture.
That means that, as an executive, you're likely trusting your senior technical leadership. The only way you avoid doing that is to dig in and better understand the abstraction layer they're providing. You can also make that trust easier by doing the same sorts of things that a coder does with their language runtime...give tasks to your abstraction layer and test whether they're completed successfully. And, when those tasks are not completed successfully, don't accept techno-babble responses, dig in to understand the wheres and whys of where things broke down. Likely, the chain of trust of those abstraction layers was broken at some point...figure out where that point was so you can prevent it from happening again.
Every abstract layer adds uncertainty to the system. A CPU engineer can tell you how long a small task will take within a ns or so. A compiler engineer can tell you how many CPU cycles an expression will result in and compute an approximate time for a given processor within microseconds. And it continues as you go up the chain until you're talking to senior management and he's giving you swags with a margin of error of months. Understanding this goes a long way towards explaining the behaviors that are so confusing to the non-technical executive. It's intimidating, but the good news is that many of the skills of a good manager are what's necessary to achieve the necessary level of demystifying. The way that you begin to understand these layers of abstraction is through inquiry. Ask the right questions and, over time, you'll understand more and more of how software development happens.
The article says "Java= enterprise" but I can tell you the best user experiences I ever saw delivered over the web were those done with Java Web Start (not applets- applications launched in a JVM from the web). I developed several in the day that continued to run for years- because users loved them and they were safe and secure.
Why Web Start didn't take over, I have no idea. It was also a superb platform for mobile delivery.
This is one of the reasons I barely recommend any intro articles in Lean Notes (http://www.leannotes.com/): almost every single one is just a stream of incomplete and incorrect statements about how the world works, based on the author's myopic personal experiences.
Rather than properly generalizing and consolidating what needs to be said to convey a full understanding of the topic, most intros settle for the first example they can think of that could be remotely construed as related to the words they've previously used for whatever subject, regardless of whether it has meaning in any context. (Example: saying that type safety prevents you from trying to "multiply seven by cats".)
It seems like a pretty Dunning-Kruger thing: the less broad your knowledge is, the more justified you feel in writing an introductory text to the field.
The only time I've ever seen somebody actually qualified to write an introductory text actually doing so (as I can immediately recall) is Charles Petzold's [Code: The Hidden Language of Computer Hardware and Software][Code] (although I suspect, from the few excerpts of it I've seen, that Brian Kernighan's "D is for Digital" is good, too).
[Code]: http://www.amazon.com/Code-Language-Computer-Hardware-Softwa...
Maybe they were trying to pull off a Craigslist here but still I can't really stomach these changes.
So, if you're a talented and competent dev, be super aggressive with these predators and take everything your hands can grab before they have the upper hand and show us their true colors.
Happy Coding!
"...the balance of power between investors and entrepreneurs that marks the early, frontier days of a major technology wave (Moore’s Law and the Internet in this case) has fallen apart. Investors have won, and their dealings with the entrepreneur class now look far more like the dealings between management and labor (with overtones of parent/child and teacher/student). Those who are attracted to true entrepreneurship are figuring out new ways to work around the traditional investor class. The investor class in turn is struggling to deal with the unpleasant consequences of an outright victory..."
Money continues to be available, and often lots of it. It's available on better terms than most others in most other professions can even imagine receiving.
To put it bluntly: in most industries you are meat and own nothing and never have any chance of owning anything. This has been the condition for nearly all human beings who have ever lived, today and in the past.
There are also more alternatives to VC today: larger angel rounds, crowd funding, etc. It's also easier to bootstrap since everything (but people) has fallen in price. Those two things together have made the funding environment more competitive for VCs -- they have to offer more value or compete at the higher end.
Did you actually read this article? The article doesn't aim to teach Bloomberg's audience (which consists of VPs, SVPs, and managers, as implied in the first couple of paragraphs) how to code or replace the average developer.
The underprivileged Bloomberg readership.
EDIT: Just being sarcastic. You are clearly incompetent, coasting along in your job, and afraid of someone with 6 months of experience being better than you.
The AMA (and AAMC, and the licensing boards) should be dealt with the same way, ideally even more harshly.
All your post did was underline just how effective these professions are relative to programmers at securing higher incomes and greater prestige and shaping their public perception.
ABA and AMA are professional associations, like ACM, that happen to have effective lobbying arms, and their members are often independent business owners rather than employees.
I'm okay with giving respect to someone who spends 7 years in school - 4 + 3 for law school, or more in the case of doctors, to learn to be professionals in their field. And I have no qualms with what they make either.
I do, mind you, think it is a good idea to encourage programmers to improve their negotiating skills and understand a little about business and politics.
A programmer is more like factory equipment than a factory worker. If a company invests in superior equipment, they can produce better quality products and net higher profits.
If we're going down in the name of efficiency, the managerial and legal professionals are going first.
Historically, any perceived detriments of mass education have been significantly outweighed by benefits.
You've got to draw the line at some point. Why not draw it at boring computer stuff that barely anybody needs to know?
Capitalism _is_ profit-oriented, but happy people bring more profit.
Where the fuck does this meme of "fundamental type mismatches come up all the time in ordinary code" come from? What kind of defective system are people writing where it's normal for strings and numbers to be interpreted relationally (even accidentally)?
It sounds like the author is trying to demonstrate the significance of things like syntax transformations and format conversions (like transforming an email address to a mailto link), but that's nothing like "multiplying sevens and cats". It's manipulating things that aren't inherently incompatible - if anything, it's multiplying sevens and "7"s.
All these batshit insane contrived examples in asides like http://www.bloomberg.com/graphics/2015-paul-ford-what-is-cod... do is make code seem less accessible and comprehensible to anybody who isn't already intimately familiar with what's safe to interpret as sarcasm or hyperbole and what's not, which goes exactly contrary to the stated thesis of the article.