Ask HN: How Do I Become A 'Good' Programmer... Like Everyone Else Here - <AUTHOR> I've been developing for about 4 years now, 'seriously' building fairly complex web and mobile apps for about 2. Yet, every day I run across articles here and comments that make me feel incredibly useless and inexperienced.<p>How do I bridge that gap between where I am now, and being able to spend time browsing through modern php, ios, (whatever language I know) articles and not feel under water and under the average knowledge bar? <comment><USER3> FWIW, I'm 40 and have been programming professionally for 15 years, and programming as a hobby for probably 8 years before that.

I still run across stuff I don't understand, all the time.

And I'm not one of those people who have "1 year of experience 15 times" instead of "15 years of experience". I'm pretty aggressive about learning new stuff and expanding my horizons. And yet the pace of change is so fast, there's always new stuff coming out, or areas of tech I'm discovering for the first time.

The moral of this little diatribe? Don't sweat it. Be curious, explore, learn, hack, and don't worry too much about comparing yourself to others. And don't assume everybody on HN is some uber-genius, super-brilliant "10x" programmer. I mean, sure, there probably are people like that here, but I'm pretty sure they are a small minority.

For another take, you might find esr's "How to become a hacker" essay useful:

[http://www.catb.org/esr/faqs/hacker- howto.html](http://www.catb.org/esr/faqs/hacker-howto.html)

Other than that, my only advice would be to start a project (open-source or not, whatever you think) that gives you a venue to challenge yourself. That is, start a project that you don't believe you're really competent to complete, and then go do it.

Also, "read a lot".

<comment><USER4> Something to note on thinking everybody is a super-brilliant "10x" programmer: You're not seeing the same people post deep, insightful things here on HN. There are people who know a lot about this one thing, and can write very accurately and intelligently about it, but don't know anything about HTML or desktop programming (C, C++, others), server-side logic, etc.

The same goes for each of those fields, and every other field--there are certain people who know a lot about them, and when the topic comes up they talk about them. The reason it seems like there are a bunch of super-brilliant "10x" programmers is that there are many, many of these specialized people on HN and around the web, and at least a few of them always have something to say about a topic. It doesn't mean they're all super-brilliant "10x" programmers.

<comment><USER5> "10x" is one of the more destructive memes going around. It's a subtle shift in the discussion from talking about technique and actual work, to talking about something which is being used as a proxy for "your worth as a human being".

The only work which matters is the work which gets done. You can accomplish _a lot_ by simply doing the things that need doing. Bad code gets written and all that.

<comment><USER6> 10x isn't just a meme going around ... It's even referenced in "The Mythical Man month". If you're a "productive programmer" you should never have a problem finding employment but what "productive means depends on the context. Does NASA want code quickly or do they want well thought-out and thoroughly tested code? With Etsy's DevOps infrastructure, they're pretty confident deploying several times a day.

</comment></comment></comment></comment><comment><USER7> I will give you slightly different advice than most people here (that advice being "just keep programming, and experience will come on its own). First, figure out what it means to actually be a good programmer. For example, do you want to be a JavaScript ninja? Or do you want to know everything there is to know about how your OS works? Or do you want to be able to put together a mobile app that is cleanly architected and maintainable all by yourself? Or do you want to be a full stack developer, able to develop a backend service and a front-end UI all at the same time? Or do you want to be a good computer scientist and solve theoretical CS problems and reason about complex algorithms?

Once you have picked your definition of "good programmer" (your goal), write out a map of stuff you do and do not know. For example, I am a full stack developer, but I don't yet know CoffeeScript. It would probably be a good addition to my toolset as I do a fair amount of JavaScript programming for the frontend. Having this map will help you fill in the blanks of technologies and concepts you are missing. Take your time and learn these slowly, usually as a part of a project, and not just an exercise. As you learn, adjust your map. You will inevitably come across stuff you did not know existed or was important.

Remember, it's easy to run in many directions at once with this approach. Don't do that. If you already know Ruby, don't go learning Python (and vice versa). They fulfill a very similar role. Instead go learn how HTTP works. Or how to work with a different data store you haven't used before. Or how to use a frontend JavaScript framework. Or go learn C.

Here's my recommendation learning technologies to become a full stack developer (in order, when starting from scratch): HTML/CSS, Python, Django, PostgreSQL, JavaScript + jQuery, AngularJS, HTTP, networks/socket programming, C + data structures and basic algorithms, functioning of operating systems (libraries vs syscalls, toy operating systems), compilers (build a toy one), Lisp, Haskell, Erlang, networking again but this time thinking about distributed systems.

Good luck!

<comment><USER8> Great response Igor. This is pretty much how i try to stay up to date. The thing i find frustrating is when you finally become really good at technology often there is already a new out there which you are totally clueless in and feel like you are back to being a junior. Being a programmer for an average intelligent person feels like you are constantly chasing your own tail...

<comment><USER7> I hear you. There will always be new and exciting technologies that will be developed that will supersede what you've been using. However, remember that not every technology is going to "stick". Instead of trying to chase down the latest and greatest, try to evaluate whether it's an actual improvement over how you've been doing things. For example, I recently learned Angular. It is a great framework and I like how it works. A competing framework, KnockoutJS, is not as good. I learned just enough of it to see that it's not an improvement.

Basically, focus on getting things done and building things. If a part of what you are building seems like too much work, someone probably has already built a solution for that. Otherwise, don't worry about using the absolute cutting edge stuff. At one point there was a tongue in cheek saying that "it would take more time to evaluate the popular JavaScript frameworks than to write a new one" (or some such). It still holds today, so don't sweat the name of the tech and stick to the stuff that you can be productive with.

</comment></comment></comment><comment><USER9> Like everyone else here? I hate to burst your bubble but the vast majority of the programmers here are not nearly even close to as good as you think they are. Mostly they're good at talking like they are and memorizing obscure facts about computer science. The reality is that everyone who codes pretty much sucks at it or they get lucky a couple times and do something significant.

The same goes for painters, musicians, poets, writers, anyone that you think is "good" is actually just someone who found their thing and hammered the hell out of it until they squeezed out a handful of really good works if they're lucky. What you don't see is the massive pile of absolute garbage most of these people produce and keep from the public's eye. I think the defining characteristic of someone who's actually good at a creative activity is whether they can admit this and get past it as just part of creating.

So, instead of saying how can you be like all of these guys, how about how can _you_ just improve your own skills? Since everyone sucks at this to some degree or another, all that really matters is how you improve what you do and get better at it. Ultimately, that just takes hard work, study, and trying to find any tricks and hacks that are being kept from you.

As an example, I'm teaching myself to paint and I suck at it, but I don't give a shit if I suck at it, I enjoy it. So for the last almost month I have been painting the walls of a box over and over again until I learn how to do it right. It's fun, I like it, and I don't care if other people are better at it than me because I'm finding my thing and I keep improving because I keep working at it and failing until I get it right.

<comment><USER10> This surely depends on your own personal definition of good.

It's useful to have a definition of good that allows people to feel confident about their experience and good about themselves because feeling this way helps to engage them further in the practice.

What you actually just did was entered a group conversation to tell almost everybody there that they are bad programmers before doing a humility display for everybody to see.

When I think of the steady progression from apprentice to journeyman to master, I feel that what is good is the progression, and what is bad is anything that stops the progression: lack of confidence, over-confidence, or the kind of severe lack of ability that causes people to be rejected from a market before they are ready to compete in it.

I've gotten the feeling that you are quite confident so while it's great that you are dialling back any arrogance and concentrating on continuing to learn I wouldn't say that it's necessarily healthy for everybody in tech to raise what they consider "good" to be top-1% of Google R&D as this could just serve to stop them from even trying.

<comment><USER9> "What you actually just did was entered a group conversation to tell almost everybody there that they are bad programmers before doing a humility display for everybody to see."

No, I was talking to the person who asked the question, not you, so I didn't "enter a group conversation". Yes, I did say most programmers are bad programmers because that's definitely the case, and that's the case in every single creative or technical discipline humans do. To say otherwise is nothing but pandering to the people posting here and does nothing to improve the education of people trying to learn.

What does improve their education is to show the reality of programming, which is that it's hard and most everyone sucks at it, but that you can improve, and that's why it's also fun to do. This is only a demoralizing belief if you're arrogant enough to think that you're better than everyone else. Real practitioners admit that they're barely capable most of the time and accept that they have to work hard to achieve their goals.

<comment><USER10> > No, I was talking to the person who asked the question, not you, so I didn't > "enter a group conversation".

I am not a group actually so I certainly didn't just imply you were talking to me.

Additionally, this a threaded discussion board in which you are involved in a group conversation. There was already a group conversation when you joined so I think arguing that your post should be perceived as a one-to-one communication on a many-to-many platform is a bit rich.

> Yes, I did say most programmers are bad programmers because that's > definitely the case, and that's the case in every single creative or > technical discipline humans do.

The terms good and bad are subjective and we attach our own values to them when we use them. It is not _definitely_ the case that almost everybody has been _bad_ at technical disciplines unless you believe that your understanding of the boundaries between good and bad is better than everybody else's and subscribe to the utilitarian belief that there is more upside to using the term 'bad' to negatively reinforce bad work and lower people's self-esteem than to use the term good to raise people's self-esteem and positively reinforce their good work.

> To say otherwise is nothing but pandering to the people posting here and > does nothing to improve the education of people trying to learn.

How certain of this are you? Have you heard of the terms "fixed mindset" and "growth mindset", did you read and disagree with the studies which show that many people exit from domains that they believe they are bad in (STEM, etc.)? Does your philosophy deny the benefits that come from the tendency towards competitive behaviour that confidence gives people?

> This is only a demoralizing belief if you're arrogant enough to think that > you're better than everyone else. Real practitioners admit that they're > barely capable most of the time and accept that they have to work hard to > achieve their goals.

I thought it was common wisdom was that it was demoralising for most to feel that you they are bad at something.

Your description of "real practitioner" as an exclusive category of "realness" with membership rules set by yourself that by a strange coincidence also contains yourself is really funny by the way.

In reality, there are good engineers that consider themselves bad [0], average engineers that are poor, bad engineers that consider themselves average, etc. There are people that strive harder the worse they feel, there are people that strive harder the more their ego is stroked. There are great engineers that think they're barely capable of the work they do, and there are great engineers that think they are god's gift to technology. There are people that are attracted to work in which they are out-of-their-depth, as well as people that are driven away by the fear of failure.

It's really hard to say anything with certainty but I know I've met most of these people and I don't feel there's any piece of advice that works for everybody - my intuition was just that the guy at the top seemed like he needed his self-esteem raised not lowered to help with his learning. (For the record, I only responded to you directly because I felt you were contemptuous towards the arrogance of other engineers while also having decided you would be the sole objective judge of what it means to be a "real practitioner.")

[0] There are engineers working in extremely competitive work environments that contain only the top-10% of their domain and they will often forget this when they evaluate themselves. Valuing your status locally is easy, globally it is hard! Best view for me has just been: I am good at learning, I like that I try hard, I have mixed abilities but as long as I'm able to positively contribute I do not need to worry.

</comment></comment></comment></comment><comment><USER11> If you'll allow me the arrogance of saying that I'm pretty good in my genres (web-app, mobile, and I'm starting to come into my own in game programming but really I have a shit-ton to learn in these fields I know enough to sound smart but I'm FAR from a genius), I'll say that most of what you are seeing is a bunch of subject matter experts answering questions. For example I might be able to tell you the in depth ins and outs of using RabbitMQ as a messaging queue for async processing in a web application but I know next to nothing about how to write an audio driver for Linux, or the math principles behind the best cryptography algorithms. So to answer your question I'd need to rephrase it a bit and say how do I become really good at a subject. Here's what I did: \- I have 15 years of professional experience, sorry I don't think there is any shortcut on this one. 15 years teaches you things and processes that you will never learn in 2. THIS DOES NOT MEAN that all programmers with 15 years are better than anyone less experienced just that there certain things that the years drill into your head that's impossible to give to someone with less experience. \- I read A LOT. Like 3-4 technical books a month. Immersing myself in the my area of study helps my think naturally in those techs. \- I write a lot of experimental code. \- I go to meetups and talk to other good developers \- I constantly try to learn something that I think is over my head.

Never stop learning and never stop pushing yourself. I'm driven to know everything I possibly can about my areas.

<comment><USER12> >I read A LOT. Like 3-4 technical books a month

Could you please elaborate on this? As in, what kind of books do you look for? I have developed this feeling that focussed blog posts by experienced programmers teaches more than books. Also, there are way too many self published authors out there. I know it's a good thing in a way but with so many books, it gets tough to figure out which ones are worth your time. In other words, I'm looking for an example like "I wanted to learn x, so looked up and read y". Thanks.

<comment><USER11> Sure, I tend to target books I see mentioned on twitter. Then I also tend to stick to books by O'Reilly, Pragmatic Programmers, and Manning. I've found there quality of books to be much higher in general to others. Then I tend to try and find books that are written by a blog author or the library/open source project that I like. For instance Chas Emerick is pretty well know in the Clojure circles, has a good blog and a good twitter account, he has also written a book on Clojure for O'reilly so I picked it up. Then I've seen the PragPub book about Web Development in Clojure and I've seen at least 3 other people on twitter mention it positively so that was book number 2 for that month. For number three I took a chance and picked up a self published book, Functional Programming for the Object Oriented Programmer because it covered Clojure and I'm mostly an OO Programmer so it completed my deep dive into Clojure for that month. I don't always dive so deep on a subject but last month was my learn Clojure month :).

</comment></comment></comment><comment><USER13> After my first quarter of procedural C++ in college, I thought I knew so much about programming. I was, obviously, under the influence of the Dunning-Kruger effect at the time (in other words, I was a clueless n00b).

Thirteen years later, I know vastly more than I did then. I've worked with a wide variety of languages, applications, and frameworks. I've spent untold hours reading blog posts, articles, code, and Reddit/HN discussions. Today, I still feel like I know a pretty good amount about programming, except now I also know (and accept) that there's effectively an infinite amount of possible programming-related knowledge out there, and I will only ever know a fraction of it.

Like you, I routinely see articles posted that make me once again feel clueless and inexperienced (such as raganwald's recent post on JS multiple dispatch, or anything involving Haskell / Lisp / assembly / cryptography). I sometimes worry about dealing with technical interviews if I ever move on from my current job. Ultimately, though, I know that I can get stuff done, and that while there's lots I don't know, I have the ability to research and learn.

The other posts give some pretty good advice. For me, it comes down to:

1) Learn by doing. No better incentive to learn how to do something than when you need that to make a project work right.

2) Keep reading technical discussions on sites like Reddit, HN, and tech blogs

3) Never be afraid to say "I don't know", and go research the subject.

