While this is true, and it's a great freedom that's not offered in many industries, it can lead to an unrealistic "I will build the perfect system from scratch in my parents' basement" effect. It's equally important to realize how much we rely on the work of others, and how little we'd get done if we actually tried to reinvent the news station/wheel/web stack.
I got into programming as a kid because to me it was like
electronics (I make stuff and it works! I'm almost 40 now and still cannot get over the feeling.) but without the hassle of running out of 2k resistors (you never run out of Z80 assembly instructions!) not to mention some of the harder-to-get devices.
So I didn't think as big as the author (fixing world's issues) but the purely practical aspect of the freedom he describes was enough to get me in.
That hits the nail on the head for me. Programming is inventing, but stripped of the fiddliness, expense and irreversibility of tinkering with physical stuff. Plus of course there's the Internet now, so if you make something cool then you can share it with dozens/thousands/billions of others.
To be fair to the electronics - internet made it much much easier too. Ordering physical stuff is a nobrainer now, and you no longer need to go to a library to find pinouts, specs and whatever info you need to wire the things properly.
It's definitely easier, but it's not a no-brainer. The new problem is filtering the signal from the noise. Go try and choose an op-amp, or a microcontroller, or a DAC. There is so much to choose from. Fortunately the internet can help with that too, but it is still a problem.
Have you ever tried to debug an electronic circuit?
I'd say the "fiddliness" of electronics is orders of magnitude above any high level software development. Turns out you have the wrong resistor? 2 day wait for a new one. One slip of a wire? Chip's blown. 2 day wait for a new one. Weird behaviour? If you don't have an oscilloscope you're completely in the dark. Debugging CSS may be tricky, but there's a suite of tools available which are yours in a few minutes. The power available in free debugging tools is equivalent to a 6 figure rack of electronics equipment.
All of that is true, but it isn't as bad as it once was. You can buy a 100 MHz oscilloscope for ~300 USD now; cheaper than an old used Tek, and better. Resistors are so cheap, buy a kit of them. Since the internet, not only can you get parts cheap, you can get them pretty quickly too; though, I have to admit though, my progress on a weekend project was halted Saturday because I had procrastinated ordering a few parts.
At least for basic electronic circuits, or even simple software projects, the difficulty becomes apparent when you move outside your normal comfort zone. Debugging even simple software is quite vexing to newcomers; I heard someone say it's like a blind person learning to paint portraits (though the one who said it wasn't blind).
>The power available in free debugging tools is equivalent to a 6 figure rack of electronics equipment.
They always charged too much for that crap. Thank goodness for open standards and cheap digital stuff.
You don't NEED a macbook pro to write programs. where as you NEED those resistors to make the thing work. and it truly is INVENTING. You can pretty much do anything with the need of "funding" like the other fields
You don't need a MacBook Pro to program, and in many cases it's useless for some applications (Windows applications). You can get away with a really inexpensive computer, which really lowers that number of resistors. But the important part is that you can just buy one of them, unlike resistors where you will always need to buy more to continue innovating.
The argument is flawed. Every job has its own hassles, limits, dogma and so on. This applies to programming also. You might end up working with a team, which uses organizational schemes you hate, in a language that you dislike using tools you consider obsolete (See Linus Torvalds famous talk about git). In other situations re-writing the tool, is far from realistic, so you do professional patching, even though you hate it.
It's an awesome thing to like your work. But it's unrealistic to expect to do everything with your own terms and getting paid for that.
It works on many levels in programming. You decide the algorithm, how to break down the problem in smaller parts, the method names, the variable names, the layout etc. There is a lot of freedom, and you get to create things almost every day. In addition, what you create is actually useful to somebody else. Plus, you get to see how all the moving parts (figuratively) interact and execute when the program runs (in a debugger, or following log statements or similar). Quite a thrill. That's why I still love programming after all these years (http://henrikwarne.com/2012/06/02/why-i-love-coding/).
I understand what the blog post is trying to convey and I agree that programming is a wonderful craft, allowing anyone who knows how to code an amazing world of possibilities.
However, the way the blog post tried to convey this, it falls down for two reasons:
1 ) If you were someone who had studied media rather than programming you could film your own 'news' channel and upload it to youtube if you thought you could disrupt the news industry. This being the equivalent of sitting in your bedroom at home making a site or an app the way you want to. Thus this freedom to express your ideas does not just apply to programmers.
2 ) Just assuming that the news industry team don't know what they're doing and as a new hire media intern you would know how to fix it for them if only they let you, is almost like being a new intern at a software house and expecting to go in and tell everyone they need to change their methods or practices because you know best.
I expect you'd get similar resistance to making them change, as in both examples you as an intern have little experience compared to the people in either industry. What from an outside observer (or new hire) may seem dumb, perhaps is the most effective methods after years of A / B testing by the people within that organisation.
This article makes me wish HN had a downvote button for submissions - its some upbeat crap with an example that is debatable. It caries neither novelty nor intellectual investment.
Apples to oranges, sorry. Creating an alternative is not the same as taking on the original.
Sure, you can write a better SalesForce at home, but making it displace the real thing is exactly the same effort as making a TV station adopt your new newscast format.
I dont like attitude that programmers have some sort of super powers. Sure you can put your tiny script on github, but there are zillions of half baked repos there (including mine).
To change local news you could start blog, podcasts or video tube channel. Single person can bring down tv channel or corrupted major, this happened many times before.
Internet is like amplifier. But sometimes it just multiples number of people who will ignore you.
>But if you're writing an iOS game, an HTML 5 web app, a utility that automates work so you can focus on the creative fun stuff, then you don't have to fall back on the existing, comfortable solutions that developers before you chose simply because they too were trapped by the patterns of the solutions that came before them.
This isn't really true at all. It's very difficult to go against the existing standards. If you think the standards for the web are stupid then you're simply out of luck. Back to the desktop with you. What about all the hardware being optimized for C? How many people work in some language they hate because there's money in it and they have to eat?
The systems we have aren't designed for high level programming. Right from the start you are hobbled by this choice. Then someone decides to water things down further by enforcing a high level language on anything running in the browser environment so you don't even get your nice "raw performance" for the things the hardware is actually good at. And this high level environment isn't a a good one, even considered within the constraints set by the hardware! Then there's C - an awful language even for the hardware tailored for it, but many are stuck using it for one reason or another?
"You can fix things. You can make new and amazing things."
This could and should apply equally to teams as well as individuals working alone (albeit taking different approaches to working).
What's interesting here is the comparison between achieving something as a team/in an organisation and working alone, which is ultimately what the author is advocating in order to gain certain freedoms. However, it seems to me that one can only achieve so much as an individual and this includes effecting change on a large scale because it takes many hands and cooperation to stir a big pot.
This is not entirely true. Social media & blogging have indeed provided an alternative to TV news. It has actually changed the "entrenched structure". Even established media giants use tweets or posts to spread information. How many of us prefer tuning in to local news station instead of just logging into fb/t/g+ to stay updated? These platforms have been built by programmers who I am sure are happy about the impact they have created.
Funny that the scene for his analogy in the beginning ends with the image of talking heads bantering about a fluff piece, and then he follows with a fluff piece for programmers. The genius is in the mocking subtext.
"You can fix things. You can make new and amazing things."
- yeah, but as a front-end developer, I still have to program using messy Javascript. I want packages, classes, public, private and protected, abstract, getters, setters all running natively - without the hacks or superset/compiled languages (ie. Typescript, Coffeescript, etc).
I miss Actionscript (not that it was perfect), but to remain commercially viable (and for other understandable reasons in the Flash vs HTML debate that I wont go into), I now write Javascript in a way not too dissimilar to how I used to write Actionscript nearly a decade ago! Things could be better.
Ultimately, what I'm saying is that being a web developer is not all about freedom, many concessions need to be made. I'd love the freedom to say f* IE. Forever.
We know there are better ways of doing things. But when it comes to the web, we have no choice to wait until it as a unified whole catches up.
Errr... to quote: "So it's not likely I could just step-in and make sweeping reforms".
28 comments
[ 1.4 ms ] story [ 65.6 ms ] threadSo I didn't think as big as the author (fixing world's issues) but the purely practical aspect of the freedom he describes was enough to get me in.
I'd say the "fiddliness" of electronics is orders of magnitude above any high level software development. Turns out you have the wrong resistor? 2 day wait for a new one. One slip of a wire? Chip's blown. 2 day wait for a new one. Weird behaviour? If you don't have an oscilloscope you're completely in the dark. Debugging CSS may be tricky, but there's a suite of tools available which are yours in a few minutes. The power available in free debugging tools is equivalent to a 6 figure rack of electronics equipment.
At least for basic electronic circuits, or even simple software projects, the difficulty becomes apparent when you move outside your normal comfort zone. Debugging even simple software is quite vexing to newcomers; I heard someone say it's like a blind person learning to paint portraits (though the one who said it wasn't blind).
>The power available in free debugging tools is equivalent to a 6 figure rack of electronics equipment.
They always charged too much for that crap. Thank goodness for open standards and cheap digital stuff.
It's an awesome thing to like your work. But it's unrealistic to expect to do everything with your own terms and getting paid for that.
However, the way the blog post tried to convey this, it falls down for two reasons:
1 ) If you were someone who had studied media rather than programming you could film your own 'news' channel and upload it to youtube if you thought you could disrupt the news industry. This being the equivalent of sitting in your bedroom at home making a site or an app the way you want to. Thus this freedom to express your ideas does not just apply to programmers.
2 ) Just assuming that the news industry team don't know what they're doing and as a new hire media intern you would know how to fix it for them if only they let you, is almost like being a new intern at a software house and expecting to go in and tell everyone they need to change their methods or practices because you know best.
I expect you'd get similar resistance to making them change, as in both examples you as an intern have little experience compared to the people in either industry. What from an outside observer (or new hire) may seem dumb, perhaps is the most effective methods after years of A / B testing by the people within that organisation.
SAGE has been used.
The bit about not having to pay any regard for the way things have been done in the past was particularly resonant.
Sure, you can write a better SalesForce at home, but making it displace the real thing is exactly the same effort as making a TV station adopt your new newscast format.
To change local news you could start blog, podcasts or video tube channel. Single person can bring down tv channel or corrupted major, this happened many times before.
Internet is like amplifier. But sometimes it just multiples number of people who will ignore you.
This isn't really true at all. It's very difficult to go against the existing standards. If you think the standards for the web are stupid then you're simply out of luck. Back to the desktop with you. What about all the hardware being optimized for C? How many people work in some language they hate because there's money in it and they have to eat?
The systems we have aren't designed for high level programming. Right from the start you are hobbled by this choice. Then someone decides to water things down further by enforcing a high level language on anything running in the browser environment so you don't even get your nice "raw performance" for the things the hardware is actually good at. And this high level environment isn't a a good one, even considered within the constraints set by the hardware! Then there's C - an awful language even for the hardware tailored for it, but many are stuck using it for one reason or another?
What's interesting here is the comparison between achieving something as a team/in an organisation and working alone, which is ultimately what the author is advocating in order to gain certain freedoms. However, it seems to me that one can only achieve so much as an individual and this includes effecting change on a large scale because it takes many hands and cooperation to stir a big pot.
INDEPENDENCE: otherwise, you rely on someone else always having made exactly the right tool for you, and giving it to you.
HONESTY: otherwise, you end up distorting the problem to match the tools you happen to have.
CLARITY: turning your method into something a machine can do forces you to discipline your thinking and make it communicable; and science is public.
I miss Actionscript (not that it was perfect), but to remain commercially viable (and for other understandable reasons in the Flash vs HTML debate that I wont go into), I now write Javascript in a way not too dissimilar to how I used to write Actionscript nearly a decade ago! Things could be better.
Ultimately, what I'm saying is that being a web developer is not all about freedom, many concessions need to be made. I'd love the freedom to say f* IE. Forever.
We know there are better ways of doing things. But when it comes to the web, we have no choice to wait until it as a unified whole catches up.
Errr... to quote: "So it's not likely I could just step-in and make sweeping reforms".