skysight-inc/HackerNews huggingface dataset:
"To get over this deficiency a programmer can practice by using the IDE's own debugger as an aide,"

sign of bad programmer: relying on the IDE?

'always have a security professional review the
design and implementation.'

At first glance it reads like a list a hypothetical programmer should do, rather than what happens. For a dose of reality, read this article by Joel about the job of the SDETs at MS. [0] I don't hold MS as an example of security but Joel paints a picture of serious programmers trying to code then verify commercial software used by millions. [1]

Commerce and software demand another set of skills beyond this article. Read the counter-point: 'What Makes a Good Programmer' http://www.southsearepublic.org/article/2024/read/what_makes...

ps: Is there a way to prove the output of complex regular expressions?

[0] Joel Spolsky, 'Talk at Yale: Part 1 of 3', http://www.joelonsoftware.com/items/2007/12/03.html

[1] Then there's the open-source way. How many in the OS systems community really have 'security professionals' review their code? OpenBSD and who else?

(various edits)
As in all things, the answer is supply and demand.

The demand for these services mostly comes from the West, and there is a big advantage to local workers. So assuming there is a large supply of skilled data scientists in India and Ukraine, but not the demand, then they can't charge higher wages.

Furthermore, if these barriers could be broken down, and there was no longer an advantage to being local, then we would expect the price of Western and other workers to equalize, but the final wage would be somewhere in between the current Indian wage and the current Western wage.
I would switch to an electric car immediately if I had some place to plug it in. That's a bigger problem for me than the number of miles I can get on one charge. I need about 25 miles a day from my car. More than that is gravy.
I'm not a big fan of the language used, w.r.t. the dichotomies between a "good" programmer and a "bad" programmer. There are certainly challenges for junior developers that are mentioned in this article (and I agree with most of it), but I wouldn't consider those people who do it "bad", rather "inexperienced". This may be a mere nuance, but it's not something that should be perpetuated. We all have our challenges and we are all learning to do better in our work.

In reading this article, I don't think any developer purposely does any of these things and if they do, they aren't "bad programmers", but just developers who are still learning.

It seems that the intent of the article is good-natured in that it's pointing out certain issues with code and how to remedy them, but calling people bad at their craft so that they read the article is a bit strong.
Have you ever used a filesystem?
What does "actually" compressing mean?

Replacing every "5" with EOF is apparently bad.

What if he replaced every "5z" with EOF? Fewer bytes there.

What if he had a variant of LZ77 doing dictionary encoding followed by a range encoder that outputs symbols in the range -1 through 255? Even counting the EOF as a character, this would give an output 2K characters smaller. Sounds like compression to me. It's finding common sequences and uncommon sequences and rescaling them based on probability to remove redundancy.
Some of these are clearly computer-generated in a way where the human has done most of the work. Take

“In truth, I’d love to build some verse for you

To churn such verse a billion times a day

So type a new concept for me to chew

I keep all waiting long, I hope you stay.”

Now I'm going to bet a generator algorithm does not actually comprehend the meaning of any that - most likely the generator aspect was filling in some blanks, or picking out one random phrase structure out of pre-coded structures.
That reminds me of how I deal with C's pointer syntax. "Well, it's either * or & or a combination of a low number of the two, let's try a couple of combinations that seems vaguely reasonable... and some that don't, just in case". I don't know who's most at fault: Me or C.
> school-year rates were around $3,500 per course.

That's crazy. I've paid more than that to take a course from an adjunct, and I was one of 20+ students.
I guess we'll agree to disagree then.

I'm assuming you see it happening as you drive past. But do you look into each car intently to see what the driver is doing? I see drivers on phones, but I'm sure I don't see all of them. I'm normally aching the traffic and the way they are braking/swerving to determine if the driver is someone to keep clear of.

There is no cultural difference on this one that I'm aware of. In Australia you must be aware of what is going on around you on the road. But you asked about victim blaming - I think someone above expressed it better than me, and you thanked them for their post. That's the one I'm going with :-)
I just installed the app to try it out. I posted a request for good books to read. After a few minutes a couple people replied with books and authors, and their post scores trickled down to negative numbers until they disappeared.

Theory: The same way that Yik Yak punishes competitor spam by incrementally lowering the score until it's modded out of existence, it detects human names in posts and applies the same punishment in an attempt to prevent bullying.
> implementing your own linked list or using recursion

I believe I can salvage this piece of the comment, and make it into an intelligent thing to say.

Implementing your own linked lists? Not good unless your language is stone-knives-and-bear-skins land. You need to know what libraries are out there and available to you, and if CS undergrad stuff is unknown to the libraries in your language, pick a different one if you possibly can.

Recursion is an important skill, but implementing your own recursive functions is low-level. It's error-prone and it's boring in precisely the ways that cause errors.