</comment><comment><USER14> Realize that programming is an _incredibly_ broad field, so you're absolutely guaranteed to run into many areas in which you have no experience yet others have achieved expert status. Feeling inadequate is normal. As mindcrime said, don't sweat it. Nobody knows everything about every area of programming.

IMO you should decide what you want to do in more concrete terms. Being a "good" programmer can mean a lot of things. Do you want to become an expert in some specific area of computer science, i.e. machine learning? Do you want to design your own language? Or an OS? Or your own framework? Do you want to be the ideal super-productive jack-of-all-trades startup first-hire/tech founder? Do you want to strive for the broad knowledge, wealth of experience, and leadership + mentorship abilities of an effective CTO? The list goes on.

You can't have it all. Pick one, or pick a few. Then spend years challenging yourself, ideally working on real projects that are meaningful to you, alongside other great programmers who give you something to aspire to.

</comment><comment><USER15> > like everyone else here

You need to realize that there are a lot of people commenting on hacker news (or for instance Stack Overflow). On any given topic, specialists of that field will show up and share their insight. For instance, on an article on technology X, it's not uncommon that someone that helped developing X shows up.

You also need to remember it's not the same person that knows everything :) it may be the case for instance that the distributed algorithms expert is clueless about PHP for instance.

<comment> andrey-p Exactly what I wanted to say. It's a bit like Facebook where everyone seems like they've got more interesting lives than yours - but that's just people cherry-picking the interesting bits of their lives and putting that on display.

I used to feel inexperienced and self-conscious until I started looking through the code of open source projects I use, seeing sloppy and sub-optimal code. We're all human, and we can always improve.

</comment></comment><comment><USER16> I noticed that when at work, I usually end up doing one of the following three things:

      1. Explain things - either to my co-workers or to the computer.
      2. Explore - navigate the codebase figuring out how different pieces connect to each other, building an adequate mental model of the system.
      3. Debug - search for the root cause of a problem by examining the state of a system in between steps.

Sometimes my mental model ends up being insufficient and I have to do 2 and 3 together to "update" it.

Thus, I think that to become a better programmer, you need to get better at these three things.

"Explanation", I think, is the most difficult one. I have found that studying math has improved my explanation skills dramatically, and it helps not only when talking to computers, but also when talking to people. Of course, not everyone has the opportunity or desire to study things like calculus or differential equations, but I think that reading computer science books is a nice way to exercise that math/logic muscle.

