V8 is going to switch to a new compiler architecture after 5.8 branch cut - <AUTHOR> https://groups.google.com/forum/#!topic/v8-dev/YXpjhVeHlbI <comment><USER2> I am curious about the possibility of this leading to source code protection in Electron.

The Electron team declined to support source code protection, judging it too difficult to implement. [0] NW.js supports the feature but with severe limitations that the Electron team understandably did not want to replicate. [1]

Roger Wang of NW.js fame recently tweeted that the NW.js implementation is about to get a whole lot better due to this new compiler landing in V8. [2]

Could this new development in V8 put source code protection back on the table for Electron? I posted this question to the official Electron discussion forums too a few days back, but I'd be curious to hear more input on the topic, thus posting it here as well. [3]

[0]: [https://github.com/electron/electron/issues/3041](https://github.com/electron/electron/issues/3041)

[1]: [https://github.com/nwjs/nw.js/wiki/protect-javascript- source...](https://github.com/nwjs/nw.js/wiki/protect-javascript-source-code- with-v8-snapshot)

[2]: [https://twitter.com/wwr/status/831691865850130432](https://twitter.com/wwr/status/831691865850130432)

[3]: [https://discuss.atom.io/t/source-code-protection-via- new-v8-...](https://discuss.atom.io/t/source-code-protection-via- new-v8-compiler/39533)

<comment><USER3> You'll always be able to decompile electron (and other JS) apps. As the problem becomes more common, better tools will be available and any "protection" will be moot.

Source code protection amounts to bad DRM, and I should hope it doesn't need to explained on HN the ways DRM doesn't work.

<comment><USER2> My understanding is that the proposals being bandied about to do source code protection involve compiling the JS code into binary, so it's analogous to the protection offered by writing native code rather than mere minification/obfuscation or JIT bytecode stuff.

Obviously no compilation process offers 100% protection, but it would be enough for most people's purposes if it occupied a space that was more secure (or more obfuscated) than Java, but less so than, say, C++.

<comment><USER4> Disclaimer: I started that github issue for source code protection with Electron.

To add to this since other people will come commenting, yes I know that if somebody REALLY wants to they can get to the code (although I'd argue that Denuvo worked for a while).

However there is a huge difference between having hard to read code that needs to be decompiled and unobfuscated to code that is in plain text! Any script kiddy can modify any electron application (The code is in freaking text files!).

<comment><USER5> > Any script kiddy can modify any electron application (The code is in > freaking text files!).

And what's so bad about that?

The copyright law of the EU even was written with the intention that someday everyone would have the source code to everything, and everyone — even your grandparents — could modify any application, because the source would be in freaking text files!

<comment><USER6> Every project has different requirements. It's not for you to say whether something is good or not for others.

I don't mean to sound like a prick, but while I personally love open source, I tire of the evangelism of its virtues.

<comment><USER5> So, you're advocating that you should be able to sell products that are impossible to repair, impossible to modify, with 0 days warranty period, and then expect people to accept that?

I'm sorry, but there's a reason we don't allow that for physical things either.

> Every project has different requirements.

That might be. But that doesn't change the problem I mentioned above.

<comment><USER6> Yes, you should be able to create any kind of product you want as long as it's within the law. You're not the authority on what constitutes a problem. It's certainly debatable and far from settled, contrary to the definitive character of your indignation. And it's far more nuanced than your ungenerous characterization of it - this is part product, part intellectual property.

What's great is you are free to exercise your philosophy in your products, and if you're right, then that will make your products superior.

I don't feel the need to utterly destroy my ideological "enemies" to the point that I need closed source software to die, just because I believe in open source. Nor can I claim to have an indisputable moral high ground that just goes without saying.

<comment><USER7> In isolation I agree with you, but software does not exist in isolation. It exists in market places, on pacemakers, in airplanes, on voting machines and everywhere else.

Right now the default way to release "of the shelf" products is without source code. It is not a real business decision for many, so they default to what everyone else does. For no real reason, then they defend this with lobbyist and lawyers. This includes airplanes, pacemakers, etc...

I really do think closed source software should be illegal, because I think that is the only way that I will be able to verify there are no issues something I use, like a medical device. I cannot verify my grandmother's pacemaker and if there is a bug she dies. Currently, the source code doesn't need to be shared with her or me, just because its a trade secret. Why should a trade secret be more important than the lives of users of a product.

But its not just the one life threatening extreme. Look at the Vizio TV news for the past few weeks. These entertainment should be about as innocuous as possible. Vizio has enough data to know the political leanings of 90% of Vizio TV owners. How would you feel if they sold that to people in a political party that opposes you? This is software on entertainment devices, and it has this kind of power. To make it worse, they got away with it for 18 months before anyone figured it out. They might have gotten away with entirely if they used a bit of encryption.

Forget the virtues of open source, I firmly believe closed source software is not compatible with the basic freedoms required the long term for any democracy.

<comment><USER6> You've picked some pretty dangerous subjects in healthcare and privacy. It's no coincidence that these areas are focal points for regulatory legislation - this is serious stuff, but that's why we have laws and other mechanisms in place to deal with these things. The regulatory environment is precisely what addresses the fact that software does not exist in isolation.

It's ludicrous though to suggest that _all_ closed source software become _illegal_. Talk about throwing out the baby with the bathwater! You'll be hard pressed to find any regulatory justification for such a blanket measure.

This is overreaching, entitled ideological authoritarianism. The danger is that you don't see it because it all sounds so ethical on the surface, especially when framed through the dramatic lens of your grandmother's pacemaker. Maybe I do think there needs to be more transparency in healthcare products, and I think that what Vizio did is despicable - but we can't just knee-jerk all the way to the other extreme of outright banning all closed source.

What you're essentially advocating for is the application of absolute power on everyone in order to prevent _some_ from abusing their power. Do you not see the dangerous escalation of the stakes once you take this approach? I'm almost more afraid of you than I am of Vizio.

I wrote some code yesterday and didn't share it - are you going to justify forcibly prying it from me?

<comment><USER5> > I wrote some code yesterday and didn't share it - are you going to justify > forcibly prying it from me?

No, but some realistic proposals include forcing developers to release their source as soon as they stop providing fixes for bugs to all people who bought a license.

Another proposal that's currently demoed is the government paying a wage to all open source devs: [https://prototypefund.de/2017/02/22/german-prototype- fund-gr...](https://prototypefund.de/2017/02/22/german-prototype-fund-grants- up-to-30-000-for-open-source-projects/)

> outright banning all closed source.

I'm not sure where you see the problem? With patents we already require you to publish the entire process to get protection – as algorithms are not protected by copyright, and most not by patents, a possible solution for software protection that's discussed is providing copyright protection for software under the restriction that the source is published after a few years (and until then held by a trustee)

<comment><USER6> The scenarios you're presenting obfuscate the simplicity of my point: you shouldn't blanket ban something because it's at odds with your philosophy. Exceptions will certainly exist, but that's beside the point and I don't see the value in descending into the minutiae of the exceptions and consequently not being able to see the forest for the trees.

Your view of your ideological opponents is very ungenerous. You accord it absolutely no merit, as it seems you deem it completely wrong and advocate for its banning outright.

Instead I would urge you to understand why some people and organizations have un-nefarious reasons for making closed-source software. To put the burden of justification on them so that they can be allowed to do their own thing is, well, pretty unfair. You seem to operate with the assumption that your ideological opponents are objectively guilty.

And I write this as an advocate for open source (a 100% personal and debatable belief, not an absolute moral claim): you are not being fair when you act like anyone making closed-source software has some obligation to prove to society that they're not being nefarious.

You're seriously willing to punish everyone either legislatively or through a stigma because Vizio did something unethical? The presumption of innocence is fundamental in our society, and your arguments just casually trample all over it, as if it's settled and you're right by default.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> Finally! Congratulations to the V8 team for completing the switch to a sane compilation pipeline. :)

Hopefully this will lead to many more simplifications in the future.

Does anyone know which optimizations finally catapulted Ignition+Turbofan ahead of FullCodeGen+Crankshaft in terms of performance?

<comment><USER9> I'm not sure if you are referring to a particular optimization, but speaking of

[https://twitter.com/bmeurer/status/834677090381348865](https://twitter.com/bmeurer/status/834677090381348865)

and

[https://twitter.com/bmeurer/status/834668611180625921](https://twitter.com/bmeurer/status/834668611180625921)

the "Bazinga!" event in both cases refers to two very specific fixes that addressed deoptimization loops in TurboFan. The more interesting steady increase in performance is due to long-term real-world performance work, especially in the area of data-driven ICs (inline caches) and function context specialization.

We will follow up with more details about Ignition and TurboFan, and the whole new code generation architecture soon.

<comment><USER8> Yes, that's what I had in mind. Another thing I seem to recall is that Turbofan used to be a lot slower than Crankshaft and spend a lot of its time in scheduling and register allocation. Has this changed recently?

In any case, I'm looking forward to the more in depth post. :)

</comment></comment></comment><comment><USER10> And this is how you can try it out now in Chrome Canary: [https://v8project.blogspot.com/2017/02/help-us-test- future-o...](https://v8project.blogspot.com/2017/02/help-us-test-future- of-v8.html)

</comment><comment><USER11> Can anyone speak to what sort of impact this might have on NodeJS? Will it be difficult for the project to migrate to that version? Is it expected to break packages that rely on C bindings?

<comment><USER12> This architecture switch will have no impact on the V8 API. We're working closely with the Node.js team to make sure that this is a smooth transition and early results look as though there are significant performance benefits [0].

Disclaimer: I work on the V8 team.

[0]: [https://twitter.com/bmeurer/status/834677090381348865](https://twitter.com/bmeurer/status/834677090381348865)

<comment><USER13> Probably means I will finally give Atom editor another try. :)

<comment><USER14> Atom's performance will most likely be more constrained by the algorithms they use than by JS execution speed.

<comment><USER15> Since vscode is already pretty fast, you are probably right.

</comment></comment></comment></comment></comment><comment><USER16> Performance, performance, all the talk about performance. What about memory footprint?

Apparently Ignition helps a bit, but still… even the baseline memory usage of Node.js and Chromium is bad. Just open a node REPL, its resident set size is 2x the size of a ruby/python REPL, about 10x the size of luajit.

</comment><comment><USER17> I wonder how this will effect performance for games/realtime stuff as that seems like the weak point for JS from the user side, although realistically it's probably more of a GC problem. Seems like most of the test websites are reasonably static - do a bunch of stuff once at startup/do a bunch of stuff on user input so your compilation overhead ends up being fairly large whereas with realtime stuff/games I'd expect it looks more like the octane benchmark....

</comment><comment><USER18> I'm a sucker for interpreter designs, and the new Ignition bytecode interpreter looks nice:

[https://docs.google.com/document/d/11T2CRex9hXxoJwbYqVQ32yIP...](https://docs.google.com/document/d/11T2CRex9hXxoJwbYqVQ32yIPMh0uouUZLdyrtmMoL44/)

</comment><comment><USER19> Will performance improve across the board, or is the new architecture targeting common patterns believed to be slow, like heavy use of closures & promises, or getting functional calls like map into the same performance range as a for loop?

<comment><USER20> > Will performance improve across the board

Speaking very generally, I've never seen a major architecture change that led to a performance improvement across the board. In particular in JS which has so many corners. There are always going to be some things that improve, some that regress, and some that stay the same. You can see examples of all three here (compare lines with TurboFan+Ignition vs v8):

[http://arewefastyet.com/#machine=29&view=breakdown&suite=oct...](http://arewefastyet.com/#machine=29&view=breakdown&suite=octane)</comment></comment>


Creating a beautiful 1-page product site: go vertical. - <AUTHOR> http://useketchup.com/

<comment><AUTHOR> This was created by Paul who presented on "the release mindset" at RailsConf 2010. [http://www.pabcas.com/feeling/presenting-ketchup-a-simple- me...](http://www.pabcas.com/feeling/presenting-ketchup-a-simple-meeting- notes-app)</comment>


Ask HN: Are stealing Bitcoins a zero sum game for thieves? - <AUTHOR>

Where's the tipping point? At some point the stealing has to stop for Bitcoin to remain legitimate.
With 7% stolen from MtGox and add to that all the other thefts (known and unknown) lets say right now today 10% in circulation are stolen.
At what point do merchants and users stop buying and accepting them because of the 1 in 10 chance they are accepting stolen Bitcoins?
Will next year be a 50% chance your accepting a stolen Bitcoin? <comment><USER2> How do you tell if a bitcoin is stolen? There's no exploding dye pack. Just the blockchains and if it says you own it, then as far as the bitcoin industry goes you own it. Possession is ownership and anonymity are two thirds of bitcoin's attraction (fast electronic transfer outside of regulatory oversight is the third).

Even at $10 a coin 5000 bitcoin would be a nice payday for a lot of people in the world particularly because bitcoin is prefenced- stolen bitcoin don't sell at a discount. To put it in perspective, Nigerian banker princes will send out a lot of emails in hopes of earning a few hundred dollars.

<comment><AUTHOR> You're right you can't tell if they're stolen, but if >10% in circulation are stolen (and growing daily) why would a legit company like overstock.com (just to name one) take them knowing this?

And if they did, why would I trust them knowing that?

<comment><USER2> What does it mean to claim a bitcoin is stolen? It's not a claim based on the blockchains but on something else. It becomes a matter of proof based on something like server logs and testimony of individuals.

Any business has plausible deniability- they just point to the blockchains and ask "how can I tell this transaction is in dispute? Anyone can claim anything. I don't see a judge's signature establishing ownership."

Credit card companies can do what they do because of contracts that might make the merchant eat the cost of goods on a disputed claim. The merchant in turn can have insurance against certain types of loss, just as the buyer has such insurance against loss as part of their agreement with the credit card issuer. It's not some digital technology that makes it work. Digital technology has cut the costs, but credit cards worked when transactions were hand processed using paper records.

That's not to say that I think that CryptoCurrency is necessarily going to ascend to the main stream. Theft is a problem because the wonders of the blockchains don't prevent theft. All it does is record the transaction, it judges not. and the lack of regulation and volatile exchange values and potentially catastrophic losses make insurance against loss likely to carry prohibitive premiums or margin calls.

</comment></comment></comment><comment><USER3> AFAIK stolen BTC has never been clawed back and there is no consensus about whether the _nemo dat_ doctrine applies. BTC will be stolen as long as there is still one place to launder it.

</comment><comment><USER4> Even if stealing is zero-sum, it won't stop thieves. Thieves tend not to be utilitarians.</comment>


Got a startup idea? Validate it with the Startup Toolkit - <AUTHOR> http://thestartuptoolkit.com/ <comment><USER2> Hey guys, I put this together as a easier way to visualize & update your business hypotheses.

Writing down the beliefs your startup is based on is crucial... it keeps you focused on risks instead of features, makes communication w/ team & investors easier, and stops you from ignoring the evidence. Yet most people don't do it (and almost no one consistently updates them).

I thought Steve Blank's customer development worksheets were a good start, but it's hard to update quickly and doesn't provide an overview. The canvas you see on the app is a modification of the Business Model Generation canvas, which I re-vamped to better suit startups.

Hope it's handy.

<comment><AUTHOR> I like it very much. In fact - I'm filling it out right now! BTW - I love the potential of this app. I.e. you can expand Key Performance Indicators with some sort of the Steve Blank kind of small "no accounting" app with the API for integration - <http://steveblank.com/2010/02/22/no-accounting-for- startups/> \- to automatically track your performance...

<comment><USER2> Thanks for the kind words. And that's a really good idea..

I've been keeping a list of tools & frameworks that seem helpful to startups, and I hope to bring them together and have founders pick & choose the structure they think will be most beneficial to their situation. The accounting is a good addition. It's still unclear where I can add the most value, but, as you mention, there are lots of promising possibilities.

</comment></comment></comment><comment><USER3> My first thought was that this would be silly. Until I went inside and saw for myself. Very thought provoking, an exercise definitely worth my while.

Until I read this:

 _We'll try our best to preserve your data, but no guarantees. Your canvas is secured by obscurity, which is to say it's not very secure at all. Anyone with your canvas' URL may view and edit it. If and when we add a paywall, we'll make sure you can export any existing data._

Honestly, how hard would it be to just fix this first?

I think you're really on the right track to something good. But until you fix this, I'll just use my own text editor to save my thoughts on my own hard drive.

<comment><USER4> > Honestly, how hard would it be to just fix this first?

I thought it was a breath of fresh air. The unique ID is clearly very random and long enough to be unguessable. Even if the user and document hashes are not picked in a cryptographically secure way it's still going to be much more secure than the average alpha web 2.0 app that's hacked together with some generic login&auth component.

I think you should be upset at products that do auth but do it insecurely, not those who make a conscious decision that a simple solution is good enough. Just look at the websites that don't hash passwords, that don't restrict login cookies to the domain of the app, that don't have SSL logins, and so on. There are a million points where it can go wrong, and even today it's pretty difficult to asses whether your application is secure.

Think about it for a second. The security system the authors have chosen is almost impossible to mess up. Given how the hash looks I'm almost entirely sure they used some kind of crypto library to generate it. (If their magic ids looked like the output of randrange(100000, 900000) it would've been obvious). There is no other point of failure. If the hashes are random and unguessable, you're done! For a free product, I'd say that's pretty good!

What you want is security, but what you ask for is a login page.

<comment><USER3> _What you want is security, but what you ask for is a login page._

Sorry if I didn't make it clear enough, but all I want is:

1\. the ability to add, change, or delete my any of my data at any time

2\. the ability to share my data with exactly whom I want, no more, no less

OP guarantees neither (and, refreshingly, admits it). In fact, "We'll try our best to preserve your data, but no guarantees" and "not very secure at all" were his words, not mine. I was responding to his disclaimer, not my interpretation of his site's security.

[FWIW, I use ramamia by hner's jasonlbaptiste and markbao, which has a great and appropriate implementation of unique id. But then again, I'm less concerned about the security of my family reunion plan than of my business plan.]

<comment><USER4> I know you want to do (1) and (2), but my point is that you're not getting that from the other web 2.0 apps either.

When you delete data perhaps only a is_deleted flag gets toggled in a database, and copies of your work may reside in backups for months or even years. When you want to share your data you want to be reasonably certain the app is secure, but there is no way for you to determine if this is the case. I'm saying that a very simple system with very obvious security implications may be preferable to a complex system. It's easy to get Open Auth wrong, it's easy to get logins wrong, and so on.

Many apps will give you that login form and the share and delete buttons but chances are you would shudder at the thought of using the app if you knew what the backend looks like.

About those remarks on the page. The first one, "We'll try our best to preserve your data", is the best you can hope for in any situation, and the second remark that the website isn't very secure at all is also truthful given that it doesn't even use SSL.

So to reiterate, login forms on an app may make you feel more secure, but it won't bring you any closer to what you want.

<comment><USER3> _"We'll try our best to preserve your data", is the best you can hope for in any situation_

If that's the best my customers could hope for, then I'd be broke.

I absolutely guarantee the integrity of my customers' data. To anyone who doesn't, I ask, "Why not?"

<comment><USER5> Because giving an absolute guarantee of anything is impossible?

<comment><USER6> An undertaker might take issue with that:-)

<comment><USER7> Depends on if he's met Ray Kurzweil or not.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> Any chance someone can come up with a Word/Pages template of this? Perhaps an offline/downloadable version of the site?

<comment><USER2> Good idea. I'll post some pdfs or doc templates on the page for offline work before everything's secured up.

</comment></comment><comment><USER9> I saw Alexander Osterwalder (author of Business Model Generation) speak at a TEDx event here in Stockholm and I liked his ideas. This looks nice, and I look forward to using it.

Thanks!

[EDIT: Alexander Osterwalder, not Steve Blank...]

</comment><comment><USER10> This seems like a derivative of the business model generation book

<comment><USER2> It is, as stated in the credits at the bottom of the page. 4 of the blocks are the same as the original biz model generation canvas, and the other 5 are tailored to early stage startups. I also changed the layout from being cash- driven to value-driven and embedded some stripped down worksheets into each of the blocks, which leads to a slightly different use-case (communication & documentation instead of discovery & discussion)

</comment></comment><comment><USER11> I like it, but the 'Save Changes' button is just a bit too low to be visible on my netbook screen (javascript says window.innerHeight is 481).

</comment><comment><USER12> I wouldn't want to post my ideas/business revenue that is virtually accessible to anyone other than myself especially a site that has no TOS.

</comment><comment><USER13> To be very honest, my first thought is that in all "HONESTY" you CANNOT do all this - its impossible to do all these things (claimed on the website), without experiencing those in person and it will vary from person to person based on the context, circumstances, idea etc. I think it will be a disservice to any confused soul (I am guessing those are the kind of people who would hit your site) by claiming to do things that are not practically possible, without actually experiencing those.

<comment><USER2> The app doesn't do anything for you, except give you a bit of scaffolding so you can make your own decisions.

If you look at startup case studies, the worrying constant is how obvious most of their failures are. We lose track of our basic business assumptions and end up charging down dead-ends or building products nobody wants.

By explicitly stating our assumptions in an easily consumable way, it keeps you aware of what you're trying to prove and helps you avoid those "obvious" mistakes.

<comment><USER13> Okay here's a (hypothetical) use case: I want to create a software product, say a database, because I see myself solving a real problem by way of creating my product. My whole idea is driven by a real problem statement and my passion. How does this fit in here? Don't you think all those blocks are a little misleading for a product like this? Or like these: <http://projects.apache.org/indexes/quick.html> ?

<comment><USER2> It's not a product management tool. There are lots of great options to help you do that, some of which I use.

If you already have an idea that you think is a fact, and you are going to build it, regardless of what the world says, then you needn't write anything down. That's what most failed projects do/did.

The canvas is meant to help when you see your ideas as hypotheses. You document them, and then you go try to find out if they're true or not (by talking to customers, building MVPs, watching mailing lists, whatever). If everything is true, you move on to scaling the business. If some of your initial beliefs turn out to be false, which is probable, then you have a place to go back and document your new learning, and hopefully see how that change will impact the rest of your assumptions.

</comment></comment></comment></comment><comment><USER14> Hah, great idea! Reminds me of Dramatica, Contour, Hollywood scriptmaker etc. for scriptwriting.. and they all work.

</comment><comment> Colin-DeVries Hi, Quick tip. In IE8 the chart before the accolade is not visible. Keep op the good "stuff"!

<comment><USER2> I'm surprised it didn't set your computer on fire in IE. Thanks for the heads up - will get it prepped for mass consumption sometime.

</comment></comment><comment><USER15> A start-up who's function is to help other start-ups.

Novel idea!

<comment><USER2> More of an "app" than a "start-up", but thanks ;)</comment></comment>


Save the date. Open Source Bridge takes place June 1-4, 2010. Portland, OR - <AUTHOR> http://thesethings.posterous.com/open-source-bridge-2010-save-the-date-nerds-j

<comment><AUTHOR> Disclosure: I'm a volunteer at this event.

Details still getting worked out, but the date has been chosen for the second Open Source Bridge.

For those who didn't attend last year: This is a very reasonably priced event, with lots of space and care given to after-session hacking and talking.

Also a big emphasis on being super friendly.

More info as it happens...</comment>


Fire your designer - <AUTHOR> http://blog.teambox.com/fire-your-designer Why do programmers learn new technologies all the time, while designers are stuck in the 90s with their mockups? <comment><USER2> This is a good article, but the inflammatory title basically guarantees that those who would benefit the most from reading it, designers, are going to be on the defensive going in. And that's if they would even read it at all having come across it online.

I spend a lot of time at my job fixing design by designers who don't code, and I'd love for them to read it, but I'm not going to waste my time. (I'm a usability guy/front-end developer who does know how to code and design.)

<comment><USER3> Also as a front end developer (who does UX / design), I think I can get about 80% in most situations, but the additional 20% is what makes sites like airbnb stand out so much.

In those cases, I'm happy to hire someone and code it myself, after all, I'd much rather they be knock-your-socks-off-good at web design than someone who is only decent at design, and okay at integrating.

<comment><USER4> Right, as a front end shop, we have found that having the two disciplines segmented works very well. We find the best artist we can find and task them with developing a PSD to deliver to the UX team.

We get people that are really, really good artist and that is what we want from them a good artistic comp. Trying to force them to cross the bound to writing HTML and CSS that will be used in a complex web application adds additional constraints to finding talented people.

In that case we would need an exceptional artist that can write HTML and CSS that is componentized so we can bust it up into widgets, if not we accept sub- par HTML for what we need. It limits the pool of talent.

Now conversely if we only require a comp we broaden our pool of truly talented people. Further when we go to look for good browser app UX developers, we don't put the constraint on them of being an exceptional artist. Just finding someone who is versed in Human Factors, HCI and interaction that can produce clean reusable code is hard enough, throw in top 10%er artistic skills and you have really constrained the market.

Instead of fighting those market realities we work with them. We hire artist to do art and developers to develop. It works out well because each are exceptional at their core competencies. It also works well because we can hire freelance artist on a per project basis therefore maximizing out investment in art instead of trying to force an artist to do HTML to keep them busy on the pay roll.

</comment></comment></comment><comment><USER5> This is an entertaining article, as far as programming rants go. But some points were overlooked. Pablo asks, "Seriously, why can't this person learn HTML? It's their job to produce results, after all."

Ok, fair enough to ask. Here's the answer. As a creative director, art director and designer, I deal extensively with the business case for the project, the marketing, the concept and copy writing, editing, photography, illustration, layout, information design, domain name selection, branding, and several other areas. (There are in fact many people who specialize in just one of the areas I mentioned above; and I'll note that no one asks these specialists why they don't know CSS.) Every one of those areas is about "producing results." Would it be fair or reasonable to ask a programmer to learn all of the above? I don't think so.

Beyond the points of fairness and reasonableness is the point that while design is about "how it works," (which is a very deep area I won't delve into at the moment) the issue of "how it looks" is also a major part of it. If the visual appearance doesn't satisfy the requirements, no amount of CSS expertise will save the day.

Furthermore, those who have expertise in making things look good (in addition to the other areas I mentioned above) often have no interest or ability in coding. In fact, they are working in a (primarily) visual discipline because they have a distaste for coding, if they've tried it; or simply a total lack of interest.

I might point out that print design (in contrast to web design) is completely isolated from involvement with code. When I hit the "print" button, my software will generate the PostScript code for me. In this respect, the tools for print design are far ahead of those for web design.

Have you ever opened up a PostScript file? I can assure you, it's several orders of magnitude more complex than an html/css file. No one would ever ask a designer to edit the PostScript code; such a ludicrous request would be dismissed out of hand. (Although I had to do some PostScript editing many times when I worked in prepress.)

Getting back to the Pablo's question, I have to turn it around and ask: why isn't there a "visual design" tool with the ease of, say, QuarkXPress, that can output programmer-friendly code? Serious question. While Quark can in fact output html, it's very bad html. Likewise, one constantly hears complaints about the code generated by Dreamweaver and other tools that offer a modicum of visual editing. There's clearly a market opportunity for software that can bring the sophistication and ease of use that print designers enjoy to the wide world of web design. (Anyone interested in exploring that market opportunity should contact me.)

</comment><comment><USER6> Judging from the title I would say that is about the worst advice one could give. I think most if not all problems of this nature stem from the artificial disconnect between design & implementation and the general idea of a designer as a "person who draws nice pictures". If you treat design like this, you get what you pay for (and from what I taste in the article, the term "css monkey" would be more apt). This article from 2009 illustrates nicely what I mean: [http://www.osnews.com/story/22135/The_Problem_with_Design_an...](http://www.osnews.com/story/22135/The_Problem_with_Design_and_Implementation)

</comment><comment><USER7> To me it's seem he put more than one "job" under the designer bucket.

To me, an integrator (HTML / front-end JS) an art director, a usubility expert are different roles. Can you find somebody that do all this ? Of course, but if you just hire a "designer" without being more specific about your needs, you will end up in a situation like this.

<comment><USER8> This is where a lot of the problems come from. To many "designers" think that they're also usability experts and information architects. The main problem comes from the fact that those disciplines can be subjective in their nature. A lot of decision making in those roles is about personal "opinion" as in; "Well, I think the search box should sit in the top-left corner of the page". What's easier than stating your opinion? And we all love doing that. A lot of employers simply do not understand this.

<comment><USER9> Actually to few designers do ux and vice versa.

<comment><USER8> Did you meant to say; Few designers "understand" ux and vica vera?

</comment></comment></comment></comment><comment><USER10> A piece of advice for you programming guys so you won't need to waist your time on stuff like this (maybe it's for some "designers" too):

Car designer has to work within constrains (materials, engineering, production capabilities, market so on ). He has to understand these things at least a little bit, work them out with colleagues from respective fields.

So does web designer, product designer, packaging designer, book designer and so on. This is why they are called designers and not artists (constrains, utilitarian purpose). The term it self means that this person understands aesthetics _plus_ has other knowledge of working in a specific field.

So if you hire some guy who can draw a nice face or make a poster to do your interface, sorry but this is your problem. You would be surprised how many designers out there start with wire frames, user interviews and glancing through ux and usability books before they even think about doing anything in PS.

@michokest: I have to use teambox on one project now, possibly it's a good thing that you fired yours.

<comment><USER4> I think it depends on your process, we do all of our wires we do all of the usability and PWD accessibility up front, once completed we take those wires to an "artist" who makes it pretty add related imagery, color scheme, etc based on those wires. We then receive a PSD comp from the artist that we then slice into the HTML templates. This works well and is an integral part of our process. We are firm believers in letting artist do the art and UX developers do the workflow and arrangements. This process works well for us and allow us to use the best skill sets from each contributor. This way we don't have to rely on "secondary skills" as we call them.

<comment><USER10> Is the way things look&feel not a part of usability and especially UX? And how can a designer make it right if he is not familiar with actual problems or requirements?

If he does not care, it's his problem but if you don't then you should not blame him for anything.

btw, Isn't UX secondary for a developer too?

<comment><USER4> _Is the way things look &feel not a part of usability and especially UX?_

It depends, color pallet selection would be an example, we have a specific pallet that we use that works for color blind individuals, that pallet was created by our UX professionals, it is provided to the artist as a requirement of the project. What colors that are selected out of that pallet is a function of the artist job.

A/B testing, what color schemes work well is the function of the usability analyst. As that is not a detail that can be front ran.

These are three distinct roles and sure you can hire one guy and he may be decent in 2 but 10 to 1 he is not going to be top of the industry in all 3. 1 if you are lucky, so you have to make the decision do you want one guy doing 2 sun par secondary responsibilities or 3 guys doing their primary role better than any one guy could do all three. That is not to say that you don't have generalist, we have a good deal of them but when it comes to art, if you want the best generalist is generally not a skill set that you want to look for.

<comment><USER10> it's so depressing to read this...

<comment><USER4> Why so, our process works very well, we are very happy with how we have streamlined it and our developers are really happy to work this way. We offer them the ability to develop skills in the other areas, if they show interest, we just don't impose unrealistic requirements on them. We would rather have a few top of the industry guys in their field that 3 guys that can do it all, but average. With our market and our clientele they demand it and we do our best to accommodate it while providing a great work environment for our developers.

<comment><USER10> Well that was political...:)

Look it's obvious that you have some kind of grudge against designers. For your own good at least see the enemy you respect...

<comment><USER4> Thank you for speaking for me, and telling me what my grudges are. I appreciate it. As a design and development company we sure treat these people that I have a grudge against really well. In fact I believe that my hiring the best of the best is what made us who we are and made me successful. I respect each discipline a great deal and pay 20% above industry and equity for people that stay with our org for more than 4 years. All of them UX, Designer, developer and artist.

Just because I know that as a general rule of thumb, one person can not be the best of the best in all three does not mean I have a grudge against them. I have some generalist who are excellent in all three, but they are rare and that is a market reality.

It just means I know that there are a lot of hacks that pass themselves off as masters of all three. When the reality is they usually have mediocre skills in HCI if any at all. I have never seen an industry where people pass themselves off as a professional of a field of scientific study, when they have never cracked a book on HCI and have no idea what human factors is. In any other study this would be considered fraud. Just because I know that 80% of designers have no exposure to HCI methods, does not mean that I dislike or have a grudge against them. It just means that they need to either be trained in HCI or not allowed to own that task in my orginization. They are distinctly different disciplines and require completely different education and toolsets. If that depresses you then so be it, but don't accuse me of bias because you don't like or don't know the facts. It is incredulous and a logical fallacy.

<comment><USER10> "who are excellent in all three" what do you mean by three?

<comment><USER4> There are three recognized formal disciplines in web front end. I have listed them in my posts, ad nauseum. They are HCI, Developer and Artist. They require separate fields of study. The first is a psychological field of study, the second is an computer science fields of study and the last is studied in the arts. Some people cross all three, few do it well. Many from the latter two, lack any knowledge of HCI but pass themselves off as experts in the field.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER11> A point needs to be made that most design software is proprietary software and does not lend itself to version control systems. It would make little difference if you upload a PSD file to git, if there is no real way to parse the changes.

Version control systems oriented toward "creative" are very visual and expensive (like alienbrain) primarily due to the fact that the cost of adding proprietary format parsing capability. And you will not be able to convince the vast majority of designers to use Gimp or inkscape.

I would say that the web developer community needs to promote use of open formats for design composition, perhaps if we can get rid of AI and PSD as standard compositional formats we will make some progress, it is starting to work with Flash.

<comment><USER12> There are a few free/cheap version control systems out there for PSDs.

Pixelnovel timeline is reasonably good, although currently their storage plans are quite small. Adobe's own version cue server (which they annoyingly discontinued) is pretty usable as well.

Hopefully the Adobe Drive stuff they've recently rolled out will end up integrated into one of the big (D)VCS's, so we can finally start managing digital assets as easily as code.

I don't think that you're ever going to get the dev community to force format changes on Adobe, because the chances or someone really building a solid competitor that you'd need to pass files back and forth from are so low.

</comment></comment><comment><USER8> This is very much a real world problem. It seems that the author of this post has written it out of frustration, hence the title. But in the end, I couldn't agree more. If you are a visual designer and you solely design websites and you can't do HTML/CSS, you have no business being in that role. Period.

Related post: <http://news.ycombinator.com/item?id=1692932>

</comment><comment><USER13> From the standpoint of a developer who _specializes_ in design, the problem is NOT (as the article states) "the designer doesn't know HTML" vs "the designer only knows HTML". The problem is people (programmers or not) who don't understand how design fits into the process, sequentially.

Cases in point are sites like 99designs and crowdSPRING that launch projects for "uncoded" web designs. My solution: <http://www.hackeress.com>

Yeah, the site is not finished yet. But it relates to this discussion.

<comment><USER14> Please tell me that's meant to be a parody site of bad design and bad code.

</comment></comment><comment><USER15> I'm with you on this. I think there should be a closer integration of design and development and not a 'handoff' from one to the other. We have been using the pattern that Ryan Singer discusses in this talk <http://thinkvitamin.com/design/ryan-singer-fowa-london-2010/> It was reassuring to see that 37 signals used the same pattern as us.

</comment><comment><USER16> So an average web developer is expected to know (for example) PHP|Ruby|Python, one or more frameworks, SQL, one or more RDBMS, linux, bash + sed|awk|grep etc, memcached, nginx, apache, SSL, HTML, CSS, JavaScript + Jquery or other framework, git/hg/svn, a number of algorithms, design patterns and development strategies. And that's not an exhaustive list.

A designer is expected to know Photoshop and... ?

<comment><USER17> You're speaking as if knowing the tool is the only requirement of being a designer. Good designers need to understand concept development, composition, color, and design principles. Additionally, it really helps if they understand product development and marketing, because those are also integral to creating great designs.

That said, I'm shocked that it seems to be difficult to find designers who also know HTML/CSS. Designers should definitely know how to use these tools as well.

<comment><USER16> Good developers should also understand product development and marketing, basic UI principles, and good software design. Obviously you are more than the sum of the tools you use.

That said, it's expected of developers that they continually learn new tools or improve their knowledge of existing ones. It seems however the same does not apply to designers.

</comment></comment></comment><comment><USER18> Reminds me of a request I got from a webdesigner once, who needed a php backend developer for her projects. Turns out that her work was to design the site in photoshop and then it would have been my turn to put this into HTML & CSS. I still don't know what the php developer requirement had to do with that work and why she needed a developer to do the designer work...

<comment><USER19> I had a job lead that wanted an 'expert PHP programmer' and then wanted me to do the same: Slice up PSDs and create well-formed HTML and CSS from it. It was even at a well-respected company.

'Expert programmer' doesn't mean what it used to, apparently.

</comment></comment><comment><USER20> Interesting article, but reading it with the text left aligned with no margin is a very fundamental design flaw that ruined it for me. I'm not being pedantic, but typography and type layout is a fundamental aspect of the user experience.

</comment><comment><USER21> Good article. But it's hard to find a good designer with all those skills.</comment>


Ask HN: Is this all it takes to get flagged as spam? - <AUTHOR> Context: I submitted this URL earlier today: Hacking strength: Gaining muscle with least resistance, which was briefly on the front page: https://news.ycombinator.com/item?id=10789547
One user declared it spam, and as I was writing my response (which is submitted as a comment below), I found that not only was the submission pulled (which, fine, lots of things get pulled), but now I can't even comment on it because it's in some special spam deadzone. One user who is apparently well-versed in exercise declares it to be "bullshit fluff piece" with Amazon product links and so that makes it spam? In my response which I couldn't submit, I explain how I came across the piece and why I enjoyed it. But on the merits of the piece itself: There's more than 2-3 thousand words, and according to this Unix script:

    curl -s http://matt.might.net/articles/hacking-strength/ | grep -o amazon.com/gp/product/[[:alnum:]]* | sort | uniq | wc -l
 35 Amazon product links, 16 of them unique. Is that a lot? I guess? The OP (according to my ublock) loads only the Amazon URLs and a Google banner at the bottom. Do I wish that the author, when linking to "creatine", linked to the many studies and discussions on its efficacy (and also, rebuttals to it)? Sure. But he covers a lot of ground here, and I didn't see the focus as the science, but him describing his exact steps as a blueprint that worked for him and the context of those steps.
My response that I had originally written talks more specifically about the relevance of the OP and why I find his fitness routine interesting is posted as a separate comment below: <comment><USER2> The submission was [flagged] by other users, not [dead] by the spam filter.

Regardless, there's not much _tech_ , or intellectual knowledge in that post. The get-fit culture is one of the reasons why people outside the bubble have difficulty taking tech culture seriously.

> 35 Amazon product links, 16 of them unique. Is that a lot? I guess

Yes, that is a lot.

<comment><AUTHOR> The OP is a computer science professor at the University of Utah. He is currently a visiting professor at the Harvard Medical School (according to his homepage) [1], presumably for his independent research for the sake of his newborn son, who he later found was the first ever recorded patient with a rare disorder. Presumably, what he describes is his workout routine while raising his two children (as alluded to in his intro: "Then, after realizing I was too weak to lift my son and his wheelchair in and out of the car, I spent just over a year gaining strength and muscle."). It lacks a lot of links to scientific research and deeper discussion, so I read it as a testimonial of how he fit fitness into his academic routine.

His life situation is not what I normally associate with the tech "bubble" but I guess if I'm in that bubble I obviously wouldn't be able to tell the difference.

[1] [http://matt.might.net/](http://matt.might.net/)

<comment><USER3> Above, you wrote that _you_ were the OP.

The OP (to HN) is not necessarily the content author. Did you mean _content author_ in this comment?

\--

OK, now that I've read it, I can see why it was flagged.

The guy talks in absolutes with little to no modern research and gives a lot of bad (and some dangerous) advice (e.g. suggesting lifting to failure at _every_ session).

<comment><USER4> If the advice is bad and dangerous it would've been nice for the comment thread to still exist so I could've read the warnings and found better advice.

</comment></comment></comment></comment><comment><AUTHOR> In response to this comment:

[https://news.ycombinator.com/item?id=10789658](https://news.ycombinator.com/item?id=10789658)

> 28 points (and counting) for a bullshit fluff piece absolutely filled to the > brim with Amazon product links. Tell people they can be fit with no effort > on their part, add the word hack, bump up the upvotes with friend's accounts > to get started, profit.

i don't think it's a fluff piece for people who are wondering how to start, though yes, for people who are already experienced, it probably might not contain many revelations (I was actually interested in the equipment used)

FWIW, I stumbled on this article because I was revisiting some of the author's past work, particularly his writeups on how he, as a computer scientist, tried to figure out the scientific medical research relating to his son's rare genetic disorder:

Hunting down my son's killer: [http://matt.might.net/articles/my-sons- killer/](http://matt.might.net/articles/my-sons-killer/)

The followup in the New Yorker: [http://www.newyorker.com/magazine/2014/07/21/one-of-a- kind-2](http://www.newyorker.com/magazine/2014/07/21/one-of-a-kind-2)

It's possible the author is a good writer when it comes to comsci and medicine and a total self-promoting-spam-douche when it comes to writing about fitness. But at the very least, I am interested that he was able to maintain a fitness regime while pursuing his academic and personal computer science goals.

</comment><comment><USER5> By the way, the same article was not considered spam 993 days ago, with a long discussion on it [https://news.ycombinator.com/item?id=5504129](https://news.ycombinator.com/item?id=5504129)</comment>


Becoming disillusioned in the programming profession – please help - <AUTHOR>

I have been programming all my professional life. I'm in my early 30s now, got my first programming job at 21, in college (I majored in CS). At first, my professional development seemed easy and natural and now I'm feeling that I'm hitting the limits of what a programmer can do, which saddens me a lot.
In short, after 12 years in the industry, I know all too well what it takes to build a software system. I now know that bringing a project to a reasonable degree of completeness requires crazy amounts of work most of which is not only not sexy, but close to downright menial. Startups' products are worst in this regard as 90% of them are some variation of CRUD web systems, but even if you try to dig deeper, the ratio of intellectual reward to sheer amount of work is terribly low. For example, want to experiment with programming languages? You must plough your way through parsing (a solved problem) and maybe some variety of VM to emit code for before you can even start actual work.
What counts as a personal project on sites like HN tend to focus on solved problems as well. People talk about developing web frameworks (a mostly solved problem) or similar things that would be interesting for a sophomore CS student but not for me right now. Problems similar to what Project Euler is about seem too limited, lacking any chance of impact.
This notion of impact is the key in how I feel. Contrary to what they write in Wired sometimes, it just feels like one programmer can't make any impact any more, that you're always a cog in the machine. In a big project you always work on a very limited subset of functionality, away from the essential parts of the product, just because there's no way one person can pull out the weight of the entire real-world production-grade system. And short of working alone there's no way to get yourself closer to those essential parts.
Please help me. I'm running out of motivation and I need to believe that it can be elsewhere somewhere around. <comment><USER3> TLDR: There are still many unsolved problems. You have to go beyond your mental comfort zone and start exploring your "unknown unknowns". I jumped out of my mental well, found my "unknown unknowns", realized that there's an ocean of problems out there, and am now swimming in it very happily!

Long version: Same situation as you 6 years ago. Quit "safe", salaried job to work on freelance projects. But eventually realized that most freelance projects too are the CRUD type. Quit that too.

Then I found that fields like computer vision, speech recognition, space exploration and embedded systems still have many many unsolved problems, and require proficiency in theoretical subjects like linear algebra and algorithms, hands on challenges involving electronics and mechanical engineering, and practical software development problems like performance optimization. Every time I learn something in these fields, my mind bursts with new ideas and makes me explore and do more. It's an expanding spiral of unsolved problems. I don't think one lifetime is enough to solve my own ideas, let alone rest of the world's. It's a complete turnaround from how I felt 6 years ago.

Now I enjoy exploring and building my own projects and ideas, and have redeveloped my love for all kinds of programming - low level systems programming , desktop app programming, mobile app programming, even web programming.

I also learnt electronics on my own and thoroughly enjoy my hobby electronics projects.

<comment><AUTHOR> That's actually an interesting reply. Do you actually get paid to do, say, computer vision? If so, what's the ratio of enjoyable to menial work (please be honest)?

Also how do you manage to find jobs like this? I found that hiring managers tend to, like, lie about the jobs. What I mean is there's no shortage of interestingly- _sounding_ job descriptions out there that have nothing in common with what the hired person actually supposed to do. And you can't know the day-to-day reality of any job before you'll actually get it and then it's too late. How do you work around this situation?

<comment><USER3> I totally agree with you that most job descriptions don't quite match the day- to-day tasks we end up doing. It's been my experience as well. Not just in all my salaried jobs, but even in the freelance contracts I took up.

My solution to that might seem extreme to many, but here goes: I simply stopped applying for any salaried jobs and ignored almost all the freelance gigs that came my way! The answer to your question is that I'm not getting paid by anybody. I don't even want to get paid by anybody. Working for others on _their_ ideas is something I find downright unpleasant.

When I worked for others, many tasks seemed "menial" / "time consuming" / "boring" to my mind. In the past, I did not realize that this unpleasantness is simply because I'm working on others ideas, instead of my own. Instead, I blamed it on the field of software engineering. I even remember confessing to a friend that I'd started to find programming boring. That was some 4 years ago. As I said, things have totally turned around for me since then. Now when I work for myself, everything becomes a new adventure from which I learn something more. I feel that the only way to get work satisfaction and make any impact is to explore the frontiers in different fields, work on my own, indulge my hobbies and build my own innovative products. It's definitely a risk, but luckily I had built up a nice nest egg during my salaried and freelancing days.

If all this sounds too radical or impractical to you, then you can gently start off by offering to develop a full fledged software solution for a small business you know about via your connections (somebody mentioned veterinarians above...I agree with that kind of thinking). I'd avoid the freelancing sites though - they are a whole different set of unpleasantness. In small business freelancing projects, you are usually the only developer doing everything, and so you will make an impact without any kind of restraints on your technical creativity. Depending on the luck and nature of that business, that impact may even be widespread in some way.

Of course, like me, eventually you may get bored of this too, since most such freelance projects too start off as CRUD type applications. But even when implementing such boilerplate, I kept my mind open for alternate solutions that involved unconventional fields like computer vision and speech recognition.

Many business processes today involve humans in the chain only because vision, cognitive thinking, reasoning and speech do not have practical software solutions. Imagine implementing a computer vision based system that is able to keep accounts automatically from handwritten bills, without requiring users to enter details. Such problems are most definitely not solved. I'm ok if all I end up changing is making one local business richer and happier...it's still better than zero.

<comment><USER4> Maybe I missed it, but how do you get money to live on?

I'm kind of doing the same thing. I quit a corporate job a few months back to work on stuff I'm really interested in. Doing a bit of blogging and hoping that maybe working on things I'm interested in and then blogging about it will get me a gig getting paid to work on things I'm interested in. But I suspect it's going to be a long slog getting to that money part. I'm fortunate, in that I've been frugal over the years and saved up so that I could continue on this path for at least another six months to maybe a year (well, insurance for myself and my wife is almost the biggest expense, almost as much as the mortgage). I'm just afraid that after six months or a year or whenever I can't afford to keep doing this that in the end nobody will have taken notice and I'll just have to go back to a soul crushingly boring corporate job again.

<comment><USER3> Soul crushing is exactly what they are!

My earnings from previous jobs and contracts, and the returns on my financial investments, will keep me going for the next 5 years. I'm single, so it's relatively easy for me.

I'm currently writing an ebook and working on 2-3 software project ideas which I hope to sell to local businesses and earn revenue. I'm also preparing some training materials, since trainings pay a decent dime here.

My long term plan too is the same - software products, some electronics products, ebooks, and trainings.

In addition to waiting for a gig, perhaps you can also think of monetizing your ideas into a business to sell to customers.

</comment></comment></comment></comment></comment><comment><USER5> Well, it sounds like it's time for someone to put on his big boy pants! Congratulations, son!

Yes, real-world software projects that make money for a business (and pay you a salary) are larger than one man can handle. There's a lot of grunt work, and maybe only a handful of new and interesting things to do. At some point, you're going to have to accept this, and just get on with it. If you work for a business, the goal is to make money, not to work on new, kewl, glamorous software projects all the time. Sometimes those goals do intersect, but it's rare. It's called 'work' for a good reason.

It also sounds like you're suffering from another common malady, and that is the idea that programming is all about writing code, and programming languages, and frameworks, and fast turnaround results. I think you're starting to realize that this is not really the case, but you can't figure out why, so you suppose that maybe it's due to the insurmountable grandioseness that seems to surround even the smallest programming project. I think you've grown up under the spell of "programming as an end in itself", and now the illusion is showing some cracks.

Look, programming is not an end in itself. It's a way to express the solution to a computational problem. Think about that for a minute, or, preferably, the next week.

Programming languages are basically the same idea as mathematical notation - it's a way to express an idea about how to solve a problem. Sure, there's also the coolness of having a machine take your expression of how to solve a problem and actually solve it for you, but programming is still just a way to express the solution to a problem.

Look at all the posts we see everyday on HN and proggit about programming languages and frameworks and whatever the latest hare-brained language idea that the functional programming circle jerk fest has come up with. Man, it's like going to a math conference and all everyone talks about is the latest ways to write down algebra! It's no wonder that there've been no real fundamental advancements in computer science in the last 30 years.

I think you need to rewire your brain about the philosophy of programming, what it is, what it's for, and what it's not. You are at a crucial point where you need to decide if you're ready to go up an abstraction layer, and start thinking more deeply about the various problems whose solutions may be expressible in a computation form, and stop worrying about programming languages, frameworks, and "impact". If you don't want to do that, then you might as well just be happy laying bricks and comparing trowels, and leave the hard thinking to more interested and capable people.

</comment><comment><USER6> Hello, throwthrowaway I can relate to what you're saying as I started at age 21 and after 6 years, was pretty much disillusioned with the industry.

To be honest however, I never really bought in the whole "IT/software is eating the world" mantra and was tirelessly looking for an exit plan throughout my whole time working in corporate IT.

However what fixed me wasn't the glory of moving to an exciting project or getting more pay, but taking time off and finding joy in what I'm working on in the moment. I know it sounds dense but I was getting depressed because I was getting older and didn't see myself progressing along like the dreams that people advertise here, like becoming a financially independent entrepreneur who influences the blogosphere or an influential programmer who has famous open-source project who is revered here.

I equated professional success in the form of my salary, prestige associated with the project that I'm working on, the intellectual rigor associated with the tech stack that I'm working with - with my self-esteem. And I realized that life is too short to chase after these things instead of choosing to work what you want to work on but not being so hard on yourself to stop you from enjoying the process.

I know that every time I switched jobs, I was angry and frustrated with my current one and aimed for higher salary and title to compensate for what perceived slights I've experienced. But ultimately it was self-sabotaging as I was responding to what others deemed to be successful instead of what I wanted to do. And beforehand, I was too scared to do what I wanted to do because I always thought I needed more money, more time and have other parts of my life ready to tackle the problem; but really, I was just scared of failure.

But I think failure is the common lot of most folks, despite of what the VC promotion is; but if you can accept that and be happy with you just having the opportunity to work on your own thing and follow through, I personally found that more rewarding over money and arbitrary prestige.

</comment><comment><USER7> I think this is fairly common, my programming friends and I are in a similar situation.

There are diminishing returns to programming skill. Instead of focusing on becoming a better programmer (learning more languages, frameworks etc) you should focus on developing domain knowledge. Most of the time, programming is only useful in conjunction with some other skill. Find some time to develop domain knowledge in a fertile area.

Random example to illustrate. How do vetrinarians work? Maybe their day-to-day productivity would be enhanced by better software. If you have worked for 12 years, chances are you are better set with cash and can take greater risk. Why not get an idiosyncratic job like working in a vet's office to learn a new domain, or work in an IT job that would at least be partially exposed to a new domain?

Get off the web/orm/whatever framework carousel, work on a farm and build a carrot picking robot, become a secretary at a law firm, get a truck driving license. Stop coding for coding's sake and get in touch with the real economy. Then start coding.

</comment><comment><USER8> Have you considered making a switch to a data team? I switched to a BI/DW team 5 years ago because I did not enjoy building corporate CRUD apps all day. Working data in a large enterprise is really more of a mental challenge than a programming challenge.

The coding work is so much more enjoyable, only about 5% of the it is UI, the rest is all design and working the data. I absolutely hated how long it took to do the UI part of a crud app, so much that I steered my career around it.

Data work is so challenging because you truly have to understand every process you are taking data from and come up with creative ways to make that data useful to the business. The BI team at my work may not be the most advanced java guru's but they are some of the most creative solution designers you can find in our company. They are also the team with the most experience and the most knowledge about our super complex business processes because you have to understand them all to produce useful analytics.

I also can't stress how nice it is to have SQL as the most used tool in your toolbox. I scoffed at it as a simple data query tool before joining a data team. I now know it as the most efficient programming language I have ever used. Sure it can take a lot of mental effort to develop a complex query but it is so much faster than putting that logic in any other language. You simply ask a detailed question of the database and it returns an answer set to you. You do not need to tell it how to get he answer, the optimizer takes care of that for you and it does a much better job than you could ever do (99.9999% of the time). No more coding endless series of loops. A couple dozen lines of sql could take thousands of lines to code in java/c#/ruby/python etc.

There is also a whole new world of data science opening up right now and corporations are cashing in. I will be learning hadoop and map reduce very soon so we can position our team to offer a competitive advantage to our business through big data. I will have to learn R and python because they are used to gather and work all that data. The future is looking bright for data workers.

</comment><comment><USER9> I feel like you are talking up two different things in your post and comments:

1\. Making an impact

2\. Solving challenging technical problems

These seem like separate problems that have little to do with one another (there may actually be an inverse correlation, see below).

If you want to make an impact then create a product that solves a big problem for humanity. Programming has essentially nothing to do with this, other than the fact software happens to be at the core of most, but not all, products these days. You can make an impact by understanding people's needs, coming up with a great solution, marketing it, convincing others to join you, and creating it. Programming will likely be a part of the above, but not the most important. And its importance will decrease with your product/company getting bigger (as will the impact any single programmer makes).

If you want to solve difficult technical problems then you can find lots of those in Computer Science research, either academic or industrial research labs. These are seriously challenging and can be fun to work on. However, I believe there is an inverse correlation between things that make an impact and things are are challenging research projects. Research projects are often so narrow that not enough people care about the results, and implementation in the industry is usually delayed by 5-10 years (less for industry research within the company).

</comment><comment><USER10> One programmer can make an impact to a degree. Yes, making an enterprise system for some industry requires a ton of coding for business rules. But it might be possible to make that coding simpler/easier so that people with domain knowledge could express it without having to code it, of course this is easier said than done.

Also taking a step back and seeing how things could work differently is a nice idea. One of the most recent examples is Bret Victor, just his demos gave a rise to a lot of new cool stuff. Or take LightTable, it has quite interesting ideas for interactive programming.

Regarding start-ups, take for example TransferWise, it solved a business problem, and it started as a two man band. ZeroTurnaround with it's JRebel, solved a technical problem, but was conceived by one person.

So, yes, one person can make an impact, but it takes solving unsolved problems or noticing problems needing to be solved. Of course one person usually can't be a business, which is somewhat different from making an impact.

As a start I would suggest watching Alan Kay and Bret Victor videos.

</comment><comment><USER11> People of our age group entered this field assuming that developing new programming languages, software processes etc. would get us to be the next Turing, Dijkstra ... - however, that frontier has been long conquered, so as to say

Currently, enabling conventional processes through human network linkage via internet etc. is the big thing - think Amazon, Twitter, Facebook etc. Even this wave will end sooner or later

If I, you or anyone of our age group wants a real challenge, we need to create things which provide value above the already integrated human network(via electronic medium). I mean creating next Amazon etc. is not fun - the real deal lies in thinking what people will next need once they have such services available

PS: 1\. Thanks for raising this question, I too have similar doubts - <USER2> this response helped me frame things for myself better :-) 2\. I don't think making impact through programming is viable anymore - my response hinges on that being assumed and understood

</comment><comment><USER12> You need to work on projects that you genuinely feel passionate about, not just random companies to pay the bills. You can still be a part of a bigger system but feel great about the work / product that your company is putting out.

If you feel passionate about social networking, work on facebook or twitter. Hell, twitter's existence was almost solely responsible for enabling the Arab Spring uprisings in 2011 and 2012, resulting in some pretty widespread social changes.

If you feel passionate about Open Source, try working for RedHat. If you think AI is going to be the next big advancement towards human progress, try to get on at IBM or another research time devoted to it.

Are you really saying that there aren't any problems out there that you feel a need to solve, that there aren't any companies solving them that you'd like to work for?

<comment><AUTHOR> No-no, this is not about passion. When one joins Facebook this does not mean he or she works on "social networking", it means he or she works on a tiny portion of a massive Facebook's codebase, implementing, say, a layout of a targeted ad for Chinese users.

I don't want to say anything is wrong with Facebook in this situation, it's just a company with a huge product and 7000+ employees. You are almost guaranteed to be re-inventing the wheel "Facebook way" there.

<comment><USER13> From personal experience, the bigger (or more structured) the company, the more likely it is that you will be actively discouraged from straying too far from your assigned bit of work, either by doing it differently, or taking on a tangential problem in the codebase. This essentially kills, over time, any desire or ability to 'make a problem your own', and you run the risk of becoming just another code monkey.

</comment></comment></comment><comment><USER13> I can agree/sympathise/empathise with almost every single comment you've made, and I'm also mostly none the wiser on how to overcome it. I'd be quite happy to b!tch about it with you over IM or email tho!

I'm roughly your age, and started programming around 10, doing my first paid work around 18 on a part-time-while-studying basis. I truly miss the days where one person could know a lot about a lot. Nowadays, it's a struggle to either know a reasonable amount (not even a lot) about some niche area, or even just be barely competent in a wider spectrum of things.

Where are you based? I was starting to think the problem might be limited to areas or regions (since almost everyone I know elsewhere seems so content/fulfilled).

<comment><AUTHOR> I'm in London. There are plenty of jobs around here and I don't feel that it's a place thing. It just feels like a state of the affairs in the whole industry. I always give example of VisiCalc being written by two people from scratch. On one hand, they didn't had the modern tooling, on the other hand, imagine doing a similar project today — no way it would be pulled off by just two guys.

<comment><USER14> VisiCalc was incredibly primitive by modern software standards. You could write a web-based version with equivalent functionality in a week or so (in fact, I think that's how Google Spreadsheets got started).

Small popular programs get extended, grow, are improved by large teams of paid programmers, and then eventually the category becomes so advanced that you _need_ to have that large team to make progress. I can (and have) written Tetris in 3-4 hours, but there's no way I could write Starcraft 2. But that doesn't mean that small programs have become impossible to write; it just means that you have to start looking where other people are not. Look at the success of 2048 or Flappy Bird. There's probably another category-killer out there for small-business apps, but if someone's found it they aren't going to advertise it.

</comment></comment></comment><comment><USER15> Perhaps you could re-focus? It's hard (but far from impossible) for a single dev to make a major impact by building something ... what about considering some of the unsolved problems in the field?

[http://en.wikipedia.org/wiki/List_of_unsolved_problems_in_co...](http://en.wikipedia.org/wiki/List_of_unsolved_problems_in_computer_science)

Working on these problems could be done in parallel with a traditional coding job, and would give you no end of intellectual exercise, even if you didn't get very far with any of them.

Another option would be to pursue teaching. Introducing other people to coding & building things is incredibly rewarding, and will also possibly help your career.

<comment><USER13> The OP didn't mention what the rest of his life circumstance is tho. Married? Kids? Mortgage? All those things tend to drain time and energy away from doing meaningful side project work.

And depending on where he resides, I've found that barriers to entry into teaching jobs can actually be substantial (assuming you're doing more than teaching older people how to use a mouse).

<comment><USER15> I didn't necessarily mean teaching _jobs_. I'm currently a full-time dev with wife and children, and I'm (slowly) organising a free day course on Ruby.

Also, you can teach as part of many day jobs. Everything from mentoring new devs to running Rails Girls tutorials on company hack days.

<comment><USER13> Valid points, all of them. I volunteered for many years (up to reasonably high levels of responsibility) for a major technical society. The issue that became apparent though, is that your day job still consumes most of your time, and it takes a LOT of satisfaction elsewhere to make up for lack of motivation/passion/interest/recognition in it (especially if your employer has less than no interest in/support for your volunteer work.

If you're in a position where you can apply your skills to help others in your work environment (or at least with their blessing outside that environment), that is gold! Sadly, such opportunities do tend to be few and far between, from what I've seen :-/

</comment></comment></comment></comment><comment><USER16> Programming is not a profession.

"It would be great if programming were a proper profession, but it isn't. A profession has a structured model for advancing through levels of skill and ability, be it studying for a law degree and articles (working for a legal practise) or the years of undergraduate and medical training a doctor undertakes before specialising. The latter has clearly-delineated ranks, from junior doctor, via a brutal regime of 80-hour weeks, to consultant." [http://dannorth.net/2011/01/11/programming-is-not-a- craft/](http://dannorth.net/2011/01/11/programming-is-not-a-craft/)

</comment><comment><USER17> There are problems to solve, and there are Problems to solve. Are you looking to conquer a new programming challenge -- develop stuff nobody's done before from a coding standpoint? Or are you looking to make a big impact in a way that hasn't been done before?

Please read this blog post. Does it get at some of what you're talking about? [http://erlebacher.org/2011/03/22/time- scales/](http://erlebacher.org/2011/03/22/time-scales/)

If so, I get it. Let's talk.

</comment><comment><USER18> I would venture to say 90+% of all useful software is some variation of a CRUD app with a shiny looking mobile or web frontend.

You could consider going back to graduate school, getting a PhD in CS and work on, say, algorithms or machine learning or something. That way you'd be discovering new technology. The odds of getting a job in academia are very low just because of overproduction of PhD's, but the degree is not likely to hurt your employment possibilities, and might even give you some new and interesting opportunities.

</comment><comment><USER19> Many research projects, at universities and research centres, need talented, creative programmers to work on computer software that support some research project. For example, there is a lot of very high impact computational work being done in genomics research, astrophysics, etc.

You do not need an advanced degree to work in technical support roles.

I would imagine that the programmer who works on the analysis of protein synthesis that in turn provides a cancer cure would get a buzz out of their contribution.

</comment><comment><USER20> _For example, want to experiment with programming languages? You must plough your way through parsing (a solved problem) and maybe some variety of VM to emit code for before you can even start actual work._

Why? If you're just trying to experiment with language, why not write a simple syntax tree interpreter? Save the full, production-grade implementation for when you've experimented enough to know more or less what you want to implement.

</comment><comment><USER21> This reminds me of one of my favorite quotes:

"In programming, the hard part isn't solving problems, but deciding what problems to solve." — Paul Graham

</comment><comment><USER22> Look at meteor.js (I have been programming for around 20+ years – I haven't seen a tool that is such a big step change for a long while – the tool allows an individual developer to achieve more than whole teams – realtime multiuser web applications with hot swappable code - shared client and server code - just some of the good things about it)</comment>