Implementing your own map function is worse than implementing your own linked lists; it's more like implementing your own while loops out of labels and goto statements. It's an invitation to have bugs in your program's flow control, which is the worst possible place for them to be.

Sometimes you need to write your own recursive function, because none of the basic recursive patterns your libraries give you can fit. Sometimes you need to implement your own foundational data structures, too. Both of these should be done with skepticism, primarily of your own code, but also of the very idea that you'd actually need to do it in the first place.
IBM Watson Medical Advice Over the Phone
You can farm out your actual tweets, farming out blocking sounds like an interesting idea!
Looking at that, and considering A/B/C, I've seen myself using B most often - but I've not been afraid to use any of those.

I'm not a fan of A, because I want to see the "bigger picture" first and then dive into details (minor 1/2/3/...) as needed.

The reason for doing B vs C, in my experience with C#:

* Logging. I can add, via PostSharp ( https://www.postsharp.net/features ) ( or similar extension/addons ) something as simple as `[LogDebug]` to a function and get logging goodness without having to mess with lines inside the code. PostSharp and Log4Net are my goto's.

* Simplification - Partially included above (no need for a lot of logging code with the right tools).

* Mental Gymnastics - its easier to see Step 1, 2, 3 when they are next to each other instead of pages apart.

* Scope - only the parts that get sent in via parameters are worried about, and only a single return is normally needed.

* Nesting - I've used minor functions to remove 3-4-5 levels of nesting before.
"Tough on crime" almost never works. Appreciate your comments :-)
> Once we pulled up into my driveway, the agents recommended I go inside first and take a few minutes to explain what was happening to my family.

This can't possibly be true. Allowing the suspect to enter first and "take a few minutes to explain" is absurd. If you're going to give them a chance to flush evidence, why go through the search in the first place?
Druid is quite a good one
What's the debate as you see it? Can you boil it down to two sides? I'm asking because, maybe we actually agree about stuff, or maybe we totally disagree.
No, people are too lawsuit-crazed these days. Many companies will give no facts about a past employee other than the dates they were employed. Even "would you hire this person again?" can be dangerous.

At one of my past employers, my manager (who sat next to me) told me that he wasn't allowed to say anything whatsoever about past employees - when anyone called to confirm past employment he had to give them HR's phone number, where specially trained operatives would presumably answer the one and only question allowed.
Comes from the perspective of the author, see the note:

> This paper is not meant for grading programmers [...] This paper was written to force its author to think, and published because he thinks you lot would probably get a kick out of it, too.

The intent of that remedy is to wean the programmer off of using a debugger and to executing the code mentally.
Lenovo Still Shipping Laptops with Superfish
There are only 8 questions. So I believe you scored 7/8, which is pretty good imho.
Your "and join the middle class" step isn't happening. There are two classes of people who graduate from college at this point.

The first graduate with degrees and skills that are useful - or can be made useful - in the professional world and start working immediately.

The second graduate with degrees that are useful for the sole purpose of teaching others those exact same topics and nothing else. They get paid a fraction of what the first group is.

While we need some teachers, professors, etc, the low pay in these roles point at an overabundance. If there were less people seeking those roles, recruiting them would become a priority and pay would rise. As we're seeing in software development every day.
Lecturers and adjuncts are not the same thing. The former is a fulltime job and the latter is a part time job. Lecturer just means you aren't tenure track and don't do research.
>Whose definition?

Oh, you know, the OSI[0], the folks that coined the term in the first place. This is a textbook case of "openwashing"[1].

[0] http://opensource.org/osd
[1] http://michellethorne.cc/2009/03/openwashing/
signs you're too good of a programmer -

you use monads in object-oriented languages (like Python)

instead of the standard library, you get your algorithms from PDF's you have to pay a journal access fee for.

you believe in good test coverage: so do the ten thousand people who have downloaded your test suite from github.

you leave comments highlighting incorrect behavior... by the standard compiler.

you don't always formally verify that your program is optimal- sometimes you only formally verify correctness.

you're a full-stack developer, but wrote some of the layers yourself.

investors want to meet the rest of the team
I'll pile in here to note that I worked with someone back in in junior year of college on a group project. This person insisted that our entire project (which was quite large) needed exactly four classes as we identified four types of users for our classes. "J., we also discussed how Smith over here was going to build a database access layer, which means at least one more class. What you are saying does not make any sense." He refused to see reason. Not only did he graduate, but he is now overseeing a team of engineers at a corporation where he was first an engineer for 3 years. I pity them.

I also worked with an individual who could not code to save his life and had to "work with" (read: copy) a friend to complete even the simplest assignments. This person went on to work for a major US financial institution. In fairness, he only works in IT, but I am sure his software incompetencies can't be good for the company.
The largest impediment to everyone switching over to electric cars, is grid and supply, not storage.