To get better at things like debugging, I had to tear down some mental barriers. Sometimes you'll have to go out of your comfort zone. Never think "oh, this is too hard for me". For example, if you're writing something in Python, you must be mentally prepared to dive into the internals of a 3rd party C module. The key is to approach it with a "we must get to the bottom of this!" mentality.

Don't worry too much about technology. Your "goodness" as a programmer isn't defined by how many languages you know. It's better to know a few very different languages than a lot of similar ones. For example, I think that knowing Java and Lisp is better than knowing Java and C#, because you can quickly pick up C# using your previous knowledge of Java, but knowing Lisp may teach you something you wouldn't know if you decided to stick only to enterprisey languages that give you higher employability.

<comment><USER3> > 1\. Explain things - either to my co-workers or to the computer.

That is SO true. Explaining things to others is a great way to make sure you really understand something. Hence the old saying "to truly understand something, you must teach it".

I'm ashamed to have forgotten to include this point in my response, but I think people looking to learn new things should make it a point to look for opportunities to teach / lecture / explain / whatever, as much as they can. What has worked well for me is volunteering to present at the local Linux User's Group or Java User's Group or something like that. It forces you to really do a deep dive into a very focused area for a while, to make sure you can do it justice.

</comment></comment><comment><USER17> Do you feel like your skills are steadily improving? Do you critically examine your code from a year ago, and have the urge to rewrite it because you could now do better? When you're coding, do you think "What's the best possible way to do this," instead of just "How can I get this code to run?"

If you answered yes to all of the above, then you're probably already a "good" programmer, and you'll only get better. If not, then let's maybe discuss why not. E.g. is there something about your job that's getting in the way of you improving as a coder?

<comment><AUTHOR> I think there may be a mixture since your question:

> When you're coding, do you think "What's the best possible way to do this," > instead of just "How can I get this code to run?"

I do both. Mostly begin with phase 2 (mentally) and then go back and look at the 'best way' and design schema and business objects around that. I end up making a lot of sacrifices and doing things that are probably not optimal due to what I think is poor real world experience and experience working with other, more seasoned developers. My knowledge of design patterns is fairly limited and I tend to churn out projects that work, are fairly reasonable but yet I think they lack the elegance of many of the open source projects or example githubs I've seen.

<comment><USER17> Oh yeah, absolutely! I didn't mean to imply you should never ask "How can I get this code to run." I meant that you shouldn't _stop_ there. And it sounds like you're not stopping there.

> My knowledge of design patterns is fairly limited

I'd recommend reading articles and books on that. And also reading open-source code. The latter can be very challenging, but also very rewarding. You should study it until you understand not just _what_ design decisions were made, but _why_ they were (most likely) made. If you can't figure it our, ask :)

> I tend to churn out projects that work

There's nothing wrong with doing that as a first step. Many programmers will make something that works, and then refactor it into something that works and is nicely architected. Have you tried that approach? Is the issue that you don't have enough time per project?

> I think they lack the elegance of many of the open source projects or > example githubs I've seen.

It's a good sign that you recognize as much. That means you have an eye for good code, which is huge. What's your biggest obstacle right now? What prevents you making the jump from merely appreciating good code to writing it?

</comment></comment></comment><comment><USER18> The best thing you can do is read & write a lot of programs, and pick them based on what is new and unfamiliar to you. Try writing programs from different domains (compilers, parsers, network protocols, distributed systems, data structure libraries, desktop GUIs, web GUIs, mobile GUIs, graphical visualizations, machine-learning, data storage engines, geo data, command-line scripts, testing, automation). Try writing programs in different languages (Haskell, C, Javascript, Erlang, Prolog, Go, Common Lisp, Python, etc.). Try writing programs of different scales (weekend hobby projects vs. Google Search), and try entering them at different points in their lifecycle (starting with a blank editor window vs. parachuting in when the company already has a million lines written and the original authors have long since left).

I'll second what mindcrime said about never really feeling like you know everything. The rate at which new CS knowledge is being created is far faster than the rate at which I can learn, so I've long since given up being able to learn it all. But what I can do is see patterns. I can see that the new single-page Javascript MVC frameworks are reinventing patterns that were common in desktop GUIs a decade ago, or that what Chrome's rendering engine is doing when it schedules JS execution isn't all that different from the Win32 message pump, or that Guice/Dagger are basically introducing data-flow programming to Java, or that Go's channels & goroutines are basically the same as Erlang messages and processes. Then I can apply what I already know about those other programming paradigms to the new technology, and only focus on learning the differences. That's a lot easier than picking up a new concept from scratch.

</comment><comment><USER19> Imposter syndrome: you're clearly good enough to pay money, but you can see just how vast the area of stuff you don't know is.

Imposter syndrome is a good sign! It means you have some understanding what "good" actually is. It's the opposite of Dunning-Kruger. You can go forth and slowly learn the stuff you're missing.

Stay humble, but don't forget that you are some good.

<comment><USER20> Imposter syndrome is absolutely part of this.

The other part, as you mentioned, is that as you learn more, you realize how little you know. This humility is the beginning of true knowledge. Novices feel like they know nothing. Apprentices feel like they know everything. The truly wise feel like they know nothing compared to all there is to know.

Besides, in software, this is completely normal. People are inventing new frameworks faster than any of us can learn and master them!!

</comment></comment><comment><USER21> Whether you spend three years in continuous integration and test suites, service oriented design, embedded assembly, high/low level network stack, Javascript, Python, or even a PaaS, you just have to keep challenging yourself. Never settle and keep expanding your views. Bridge the gap by learning and engaging in things that interest _you_.

Just the amount of understanding required to comprehend the keyboard press to the letter appearing on the monitor is insane.

Remember, you're not useless and inexperienced. The stigma from those words alone are holding you back. I have a feeling you are bored. You have a thirst!

Also, recall that articles and comments are much like Facebook, a peek into someone's good life that makes you feel bad about yourself. The good always seems great, and the bad goes untold. I'm on revision 744 of a 10 page website/service layer right now with only 30% of the requirements met.

</comment><comment><USER22> I suggest you learn a bit about perspective and human psychology, starting with The Imposter Syndrome: [http://en.wikipedia.org/wiki/Impostor_syndrome](http://en.wikipedia.org/wiki/Impostor_syndrome)

Sometimes, folks who think they know everything just don't know how little they know. Some of your smartest people sound not terribly confident because they know the limits of what they know and how many things are unanswered. Sometimes, really talented, amazing people feel like shams and really mediocre people feel like they have conquered everything and are The Bomb.

After that, you also need to find out some kind of objective measure of "good" for x thing. I don't know enough about programming to suggest what that might be for that domain.

</comment><comment><USER23> Pick better things to read... HN is super awesome for general interest stuff, but it will never make you better at anything. Google some deeper terms from whatever you are learning, and find 5 people that are good at it... read their stuff, try it yourself and get in touch with them if you get confused. You learn by failing as a developer...even some really smart people who did great coloring between the lines at school drop out because they can't handle that dynamic. That's how you go from "novice" to "good". The jump from "good" to "great" invloves some deeper understanding of architecture and algos/systems that comes with time, reading, education, etc..

<comment><USER24> > Pick better things to learn

Awesome advice.

</comment></comment><comment><USER25> I'm sure if you wrote a technical post about something you have deep experience with in mobile or web dev, many people would probably feel the same way reading your article. There's too much for any one person to know.

Read those articles and take the time to research the parts you don't understand until you really grok it. Read and try to understand good code, take every opportunity to go a little bit deeper into the tools you use (web frameworks, libraries, etc) if they are open-source. Getting better sometimes means knowing more, but mostly it's about not being afraid to dive in.

</comment><comment><USER26> Change jobs every 1-2 years (not just a salary bump, but a varied experience as well). Get a long-running side project, where you allow yourself to refactor _as much as you want_.

</comment><comment><USER27> " 'seriously' building fairly complex web and mobile apps"

You may already be "good". The thing is that there is something or someone better out there than you and this applies a lot more when it comes to HN. I feel like a loser when I browse HN because well, a lot of ppl are faaaar better than me at the things that I want to be good at. It is all relative. Stop sweating it and focus on what you want to achieve. If you get what you want, who cares whether you are good or xyz.

</comment><comment><USER28> Being a programmer will definitely humble most people. It is probably impossible to know even a significant part of what makes up Computer Science. Add to that the requirements for knowing Software Engineering which generally bears little overlap with CS and you're probably always going to be behind.

The important thing is to keep learning hard things unrelated to your current development stack and methodologies. Don't get stuck on only doing tasks where you are already an expert.

</comment><comment><USER24> It's simple... for any software you run into ask yourself:

How can it work? How does it work? How it should work?

And the most important thing:

Avoid involving yourself into code that is a mess before knowing how it should be written in the first place.

Also, if you're into OOP, think about access modifiers as:

private - if it's called from somewhere it has to be only in this class... (or im gonna slap someone!)

protected - only this class and its child classes...

public - does this really has to be part of an interface?

Once you start thinking this way you know you're on the right track.

...and read a lot. :)

</comment><comment><USER29> First define what "good programmer" means to you. Good programmer could mean having the skills to lead and code a functioning start up venture that can scale. For others "good programmer" could mean being an amazing architect - building products that are complex, yet in simple concise code and in a way that is easy to extend down the road. Yet for another person it can mean becoming a great hacker. What does "good programmer" mean to you?

</comment><comment><USER30> It's simply gained through study and experience.

However, the idea that you can keep up with the output of the computing industry (that employs tens/hundreds? of thousands of people) is an impossibly lost cause.

Instead specialize, while keeping an eye open for large shifts such as GUI, Web, and mobile have been in the past. I would avoid technologies such as php, that do not sufficiently encourage you to do the right thing.

</comment><comment><USER31> Pick something and get good at it.

If you aren't familiar with something that you see, look it up. If it looks useful to you, build something with it.

A group of people will always look smarter, more knowledgeable and more accomplished because you will see the acomplishments collectively, and compare them to your own, individual work.

tl;dr - Don't let it get to you, carve out your own niche.

<comment><AUTHOR> >If you aren't familiar with something that you see, look it up. If it looks useful to you, build something with it.

This is essentially what I do. Thanks for the tldr.

</comment></comment><comment><USER32> Reading other people's code can be hard, especially if you are used to a different coding standard. There's no promise that someone's article contains good clean code either.

Also, don't sell yourself short. Impostor syndrome is real. Just because everyone in the room is smart doesn't mean that you are not smart. Intellect is not zero sum.

</comment><comment><USER33> Computer science is such a huge topic. It will humble the most experienced programmers.

It's possible that you right now today may know somethings that the person who made you feel like your underwater has no idea about.

I always feel like I don't know anything and that's a good thing, it keeps this subject interesting.

</comment><comment><USER34> FWIW, I suggest: Do hard things you don't know how to do until you know how to do them. ;)

Personally, I just am happy dicking around with programming and never being better than an average programmer. I'm more interested in money and other things. :/

</comment><comment><USER35> Do extensive work within a code base that is recognised as being well written and design and architected. Try to be mentored by great programmers, ask their advice on specific questions about your code.

</comment><comment><USER36> "Yet, every day I run across articles here and comments that make me feel incredibly useless and inexperienced."

You're 'Good' now. When you stop getting that feeling, you're no longer good.

<comment><AUTHOR> Meaning, I'm better than good? Or worse (because I'm no longer challenging myself)

<comment><USER36> You're good now because that feeling is how discovery feels (Dunning-Kruger effect and all that). It challenges and humbles you, and sometimes makes you wonder how you'll ever catch up. As long as you feel this way, you're probably doing something right. As soon as you think you know everything, that's when you're backsliding. Just try not to compare yourself to anyone else. Even Fabrice Bellard and John Carmack don't have the exact same demands placed on them as you, and therefore won't be developing the same skillset. But by all means, respect and listen to them.