We can do the battery storage right now, it's just not as great as what we'd like.

If you switched all cars over to electric tomorrow, the grid would melt down in every country that attempted it. There is not even remotely enough power available to handle it. Most first world countries are running their national power grids with a very modest buffer (and for countries sub first world, forget about it, they're still dealing with routine rolling blackouts).

By the time all autos are switched to electric in 30 years, hopefully self-driving cars have wiped out at least half of all vehicles in the first world.
Confident? Your voice gives you away in milliseconds
We do all development in 95% C and 5% assembly. While not with him, I have given people chances at other times and they fail miserably if they don't have basic C programming skills.
I should add that we do something similar for mansions: https://twitter.com/openmansions

And here's the full firehose of shitty listings: https://twitter.com/shittylistings
>Incompetence with Regular Expressions

Well, method acting here I come!
Yes. (Strictly speaking, a perfectly circular orbit would qualify as a "classical Kepler orbit", and is still possible in GR, but this is an idealized case.)
Seven Features You’ll Want in Your Next Charting Tool
Vending machines. Seriously.

McDonald's core products are so assembly-line friendly that there's no need for human hands. Every office multiplex should have a machine that spits out Big Macs, McD's fries, and Cokes - one of the greatest flavor combinations ever concocted.
The whole series of videos about various astronomic subjects is extremely well done. The music and narration of Dennis Overbye remind me of the old Carl Sagan movies, this time made for the newer generation, with a shorter attention span.
As a non-programmer who likes to work on one-off projects or personal projects, I completely agree with you. If someone is still doing some of these things after 10 years of experience in the industry, then yes, they probably are a bad programmer. But if they're new, this can just be chalked up to a lack of experience. I think this relates to the industry's general tendency to shut out anyone who "doesn't know what they're doing". The language used to answer some of the more basic questions on Stack Overflow is a perfect illustration.
Technical committee appointments
It isn't only OPEC.

The US dollar shaved at least 20%+ off the price of oil, and likely instigated this crash (the world was swimming in oversupply of oil for quite some time before the crash).

The US dollar began skyrocketing, due to the end of QE, at exactly the same time oil began crashing. Not a coincidence, given oil is priced in dollars and the US dollar is on its greatest one year run in decades.

Look at July 1st

USD
http://finviz.com/futures_charts.ashx?t=DX

Oil
http://finviz.com/futures_charts.ashx?t=CL
Even if a perfect battery was introduced tomorrow it would still take at least 10 years before it made a serious dent in the car market. The Prius was introduced in the US in 2000 and it took about 11 years for them to sell the first million.[1]

The vast majority of people don't buy a brand new car more than once or twice in their life. They simply don't have the money. The rest of the people buy a car used and drive it until they sell it to someone else to buy another used car. Cars can last 200+k miles which is often 15-20 years in the life of most vehicles.

[1] - http://en.wikipedia.org/wiki/Toyota_Prius
Great point. A subroutine is essentially assigning a signature (name, args, returns) to a block of code and never having to look into the details of the block of code again. A bad subroutine is a subroutine that hides nothing: all the internals details of the subroutine leak through the signature.
The problem with vending machines is the intake of fresh food. Do you really want to eat a five month old thing of mcdonalds fries?
Quora for just India, with answers from experts instead of kids fresh out of college
Using the tools available to you to their fullest extent, rather than doing things the hard way on purpose just to be more "hardcore", is not a sign of a bad programmer
Surprised by the poetry.
From what I've read from you in the past (as well as the way you're mentioned in the article), I think we probably agree.

If I had to reduce the debate to two clear groups, it's that one group believes that there's a bright-line distinction between "good" programmers and "bad" programmers, and that the questions-at-a-whiteboard model is an effective way of discriminating the groups. The other group doesn't believe in partitioning the world into two clear groups.

It isn't debatable that there are a lot of people who can't write code. I believe that trivial phone-screen coding problems are pretty effective at weeding those people out. Beyond that, it's much more about candidate/position fit, and that's a more subjective question. The problem is that programmers tend to be uncomfortable with subjectivity, preferring instead to posterize the shades of gray -- that's how we end up with the apocryphal Google engineer who can't code.

In your stated example (person hired; can't fathom basic realities of C pointers), I doubt that it reflects a complete inability to be functional in some programming role -- just not the one you were needing. Most "Rails programmers", for example, would probably be hopeless in that situation, but perfectly capable of cranking out websites with Rails. I've seen a fair number of real-world programmers whose (lack of) knowledge of algorithms and data structures makes me cringe -- and I certainly wouldn't hire them for the kind of work I tend to do -- but I have to accept that they're effective within their niche.
In short this article looks at aspects of programming and says if you're bad at each aspect you're probably bad at the sum of them. I'm not sure what the purpose is... you can figure out more directly whether you're a bad programmer by comparing the code you produce to that of your peers.

Aside from that the made up terms are annoying. It would be more readable if he used

voodoo code => dead code
bulldozer code => high cohesion subroutines
pinball programming => unreliable code

I can't think of anything good to say about this article.
All About Methods
This seems unworkable.

Why 10% and not, say, 90%? Or 100%? (100% and maintain a GPA seems the most workable.)

What about someone in the 50% range who decides after 10 years in the workforce to go to college? With no second chances, this is the tyranny of the Permanent Record.

What about someone who gets a GED to graduate early, to start college early; or someone who had to drop out to support the family and then get a GED finish high school and go on to college? What of home schoolers?

I can also envision school swapping. If I'm at the border of 10% in a very good school, then in my last semester (after the submissions for college have gone out) of school I could switch schools to an academically poorer high school and have a much better chance of getting the grade. It's worth $40,000 in tuition money, so some people will do it.

Or in my case, I took a lot of classes in high school, including some that were dual-enrolled with the local community college. While AP calculus had an extra boost in the GPA calculation, my differential equations class did not. What luck it would be if by taking more advanced, unweighted classes I happen to be below the 10% mark, filled by those who maximized GPA instead of education.
Completely meaningless. "Written by a computer" doesn't really mean anything. What's important it's the breadth and variety of the content an algorithm can generate, its ability to choose the most relevant among its input data, and the amount of meaningless content that has to be discarded by a human supervisor before publishing.

Take fragment 6:
“Tuesday was a great day for W. Roberts, as the junior pitcher threw a perfect game to carry Virginia to a 2-0 victory over George Washington at Davenport Field.”

Cool. And who told the computer it was a great day for him? Who told the computer he was playing? Who told it his game was "perfect"? This sentence can be written by a professional human journalist in about ten seconds, how long does it take to input in a computer the data that make up the story or to check among hundreds of possible variations for one that doesn't contain obvious mistakes?

Or:
“Kitty couldn’t fall asleep for a long time. Her nerves were strained as two tight strings, and even a glass of hot wine, that Vronsky made her drink, did not help her. Lying in bed she kept going over and over that monstrous scene at the meadow.”

Ok, it's a novel, written by a computer. Now, everybody can write a software that produces one single novel: just store it as a single string in the program and print it out. The magic happens when the computer can write something that goes way beyond the data that was stored in it exactly for that purpose. So how many different novels can this program write? Does the result exceed considerably the effort of the programmers put in the program itself? Most probably not, otherwise we'd be talking of a general AI.
> but I think that's lost on you

No personal jabs, please. This comment makes a fine point without that.
2/3 is generous. That implementation probably puts you in the top-90% of candidates that make it to a technical interview.
If Yik Yak's privacy policy is to be believed, they only store IP address and GPS location (and account id) for each post. You'd have to do an additional step of contacting ISP or phone company with the information to actually find the person. The android app requires the identity permission, but I can't tell if it sends that information back to a server somehow. They claim they don't gather that information for accounts.
I agree with all of the things that the article explicitly names as inappropriate use of language, such as featurism and differential naming (although I think that the quick examples given for diminutivisation, "waitress" and "actress", are among the least objectionable instances).

That leaves me all the more puzzled and bothered that the list of replacements at the bottom is immediately concerned with eliminating personal pronouns, and remains concerned with that through most of the examples, rather than actually dealing with the above-mentioned undesired features. Not all use of the pronoun "he" highlight masculinity—the author himself recognizes that grammatical gender is no longer used in English. Of course, in some instances, it does; I quickly determined that the author was likely male before using "himself" in the previous sentence. The difference, which the author doesn't bother to point out, is that when talking about a particular person, it is no longer acceptable in English to use masculine pronouns when the referent's gender is unknown, and I think that's a good thing. I also think that a great many writers have adopted that convention, which explains in part why most of the examples are dealing with the other use of the personal pronoun not to refer to a specific person but to an arbitrary person. In these cases there's no reason to see "he" as gendered; it's simply a generic pronoun.
And, yet, 大山 can read the websites of manufacturers, their specifications and documentation, can interact directly with the people involved in the design with lower language barriers, etc. I've been researching contracting a manufacturing partner in China for a variety of products I'd like to see but don't exist (or do exist, but at a price point that is absurd, given cost of manufacture); nothing all that complicated, really, but I still find I'd like to be able to dig deeper into the manufacturers reputation and I'd like to be able to interact with them in a way that insures we're actually talking about the same things, and that's challenging for an English speaker.

Realistically speaking, I probably just need to find a business partner who is fluent, maybe someone in China near the relevant manufacturing region. It'll take years to be fluent..Though I recognized 大, as I've been doing Chinese words in Memrise.
People are animals too