</comment></comment></comment><comment><USER37> [Teach Yourself Programming in Ten Years - <USER2> Norvig]([http://norvig.com/21-days.html](http://norvig.com/21-days.html))

</comment><comment><USER38> 1> Do you have a "Real" CS degree?

If not, doing a good portion of the exercises in some books on [compilers]([http://www.amazon.com/Compilers-Principles-Techniques- Tools-...](http://www.amazon.com/Compilers-Principles-Techniques-Tools- Edition/dp/0321486811)), [DFAs/State Machines]([http://www.amazon.com/Introduction-Theory-Computation- Michae...](http://www.amazon.com/Introduction-Theory-Computation-Michael- Sipser-ebook/dp/B00B63LSA6/ref=sr_1_1?s=books&ie=UTF8&qid=1403655616&sr=1-1)), Algorithms ([http://www.amazon.com/Introduction-Algorithms-Thomas-H- Corme...](http://www.amazon.com/Introduction-Algorithms-Thomas-H-Cormen- ebook/dp/B007CNRCAO/ref=sr_1_2s=books&ie=UTF8&qid=1403653248&sr=1-2&keywords=Introduction+to+computing+and+algorithms)) and theoretical programming ([https://mitpress.mit.edu/sicp/full- text/book/book.html](https://mitpress.mit.edu/sicp/full-text/book/book.html)) can give you some common foundational lenses with which to see these articles

2> Learning the history of your field

Nothing informs the current state of the field more than how we got here! Learn the foundation of your field from people who lived it. The podcast [Debug]([http://www.imore.com/debug](http://www.imore.com/debug)) is Guy English (Creator of Napkin and other apps) along with Rene Ritchie interviewing people about the history of Cocoa and CocoaTouch

I found [this episode about AutoLayout and Key Ferry illuminating]([http://www.imore.com/debug-33-ken-ferry-auto-layout- passbook...](http://www.imore.com/debug-33-ken-ferry-auto-layout-passbook-and- understudy)).

3> Go through early versions. Few systems START complex. Look at OLD books for EARLY versions of systems, and why old php made such silly choices is obvious (hint, they weren't that silly for what it was doing). Read books and commentary through the timeline. Understand the history of what's happening to the language, then you'll understand why you are where you are.

4> Go DOWN the stack. Understand the bottom of Objective C by reading [the open source implementation of Core Foundation and more]([http://www.gnustep.org/](http://www.gnustep.org/)). Also available elsewhere (and I think somewhere on Apple's Site still).

5> Do what you shouldn't! Don't ship it, but really use those implementation details to do something awesome and amazing. You'll learn tons about what's happening.

PS: To the mods, those aren't affiliate links

</comment><comment><USER39> Keep banging your head against a proverbial wall until there is no wall.</comment>


Introducing Tenen, an email client that helps you tackle more email in less time - <AUTHOR> http://www.tenen.tech <comment><AUTHOR> Personally, dealing with emails on the phone has been fraught with difficulties. I use Inbox. Yet, I get notified for emails that I don't want to read. Some of the emails are so long and boring, that I don't read them and miss some important parts.

I've tried not to use email, but that hasn't worked either. So I am building this new client which will primarily help

1\. Avoid reading a long email, yet not miss the important bits

2\. Avoid getting notified for every email in a multi-party conversation thread. Get notified only if you are the action owner.

3\. Complete any required actions, filling forms, sending invites etc, without leaving the client. Preferably in the notification screen itself.

This is still a work in progress. It'll be great to get any kind of feedback - good or bad. Appreciate all the help.

<comment><USER2> I don't want to deal with more emails. It just encourages people to send more. Mostly, I prefer other channels. That seems to be the direction communications are heading...pull rather than push, links rather than content.

Anyway, my favorite way of dealing with emails is ignoring them.

Good luck.

<comment><AUTHOR> Thank you. So what you are saying is that let people push content/send email to some staging area, and you'll pull from there whenever you want. I guess I see it the same way, I see the app as the staging zone, it sends me notification when I want and not when it receives any content/email.

I don't understand how other channels are any different. We are still hooked to content being pushed to us right ? Be it Slack or any other social app. What am I missing ?

<comment><USER2> Email comes with an implicit expectation that I am responsible for hanging on to a copy of the message. It's formal in that way.

Email is better for covering one's ass than Slack or SMS. Slack and SMS probably cover an ass for an hour or a day. Email covers an ass for years. _Didn 't you read it? It was right there in the third message of the attached eight message conversation._

Each email is an item on my 'todo' list. That's why getting more of them processed more quickly is appealing but yesterday's Slack is long gone.

</comment></comment></comment></comment><comment><USER3> Communication carries cost. Email has removed that cost almost completely, which is why it is inefficient. If you want me to use my precious time to read stuffs, might as well pay me for doing that. A good summary is of course a way to reduce the receiver's cost, but it also helps to impose a cost on the sender. Just random thoughts, anyway.

<comment><AUTHOR> Valid point. My initial thought was to summarise the email that the sender sends out, tailored to the receiver's context, rather than summarising at the receiver's end. I'm still open to that thought but by and large, based on what I'm hearing, people are slowly moving out of email. I don't have sufficient data to make this case.</comment></comment>


Ask HN: Does clicking voting arrows *sometimes* take you to a blank page? - <AUTHOR>

I'm wondering if it's just me or not. Sometimes when I click a voting arrow it takes me to a blank page instead of doing the Ajax request. I can't reliably reproduce this behavior though.<p>I'm using Safari / WebKit nightly. <comment><USER2> I get this. It's to do with logging in:

1\. Make sure you're logged out. 2\. Open two HN pages. 3\. Log in on one of them. 4\. Click an up arrow on the other page (the one where you're not logged in). 5\. The vote will get counted, but you'll be sent to a blank page.

I always figured it was a failure of the AJAX to check login status.

<comment><USER3> Ah, interesting observation. The difference is actually that the up arrows don't have an onclick attribute if you're not logged in, so you end up with the vote behaviour you normally get if you have JavaScript disabled.

<comment><USER2> Ah, well spotted.

</comment></comment></comment><comment><USER4> Yes, this has happened to me many times. The only correlation I ever had a hunch at was perhaps a long delay before hitting the arrow (like where I had opened a new tab and gotten to it later).

Reloading the page (which at that point is the previous page) gets rid of the problem.

Mozilla/5.0 (X11; U; Linux i686; en-US; rv:22.214.171.124) Gecko/2009010220 Gentoo Firefox/3.0.5

<comment><USER4> _"long delay before hitting the arrow (like where I had opened a new tab and gotten to it later)"_

Seems to fit with explanation from maryrosecook above, I'm often logged out.

</comment></comment><comment><USER3> It's not happened to me (Opera 9.63 x86_64 Linux) but I have a suspicion for the possible cause: The up/down arrows are anchor tags to the vote URL, so if you had JavaScript disabled, the behaviour you describe would be expected. (it probably should redirect back to the page you were looking at, from a usability POV...) The async version uses the onclick event attribute to call the vote() JS function, which returns false to cancel the anchor click navigation after dynamically generating a new image with the vote URL as src attribute. If anything in vote() throws an exception, vote won't return false to cancel the navigation, so you get taken to the (blank) non-JS vote page.

I can't see anything at first glance that would throw an exception, however.

</comment><comment><USER5> Yes, it's happened to me with nightly WebKit builds and I figured out exactly how to replicate it.

* Visit homepage * Click on some story link * Hit the back button to go back to the homepage * Try to vote up the link

It consistently happened any time I tried to vote after hitting the back button. The solution was to always refresh the page after hitting the back button. However, a recent nightly upgrade fixed the problem for me. Are you running the latest WebKit?

</comment><comment><USER6> nope (Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:22.214.171.124) Gecko/2008120121 Firefox/3.0.5)

</comment><comment><USER7> Another bug: expired links, with no link back to the homepage!

</comment><comment><USER8> doesn't happen to me, but that doesn't mean it doesn't happen.

</comment><comment><USER9> If you can't replicate, there is no bug.

Nothing to see here, move on please.

<comment><USER6> how do you figure that?

<comment><USER7> Not enough time killing bugs in his career, I'm guessing.</comment></comment></comment>


IRS Reforms Free File Program, Drops Agreement Not to Compete with TurboTax - <AUTHOR> https://www.propublica.org/article/irs-reforms-free-file-program-drops-agreement-not-to-compete-with-turbotax <comment><USER2> >Now companies are barred from hiding their free products from search engines such as Google, and a years-old prohibition on the IRS creating its own online filing system has been scrapped.

>Under the new rules, participating companies also have to standardize the naming convention of their Free File version as "IRS Free File program delivered by [product name]."

Respect to ProPublica for their commitment to this issue. I first learned of the Free File deal from their reporting and enjoyed the HN comments on their articles.

On the 20-year fight to stop Americans from doing their taxes for free: [https://news.ycombinator.com/item?id=21281411](https://news.ycombinator.com/item?id=21281411)

On hiding Free File from search engines: [https://news.ycombinator.com/item?id=19758126](https://news.ycombinator.com/item?id=19758126)

On tax industry lobbying: [https://news.ycombinator.com/item?id=21393758](https://news.ycombinator.com/item?id=21393758)

<comment><USER3> ProPublica reported that after they published this story, people eligible for free filing contacted TurboTax to get refunds. At first, they were able to get refunds of the fees that they paid but once word got out the customer service reps stonewalled them. So ProPublica invited readers to submit stories of their experiences with TurboTax customer service.

Quality journalism.

<comment><USER4> Not only quality journalism, but a really solid look at what modern data- driven journalism should be like.

</comment></comment></comment><comment><USER5> This USA tax thing has always baffled me... it is the exact definition of why we pay taxes: for the government to provide services that are common to the country´s citizens.

There´s nothing more common than tax collection: rich, middle class or poor. Why wouldn't citizens demand a public tax filing process? Even in Mexico we have an automagical tax filing process that makes:

a) The great majority of the population who perceives a salary not needing to file taxes.

b) For the rest of the people, those who don't do anything fancy, just click one button in a portal to do the filing, and everything is calculated by the tax authority.

c) For the small percentage that do more complex things (I'll say it is between 5% and 10% of the population) still can do it in the portal for free, or hire an accountant.

<comment><USER6> Most countries have this "automagical tax filing process". And what kills me the most is that __America actually secretly has this same system too __. Yet every year we have to go through the charade of filing taxes ourselves, when the governemnt already knows what we owe without us needing to round up paperwork, W2 forms, 1099 forms, and so forth. Yet they make us do it anyway.

Don't believe me? Simply don't file your taxes next year. You will get a letter from the IRS sent to you that literally tells you what you owe. They know all of your income down to the cent, they know what you owe. This automagical system exists. Yet the only way to "use" it is to either not pay your taxes, or to pay them wrong.

Yet every year, the IRS makes us go through the charade of putting our taxes together and all the work (and money) that it entails, when the whole time they know what we owe already and expects us to pay that unless we can prove them otherwise.

<comment><USER7> If it was automatic, income would be missed. The government would be revealing what it doesn't know about, and people would not supply the missing information.

Under the current system, people aren't sure what the government is aware of. Because we get in trouble for leaving things off, we are more likely to report everything.

<comment><USER8> This is why the Australian system is better.

Make people file a tax return, but auto-populate it with the data the government already knows. And at the end include a tick box clause that essentially says "I have included everything and reviewed the autofill info, and if I have omitted anything later discovered I will be prosecuted".

20 seconds to file your taxes if there's nothing unknown. Very easy to add extra info. Covers the tax departments back of you intentionally mislead them.

<comment><USER9> Same here in Europe, my tax form is auto-filled I only have to check the numbers and confirm, with same warning and laws to back it up in case you decide to hide income.

</comment></comment></comment></comment></comment><comment><USER10> 75 days ago: [https://news.ycombinator.com/item?id=21281411](https://news.ycombinator.com/item?id=21281411)

6 months ago: [https://news.ycombinator.com/item?id=20119916](https://news.ycombinator.com/item?id=20119916)

8 months ago: [https://news.ycombinator.com/item?id=19613725](https://news.ycombinator.com/item?id=19613725)

9 months ago: [https://news.ycombinator.com/item?id=19392673](https://news.ycombinator.com/item?id=19392673)

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

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

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

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

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

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

I'm sure there are others...

The current submission passes the significant new information test, so we won't count it as a dupe. [https://hn.algolia.com/?dateRange=all&page=0&prefix=false&qu...](https://hn.algolia.com/?dateRange=all&page=0&prefix=false&query=by%3Adang%20%22significant%20new%20information%22&sort=byDate&type=comment)

</comment><comment><USER11> There's a large backstory documented by (mostly) propublica, some of it is here: [https://www.propublica.org/article/inside- turbotax-20-year-f...](https://www.propublica.org/article/inside- turbotax-20-year-fight-to-stop-americans-from-filing-their-taxes-for-free)

Essentially: * IRS wanted to open tax software business to private companies. * Intuit has a variety of products with similar names and each has a free offering for a specific set of tax payers (e.g. income below some number). IRS + US Gov bought the story. * Intuit caught doing a variety of false advertising, misleading documentation, adversarial website editing, etc. They make it impossibly hard to find which is the free version of whatever you need.

So this is a big first step away from the draconian Intuit monopoly. It would be interesting to know what precipitated this change.

<comment><AUTHOR> The recent movement seems to be heavily precipitated by the discovery that Intuit was hiding its Free File pages (apparently first found by this Redditor [0]), with the stories sparking investigations at the federal and state level.

[0] [https://np.reddit.com/r/technology/comments/bgj6oz/turbotax_...](https://np.reddit.com/r/technology/comments/bgj6oz/turbotax_is_blocking_search_engines_from_indexing/)

</comment></comment><comment><USER12> Excellent news, and congrats to Propublica for in no small part making it happen.

This wasn't just a shady operation -- Turbotax openly lied to customers about its free file program, it deliberately suppressed the program from search results, it lied to veterans. It was 100% acting in bad faith during negotiations with the IRS.

Sometimes topics like this end up becoming kind of ideological or partisan; but in this case I feel like Intuit is just very objectively in the wrong, and that the IRS agreement for the free file program very objectively just was not working. I myself contacted Turbotax about their free edition and got personally lied to about the differences between the programs.[0]

> In this call, I was told that the form availability between the Free File > and Free edition were the same, and I wouldn't be eligible for either. To > check this, I created a second account and added the same forms to the Free > File program. I was never charged or told that I was ineligible. All of the > forms were added successfully.

[0]: [https://www.youtube.com/watch?v=Piuv7KH37D4](https://www.youtube.com/watch?v=Piuv7KH37D4)

<comment><USER13> There's a good Planet Money episode that explains how surprisingly it is still a partisan issue. The Republican argument, at least from certain prominent people in the party, is that if paying taxes gets too easy the average American will be less likely to push their representatives to lower taxes or to oppose new taxes that get proposed.

<comment><USER14> Which 'prominent people'? It sounds like an incredibly silly argument, one I had never heard of before.

<comment><USER15> Honestly, knowing how much taxes you pay is important (and as i said in a comment above, problematic, if people don't know).

But this can be solved by autofiling taxes, and then sending a yearly report: you earned X, paid Y taxes, out of those, Z goes to this, Q to that, W to that other thing, you've used these government services this year, that cost that much money, etc.

<comment><USER14> No doubt, the thing for most people, including anyone who hates paying taxes is the bottom line. I don't see any connection though between the bottom line paid and how forgiving people will be when they discover how easy it is to file. I suspect the word prominent is a misnomer at best, it just makes no sense to me.

</comment></comment></comment></comment></comment><comment><USER16> Fantastic news!

Now let's have the IRS start building out their free e-file program and IDEALLY put some pressure or at least summarize what parts of the tax code are the most complex so they can be simplified.

A lot of the tax code complexity comes from congress messing with the logic of taxing folks on their income.

And yes, simplifying the tax code would get rid of loopholes like deduction that can exceed the cost of the item placed into service (!) which make zero sense AND create tax vs gaap difference that have to be tracked over long periods of time.

Another one to get rid of - phantom LIFO inventory unless the inventory is real.

<comment><USER17> Do you have a reference for the deduction greater than basis loophole? I spent a few minutes looking for it on google and couldn't find a reference. It does seem non-sensical on the face, but I'd like to read more.

<comment><USER18> One idea I though of in the past: if you have a very high income, your income tax rate can approach 50% (state+federal). If you donate appreciated assets to a DAF, and break the effects down by basis+gains, the numbers look like

\- 50ish% back after deducting the given unappreciated basis,

\- Selling the short-term gains would cost you half the profit, so the charitable deduction gets you roughly 100% of the after-tax profit from the trade back in your pocket.

(Plus the upside of sending money to charity.)

The math doesn't work out for long-term gains though, and obviously works best when the asset has appreciated strongly. Not sure about the legal treatment of partially-donated options spreads or other complex hedging tricks to manufacture these gains and offset them against a loss.

Not tax advice etc, all just guesswork.

<comment><USER19> my understanding was that the appreciated value of short-term capital gains aren't deductible as a donation. only the cost basis.

that said, donating stock that has a long-term capital gain is still extremely tax advantageous.

</comment></comment></comment></comment><comment><USER20> This is good news, right? I'm kind of amazed that good news is happening and that the lobbying forces (eventually) got defeated in this case.

<comment><USER21> The IRS is perhaps the one government agency that just does not fuck around. It's always sensible to make sure that filing for taxes is as smooth as possible, at least for those who wish to abide by the rules. Follow the money.

<comment><USER22> Many agencies are well-intentioned but wear congressional straight jackets. It's not all Anjit Pai land.

<comment><USER23> Any further examples of regulators not captured by industry in 2019?

</comment></comment></comment></comment><comment><USER24> Not sure how factual Adam Ruins Everything is, but his skit on taxes is pretty damning for tax software companies: [https://www.youtube.com/watch?v=Fj4anUL- LvY](https://www.youtube.com/watch?v=Fj4anUL-LvY)

<comment><USER25> I think they get it mostly right for tax filing. But I find them to usually be pretty blinded by ideology when it comes to some topics and severely lacking in objectivity.

<comment><USER26> Yeah, they range from very accurate to downright dangerous (the one about late pregnancies stands out as terrible). It's not a consistently good source.

</comment></comment></comment><comment><USER27> Now we're just left with this illogical part of the tax system:

The State: Pay me taxes or I'll put you in a cage!

Citizen: OK, how much do you need?

The State: You tell me, but if you're wrong you'll regret it!

<comment><USER28> If you mess up your taxes, the IRS actually has a very reasonable process for making amends, with penalties that aren't egregious at all. It's mostly a small interest (like a couple percent above prime or something), which caps at 25% of the unpaid amount.

In fact it's the same interest they _pay you_ if you were due refund and they were slow giving it back.

My main complaint is that it's a super, super slow process. They'll follow up years later, and each back and forth takes like three months.

<comment><USER29> Yep, I've heard that too. However, the states are much worse. Someone was telling me about how he made an error, and New York was much more aggressive. He decided to take his family and company to Texas instead, so in the long term, New York lost a lot more money. Plus his kids when they grow up will probably stay in Texas too, so they might as well lost an entire generation they could have taxed. Plus New York isn't a business friendly state in the first place along with New Jersey and California.

Then California is the same way too it sounds even going after former residents as they went after the inventor of the microprocessor who moved to Nevada, and even broke Nevada law while doing so since they sent state officials across state lines to stalk him and dig through his trash. He sued California in Nevada and was granted millions of dollars, but due to a loophole, California didn't even have to pay as much as the judge in Nevada ordered. California says living in an apartment isn't a permanent home, you must get a mortgage and buy a house to no longer be a California resident... Well, of course, that isn't the actual law, so the state of California abused their power.

I wonder how California would view someone getting into YC, doing the program for the 3 months and then going back to where they were originally living or moving to a totally different state after such as Austin, TX since they had no intent of living in California? I wish YC would expand to Austin. San Francisco looks nice to visit, but due to it being expensive, and politics it's a turn off for some people. However it seems like Austin is starting to have some of the same problems with cost of living rising since it's growing, Apple is expanding there to be the largest employer in Austin.

</comment></comment></comment><comment><USER30> From the article: _The addendum also expressly bars the companies from "engaging in any practice" that would exclude their Free File offerings "from an organic internet search."_

Note the term "organic" which suggests the page "naturally" ranks in the first few hits. The agreement doesn't seem to prevent Intuit and others from both buying ads to populate the top of search results and SEO'ing the crap out of it to make their stuff rank at the top "organically."

I see this as a good example of how policy makers write policy with good intentions but without a fundamental understanding of how gamed Internet search is in order to make it profitable.

<comment><USER31> > _I see this as a good example of how policy makers write policy with good > intentions but without a fundamental understanding [...]_

I agree with your argument in the general case, but in this case that seems like what they would want: not to exclude the possibility of advertising or SEO for the other products, but to rule out doing reverse SEO (or just robots.txt to exclude it from search engines) on the Free File pages.

</comment></comment><comment><USER32> We need pre-filled tax forms.

[https://priceonomics.com/the-stanford-professor-who- fought-t...](https://priceonomics.com/the-stanford-professor-who-fought-the- tax-lobby/)

<comment><USER33> If the government can pre-fill my tax form, why should I even have to file taxes to begin with? Just send me the pre-filled information each year and tell me I need to correct it if it's wrong. Otherwise, I shouldn't have to do anything.

<comment><USER34> Basically how we do it in Norway, and probably lots of other countries that does it automagically.

1st of April every year we get our pre-filled tax form (digitally), which we have to look over. If we find it to be alright, we don't have to do anything (deadline the 30th of April) and the taxes have been filed. All financial institutions sends data to our tax office, so it's all there.

</comment></comment></comment><comment><USER35> _> a years-old prohibition on the IRS creating its own online filing system has been scrapped_

What kind of insanity leads to this? The government is prohibited from creating software that helps its citizens?

There's a lot wrong with Brazil but here I just download the government- provided software (that runs on Windows/Linux/Mac) and fill my taxes in 10-15 minutes. Every year they release a new version that is easier to use than the previous one.

<comment><USER36> The idea was lots of people could file for free using a private online service. Not many people at all ended up using it, since it wasn't in the company's interest to have people not pay them.

<comment><USER37> More accurate: Intuit told the federal government they would absolutely offer a free e-file tax service next to their pay service, and then they used several lies and manipulative techniques so that folks could not find it or even discover its existence.

<comment><USER38> Or if you do find it, you get intermodals with dark patterns upselling the paid service, and once you upgrade you can't downgrade back to the free-file version.

<comment><USER39> Well, you _can_ "downgrade"... You just have to start all over. Which IMO is absolutely atrocious.

</comment></comment></comment></comment></comment><comment><USER25> There is no reason the IRS shouldn't have a simple, online fillable 1099EZ that makes the calculations and validations for you. And while their at it, match the SSN to the w2 info that they have on file. This would take care of 80% of the population.

Just don't outsource it. I'm sure USDS could have it ready in less than a year.

<comment><USER40> 100% agree. To me they seem to be playing this perverse game of knowing how much you owe based on your W-2s then not telling you, waiting for you to file and guess how much you owe just right. If you guess wrong tough luck, you get penalties years later.

<comment><USER41> The "penalties" are just what you owed plus interest. I think the IRS will only charge an actual penalty if they think you were deliberately trying to avoid taxes.

<comment><USER40> > The "penalties" are just what you owed plus interest

Sure, interest after 6 years can accumulate into a nice penalty sum on top of what is owed. If IRS ends up owing you, and they discover it 6 years later, would they send you the refund with an interest as well? I am guessing they won't.

<comment><USER42> Yes the government always pays interest on money it owes you.

<comment><USER43> Not true. They don't give you interest on your payroll withholdings. If you overpaid taxes by $5000, you get exactly $5000 back as refund, despite them having that money for a part of the year.

<comment><USER41> They do pay interest that accumulates some time after the filing deadline.

This is probably just a practical matter, because accounting for interest during the tax year would be complex/impossible because you would need to know when the various amounts of withholding exceeded the amount owed. I'm not even sure there is a single consistent way of doing this.

</comment></comment></comment></comment></comment></comment></comment><comment><USER44> It's so insane to me that Grover Norquist somehow lobbied against free tax filing provided by the IRS. It escapes all logic that he didn't pay attention to what other countries do. It escapes all logic that he didn't think for a moment about what the cost would be to citizens in (more or less direct payments to Intuit) and that's not considering the incalculable cost of just gathering up all this documentation and put it into TurboTax.

Billions of dollars in lost man power? Billions of dollars in wealth transfers from middle and lower class people? Probably more like Trillions.

Norquist didn't succeed in drowning the government in the bathtub. He DID successfully manage to keep the entire US citizenry drowning in billions of hours of wasted effort and billions of dollars of unnecessary expenditures. Good work, Norquist!

<comment><USER45> It is not insane, just not obvious what Grover's aim is. He is anti-tax for a large number of reasons. By making paying tax painful for the majority of people he is trying to increase the percentage of the population that hate the IRS and taxes. All very sane if your aim is to lower taxes.

<comment><USER46> Only if you don't care who you hurt on the way to your goal. We may have different definitions of sanity.

<comment><USER45> Now we are getting to the question if his aim is ethical or not. I think his obsession with reducing taxation at all costs is misguided and often counterproductive, but it is not insane.

</comment></comment></comment></comment><comment><USER47> I always use TurboTax online to complete my taxes and then copy all their info into freefillableforms.com to file for free.

</comment><comment><USER48> Wow I would love to hear the inside story on this one.

I think we're all motivated by both survival and doing good, and I see an overall trend towards more doing good, as survival gets easier. Is this a case of that? Who drove it? What internal processes allowed public service to overcome corrupt lobbying pressure?

</comment><comment><USER49> I just want to move to a system where the IRS sends me a bill, they know how much I owe them.

<comment><USER50> Yeah there's no reason that in 2019 we should even have to file. Everything should be automated for 85% of the population and they just receive the bill. Only a small percent would actually need to file due to certain circumstances mostly by people that are using special business structures to minimize taxes.

</comment></comment><comment><USER51> They should implement something for the simple cases first. Like the standard deductions, no investment income, no business income scenario. That will probably handle 40% of the filers with one page of input.

</comment><comment><USER52> My pet peeve: I've used freefillableforms or whatever it is called for several years. It's the only (free, online) option (I think) for someone in my income bracket. It's not a bad system, but it is deliberately hobbled: it will do about 90% of the math for you, and about 90% of the "put this computed value on line N of some other form".

But ... not the remaining 10%. And there will be no errors if you fail to do them (other than your return being incorrect).

I don't know if it is better or worse to offer a deliberately crippled system.

</comment><comment><USER53> The article says the IRS will make its own free filing system.

So how is there still a "deal" with tax software companies?

Isn't the whole deal that the IRS would not make such software?

</comment><comment><USER54> This is great news!

I really hope the IRS creates it's own site, they would need to advertise it heavily though, way way too many people think eFile = TurboTax. There's already vastly better options out there but very few people use them or know about them.

Edit: I think the real killer feature would be to pre-populate the "IRS e-file" with the information the IRS already knows about you. That would get people paying attention.

<comment><USER55> Care to mention any of these better options?

<comment><USER54> I can only speak to myself.

TaxHawk ( [https://www.taxhawk.com](https://www.taxhawk.com) ) is what I've been using for like almost a decade. Federal filing is free, state filing is only is $15. You're free to use the free federal option without having to pay for the state option. No tiers, no dark patterns, no upsells. The UI is fantastic (and the UI is the entire point of using software, otherwise I'd just fill out my 1040 by hand like I did for many years). You can pull up the 1040 for any of your previous returns.

I've mentioned it on HN before and one reply said they used it to file because of my recommendation and it was both better than TurboTax and saved them like $100.

<comment><USER56> Thanks for sharing, I'll try it out this year!

</comment></comment></comment></comment><comment><USER57> One of the sad things behind the story: Bill Campbell was Chairman of the board at Inuit while this was going on.

His story is inspiring. I'm a capitalist at heart. But I'm not a monopolist or a crony—and hope not to become one.

The best among us aren't perfect. We should take this as a cautionary tale.

<comment><USER58> The vexing question: Why does there seem to be no space in the market for an honest, quality vendor? As in Fastmail, Costco, or the pre-Amazon Whole Foods?

Are there so few customers willing to pay a truthful, higher sticker price that such a business cannot be sustained?

<comment><USER59> Freetaxusa was a very easy experience last year. Federal is free, state is $10.

I haven't read their privacy policy. Perhaps a profile of me was sold to dozens of companies - but I think they fit your criteria pretty well.

</comment></comment></comment><comment><USER60> This is great news. NPR Planet money podcast cover this topic in detail past 2 years

[1] [https://www.npr.org/sections/money/2019/04/03/709656642/epis...](https://www.npr.org/sections/money/2019/04/03/709656642/episode-760-tax- hero)

</comment><comment><USER61> So in Canada I pay about $15 CAD to file for my household. It takes 20 mins and is submitted digitally.

Is this the equivalent of the issue in the USA or is it more expensive or something? I get that free filing is kind of obvious as a right, but the online service really does give me $15 of value so I've never thought to be upset by it.

<comment><USER62> If you're in Canada I can't recommend SimpleTax [1] enough. Donation-based, so free or what you can pay. Was recently acquired by Wealthsimple.

[1] [https://simpletax.ca/](https://simpletax.ca/)

<comment><USER61> Thanks so much for sharing. I wasn't aware and will try it this time.

</comment></comment></comment><comment><USER63> This is at number two on the front page, I'm wondering how much this is driven by a specific interest in this story, or whether other people are having the same, probably childish emotional reaction that I am, an almost dumbfounded disbelief that a major institution is not charging headlong towards death cult dystopia. A public institution has acted seemingly for public good. Regardless of whether its driven as much by shame as by duty and altruism, - I'm deeply confused about how to think about this.

Is this a trick? Sleight of hand to distract, to funnel the non wealthy towards a presentation of the tax code that obscures the existence of incantations to the elder gods known only to operating thetan level VIII accountants?

Is this a bellwether of positive change, or a an eddy current in the river Styx?

Is this just normal institutional behavior? Is Ragnarök 2020 just a delusional end-of-days narrative I've bought into? I can't believe we've made it this far - Y2k didn't kick off, I was sure at least Agile would be dead by now, am I 'dude you\'re overthinking this'?

Am I in a distributed doomsday cult?

oh, also - happy new year.

<comment><USER33> Politicians aren't _evil_ , just self-interested like most people. It just so happens that the nature of their job sometimes means serving others' interests is in their own best interest. Sometimes.

Happy new year.

</comment></comment><comment><USER64> Great. I hope the IRS is serious about this and finally makes the tax software industry obsolete.

</comment><comment><USER65> In the constant stream of bad news, it's easy to miss a positive update like this.

</comment><comment><USER66> The IRS already have all the information it needs to automatically file returns for many Americans... does that mean that some of us will just be able to confirm that our automatically generated return is correct?

</comment><comment><USER67> And, don't forget, there's always CalFile. I've heard it's provided by the Gov for Free!! One of the posters here had mentioned it earlier in the year and I don't want to forget

</comment><comment><USER68> Now if only I could file my expat taxes via some public service. The filing requirement in the Obama/Trump era for expats is literally insane, and I'd say even Kafkaesque in the truest sense. The way the government treats its expats w.r.t. tax is inhumane and makes me really dislike being an American.

<comment><USER69> How did filing requirements change since 2008? I didn't notice any differences. Also, you can use online tax preparations now as they seem to support 2555 and 1116 forms now, which wasn't an option in 2008.

<comment><USER68> I believe 2008 saw the start of mass enforcement of FBAR/FACTA, stricter requirements on foreign banks to report American accounts, etc. Things got much worse with Trump and the Republican congress - with sections 962/965 (transition tax/GILTI tax), and 5471 complexity going through the roof. Anyone with a small business, or any sort of ownership stake, was hit hard by these terribly written laws and their onerous filing requirements. Being an American expat is a giant liability these days, which is sad, because I enjoy being American. Expats will unfortunately never have much of a voice, and I don't expect things to ever improve, only get worse.

</comment></comment></comment><comment><USER70> Just fucking send me my filled out tax forms, like they do in other countries, you already know everything, and where you're wrong, I'll contest.

<comment><USER52> Doesn't work so well for the self-employed, alas.

<comment><USER70> Only if working with individuals. If I, as a consultant, work with a company, that company requires a W9 from me, and they have to report what they paid me. And I also report what I paid myself in salary and pay federal taxes from every paycheck I make out to myself. So at least for me, they know everything there is to know.

<comment><USER52> I sell stuff (software, so not really stuff). I certainly file my quarterly estimated taxes (state and federal), but until I file my annual return, the government has no idea how much I've actually earned, nor what my expenses were. Consequently, they're in no position to tell me what I owe them until I've filed my entire return.

Perhaps what the commenter meant was "we should fill out forms detailing income + expenses (where applicable) and the government should compute our taxes for us". I'm mostly good with that idea.

<comment><USER70> Yes, this won't be 100%. But I'd say easily 99% of people could get all this tax bullshit automated away and they wouldn't have to pay Intuit a single penny.

</comment></comment></comment></comment></comment><comment><USER71> Turbo Tax only works with Windows 10 and 8.1 with the 2019 version. Shutting out Windows 7 and under filers who can use the IRS free file system.

</comment><comment><USER72> This probably explains the TurboTax ad I saw on YouTube today where the only word spoken was "free," over and over again.

</comment><comment><USER73> What kind of bribe and to whom does private corporation need to make to make IRS sign non compete agreement with them?

</comment><comment><USER74> BEST NEWS OF THE DECADE

</comment><comment><USER75> wow, this is great towards fixing the US tax system and the byzantine means most Americans have to go thru to simply file taxes

</comment><comment><USER76> This is the best news to Start the new year!!!

</comment><comment><USER77> I just donated to ProPublica. Amazing work.

</comment><comment><USER78> propublica is a good one to donate to!

</comment><comment><USER79> Good riddance.

</comment><comment><USER80> TurboTax will be remembered as a classic example of extreme capitalism.

<comment><USER81> or extreme lobbying

</comment></comment><comment><USER10> HN has always been at war with TurboTax.

Edit: looks like this line didn't go over so well. To avoid distractions, I'm going to move these links to another post and mark this subthread off topic.

Links moved to [https://news.ycombinator.com/item?id=21924055](https://news.ycombinator.com/item?id=21924055).

<comment><USER82> >HN has always been at war with TurboTax.

"Snarky trivialization of activism on this issue" seems like the very kind of thing you'd normally discourage.

<comment><USER83> Assuming positive intentions, it's unlikely that this is a snarky trivialization and more likely that it is acknowledging/praising the persistence of the topic.

<comment><USER10> Precisely. But what we always tell users is that intent doesn't communicate itself on the internet, so the burden is on the commenter to disambiguate.

</comment></comment></comment></comment><comment><USER84> In the US, we've had decades of (largely GOP) messaging that the government can't do anything properly. A substantial portion of the population believes it.

As noted in a sibling comment, the IRS could pre-fill forms that would be correct for the vast majority of tax payers (who take the standard deduction/don't itemize, have a single job, and no other edge cases). These people should not be paying TurboTax either way - the forms they need to submit are relatively straight-forward. People who do need a CPA would have to hire one regardless. TurboTax is literally just ripping off average tax payers.

<comment><USER85> > messaging that the government can't do anything properly

I would love to hear about things the government has done exceptionally better than private companies. Please go on.

<comment><USER86> Healthcare comes to mind since we're discussing US politics.

Roads might be the canonical example but I'm not familiar with any examples of privatized roads.

<comment><USER87> Toll Roads? Generally better maintained and provide a shorter pat for a small but willing-to-pay segment of the population that government programs overlook.

<comment><USER86> I do pay several hundred a year in tolls but as far as I can tell it all goes to state or local DOTs.

</comment></comment></comment></comment></comment><comment><USER88> Here is an idea from Russia: flat 13% income tax with deductible educational, medical, real estate and some other expenses.</comment>


Why freemium sucks - <AUTHOR> http://www.sanebox.com/blog/death-freemium/

<comment><USER2> I am in the same decision process right now. What I find interesting is when you compare customers who will pay vs those who won't. The ones who are already willing to pay will often pay even more if they had to. I often find myself wanting to drop prices to try to entice the non-paying user group. But since it's a mindset it normally just ends with decreased profits.

<comment><AUTHOR> Completely agree!</comment></comment>


Show HN: How I accidentally hacked a whole startup ecosystem - <AUTHOR> http://blog.ghacklabs.com/how-to-hack-a-startup-ecosystem-by-list-hacking/ <comment><USER2> How is this hacking the ecosystem?</comment>


German newspaper (Bild) now blocks users that use adblocker unless they pay fee - <AUTHOR> http://www.reuters.com/article/2015/10/13/us-axelspringer-adblock-idUSKCN0S70S020151013 <comment><USER2> Until websites are served and executed as binaries, none of these puny measures are gonna be really effective.

But that'll never happen, due to a myriad of reasons.

<comment><USER3> I was able to navigate the bild.de site just fine with an ad-blocker and NoScript. It looks like their countermeasures rely on JavaScript to work.</comment></comment>


Teaser Site for Toshiba Tablet Takes Swing at Apple's iPad - <AUTHOR> http://mobilized.allthingsd.com/20110121/take-that-cupertino-toshiba-flashes-insults-at-apple-in-teaser-site-for-its-android-tablet/

<comment><USER2> Yet another manufacturer duped by Adobe into believing that Flash represents some major part of core Internet content.

I'm perfectly happy missing out on Flash on my iPad, of course that DOES mean that I miss out on all those wonderfully animated popup floating ads that utilize Flash.

I've yet to run across a worthwhile site utilizing Flash that has really hindered my browsing experience. The iOS devices represent suc a significant market share that it seems most decent websites have already adapted to delivering content in non-Flash formats.

Also, I don't get the removable battery claims. My iPad battery lasts an entire weekend or more with moderate to heavy use. Runtime has hardly been a weakness of the iPad (though perhaps if it ran Flash the removable battery would have more merit)

Granted, a camera would be nice at very rare times. The HDMI out could have value at times, but again not really a feature I've really considered important.

</comment><comment><USER3> My favorite feature of the iPad that Toshiba doesn't have: I can buy one.</comment>


reMarked.js - A Client-Side HTML To Markdown Converter In JavaScript - <AUTHOR> http://leeoniya.github.com/reMarked.js/

<comment><AUTHOR> Via Functionn - Open Source Resources For Web Developers & Designers: [http://functionn.blogspot.com/2012/11/remarkedjs-client- side...](http://functionn.blogspot.com/2012/11/remarkedjs-client-side-html-to- markdown.html)

P.S. Functionn contains a whole lot more of awesome resouces like reMarked.js. There only a fraction of them I can post here at a time. Take a look if you're interested, and subscribe:

<http://functionn.blogspot.com></comment>


Caporal.js: Build Awesome CLI Apps with Node.js - <AUTHOR> https://github.com/mattallty/Caporal.js? <comment><USER2> Why did you decide to build this instead of using Commander or Vorpal?

[https://github.com/tj/commander.js/](https://github.com/tj/commander.js/)

[https://github.com/dthree/vorpal](https://github.com/dthree/vorpal)</comment>


Levi Strauss to use lasers instead of people to finish jeans - <AUTHOR> http://www.bbc.com/news/business-43217596 <comment><USER2> > The firm says the new techniques will reduce chemical use and make the way > in which jeans are faded, distressed and ripped more efficient.

Yes, but can they make them as comfortable as this pair I've been working on for many years?

Can they sew/weave cool patches in?</comment>