News for hackers. Stuff that matters.
Re:Visualizing How Developers Rate Their Own Programming Skills by lacampbell on Monday November 28, 2016 @02:27PM (#13057725)
I have a degree in computer science, but at the end of the day it's just a piece of paper - I learned programming mainly through the internet. I talked to people who cared enough about programming enough to hang out on IRC, or write technical blog posts, or write their own libraries, etc.

What has shocked me since entering the "real world" is how little most other programmers I meet care about programming, their craft, code quality, or learning new things. I was legitimately shocked at how good I was compared to the real world population, as opposed to the "internet programmer" population where I was mediocre at best.

This isn't a value judgment - not everyone is passionate about their day job. But it might resonate with someone out there.

Re:Visualizing How Developers Rate Their Own Programming Skills by thegeomaster on Monday November 28, 2016 @03:09PM (#13057980)
One time, when leaving a company, I helped interview candidates for my old job, since I could best tell what skills are needed and to what extent.

I reckoned at the time, from most interactions on the Internet, that I am (globally) a mediocre, if not below-average, developer - in each discussion I participated online, there were always people above my level, from the ones having a slightly better understanding of the subject to the people whose depth of knowledge appeared somewhat otherworldly.

This belief was particularly strengthened by the fact that I didn't have much contact with real-world developers in real life, as my friends tended to come from different backgrounds.

When the interviews came, I was astonished how many of them couldn't code their way out of a paper bag. The ones who did, wrote code with messed up indentation, inconsistent style, ugly and hackish approaches, and the like. I couldn't imagine how someone could leave their code like that and say "there, this is my finished product." But here they were, and it seemed like they didn't really see anything particularly wrong, or just not important enough to justify the added effort of cleaning the mess up. It was a very strange moment for me.

I believe this to be an example of the classical selection bias: people inclined to participate in online discussions, answer questions on StackOverflow, write blogs and type out detailed technical comments on HN are on average a lot more skilled than the average just-earning-my-living developer fresh out of some half-assed "be a software engineer and make tons of money!" three-month course.

Re:Visualizing How Developers Rate Their Own Programming Skills by furyofantares on Monday November 28, 2016 @03:59PM (#13058350)
There is another very strong bias that goes on when hiring, though. Take 9 competent developers who tend to get offers and 1 that can't code their way out of a box. That 1 could very easily do more interviews than the other 9 combined before landing a job (and will be back on the market sooner to boot) and interviewers might conclude them typical and the other 9 atypical even though the reverse is true.
Re:Visualizing How Developers Rate Their Own Programming Skills by Bahamut on Monday November 28, 2016 @08:10PM (#13059899)
I worked with someone once who had a really sloppy/inconsistent code style, but the code he wrote was rock solid.

His subsequent (and current) job is now as a very well-known expert as as developer advocate for one of the big four tech companies.

You'd be surprised at what you find developers out there doing, the only good metric on a person being a good developer is writing fundamentally sound code. Literally nothing else matters.

Re:Visualizing How Developers Rate Their Own Programming Skills by rz2k on Tuesday November 29, 2016 @11:08AM (#13063896)
In Zen and the Art of Motorcycle Maintenance the author puts forward two types of welders. One is the type that excels at really complex and difficult welds, but isn't very good at making simple welds in repetition. The other might get tunnel vision when trying to figure out an unusual weld, but has the discipline to produce consistent, flawless welds in great quantity.

It might be explained by what is know as Yerkes–Dodson law[1], which describes how performance increases with mental arousal up to a certain point then decreases. If different types of tasks correspond with different arousal for different people, then the type of welder or developer one is is orthogonal to their fundamental skill. Instead it would mean that the first type needs to cast the problem as something novel in order to gin up the necessary level of concentration to get the problem done, hence the rock solid code that has sloppy/inconsistent style.

It makes sense that a good advocate would be highly skilled, but the type who has difficulty with necessary work that seems mundane. In other workplaces this might be the person who seems to have low output, but gets their coworkers past their roadblocks.

[1] https://en.wikipedia.org/wiki/Yerkes–Dodson_law

Re:Visualizing How Developers Rate Their Own Programming Skills by logicallee on Monday November 28, 2016 @10:23PM (#13060514)
I hadn't heard of the term "big four" tech companies - does that denote Google, Facebook, Apple, and Microsoft? (just my guesses)
Re:Visualizing How Developers Rate Their Own Programming Skills by uiri on Tuesday November 29, 2016 @01:12AM (#13061229)
The term Big Four originates in accounting where there actually are a specific set of four large, established companies.

For tech, I usually remember it as AmaGooBookSoft - Amazon, Google, Facebook and Microsoft. Apple is sort of a hardware company so sometimes it is included and sometimes it is not.

Re:Visualizing How Developers Rate Their Own Programming Skills by jbigelow76 on Monday November 28, 2016 @10:44PM (#13060612)
I've always heard it as Google, Facebook, Apple and Amazon. Microsoft isn't very sexy to the typical developers that participate in the startup/Silicon Valley "scene" and its accompanying communities (HNews included).
Re:Visualizing How Developers Rate Their Own Programming Skills by jghn on Tuesday November 29, 2016 @12:56AM (#13061167)
Big four almost always includes google and facebook but the other two slots seem to vary a bit based on who is saying it. I've even seen companies like yahoo and twitter thrown in there.
Re:Visualizing How Developers Rate Their Own Programming Skills by leesalminen on Monday November 28, 2016 @04:07PM (#13058423)
Indentation! Not much in this world upsets me as much as inconsistent indentation. Ruins my day any time I have to actually read 500 lines of it.
Re:Visualizing How Developers Rate Their Own Programming Skills by mahyarm on Monday November 28, 2016 @07:06PM (#13059543)
You should automate that issue and have an autoformatter on every commit. Everything else is a waste of time
Re:Visualizing How Developers Rate Their Own Programming Skills by aninhumer on Monday November 28, 2016 @07:40PM (#13059751)
Honestly, I feel like we should have gone further and decoupled display and serialisation formats of code a long time ago. (Although I understand why we haven't.)
Re:Visualizing How Developers Rate Their Own Programming Skills by GlennS on Monday November 28, 2016 @05:18PM (#13058902)
A lot of people without much programming experience seem to really struggle with nesting. We take it for granted, but I suppose it actually involves some reasoning about evaluation order of arguments.

For those people, persuading them to indent can be the difference between them having a chance of learning the knack or just flailing randomly, getting frustrated, and giving up.

(The other lesson is: if you're building a DSL for non-programmers, try to avoid putting in nesting and make everything really flat instead.)

Re:Visualizing How Developers Rate Their Own Programming Skills by 551199 on Monday November 28, 2016 @07:52PM (#13059807)
Beautify for Brackets/atom works great. Should be a standard thing in editors really.

Some older books are the worst with indentation. Instead of learning to code you spend most of the time figuring out where the code block ends.

Re:Visualizing How Developers Rate Their Own Programming Skills by tiglionabbit on Monday November 28, 2016 @04:19PM (#13058512)
Wouldn't it be nice if all languages made indentation significant?

Or at least included a tool to fix it.

Re:Visualizing How Developers Rate Their Own Programming Skills by wcarron on Monday November 28, 2016 @04:30PM (#13058599)
Vim has a nice command to fix indentation from the beginning to end of file: "gg==G (include the dblquotes)
Re:Visualizing How Developers Rate Their Own Programming Skills by throwanem on Monday November 28, 2016 @05:04PM (#13058818)
Emacs does the same with C-x h TAB, or you can mark a region manually and reindent its contents with TAB.

As with vim, this depends on being in the right major mode for the language you're working with, which should be automatic for most languages (except Perl, which is screwy, because of course it is), and depends also on that major mode knowing how to cope with the code and being configured the way you want, which should be reasonably trivial for most languages (except Perl, which is screwy, because of course it is).

Re:Visualizing How Developers Rate Their Own Programming Skills by rifung on Monday November 28, 2016 @04:41PM (#13058685)
(Assuming that vim knows how to indent the language you're editing and in the way that you want)
Re:Visualizing How Developers Rate Their Own Programming Skills by reitanqild on Monday November 28, 2016 @04:34PM (#13058637)
Just don't uncritically apply this to all files without thinking twice and also consult with your team. :-/
Re:Visualizing How Developers Rate Their Own Programming Skills by 551199 on Monday November 28, 2016 @07:46PM (#13059782)
Messing up indentation deliberately in few places is a good way to gauge their reaction and would you like to work with them.
Re:Visualizing How Developers Rate Their Own Programming Skills by nandemo on Tuesday November 29, 2016 @02:48AM (#13061534)
Please don't do that sort of thing -- unless you give the candidate a piece of code and specifically ask what could be improved.

But don't expect candidates to spontaneously criticize the interviewer's code. Yeah, I know, you want to work with people who can think critically etc, but at the time of interview you aren't coworkers and aren't on equal footing. Personally, if I as a candidate see you writing code with bad indentation I will conclude either (a) you were making a point about e.g. correctness or efficiency and didn't bother to indent because it's literally throwaway code, so mentioning the indentation would be a distraction; or (b) you and your team don't care about indentation at all.

Re:Visualizing How Developers Rate Their Own Programming Skills by demolish on Monday November 28, 2016 @10:10PM (#13060456)
i just create an editorconfig file <http://editorconfig.org> in root directory of projects, saves having to remember to switch tab settings across them (there might be another plugin with more functionality but it does what i need it to)
Re:Visualizing How Developers Rate Their Own Programming Skills by flukus on Monday November 28, 2016 @10:55PM (#13060653)
This is half a solution at best. It doesn't specify whether to put the curly brace on a new line for instance, and a dozen other formatting options.
Re:Visualizing How Developers Rate Their Own Programming Skills by demolish on Tuesday November 29, 2016 @09:10AM (#13063097)
yeah, i meant for the tab issues specifically since others arent as easy to miss

hopefully someone will get around to adding more functionality to the plugin so i don't have to edit my visual studio formatting settings for parentheses/comma spacing whenever i switch projects :p

Re:Visualizing How Developers Rate Their Own Programming Skills by keithnoizu on Monday November 28, 2016 @04:02PM (#13058378)
I make constraint based short term implementation decisions

You sometimes resort to short cuts to meet deadlines.

They, are hacks who don't know how to code.

But yeah I never consider myself to be a great developer until interacting with other developers.

Re:Visualizing How Developers Rate Their Own Programming Skills by BurningFrog on Monday November 28, 2016 @04:23PM (#13058552)
The other selection bias here is that bad programmers have to interview a lot more than good ones.
Re:Visualizing How Developers Rate Their Own Programming Skills by wott on Monday November 28, 2016 @07:47PM (#13059788)
Yeah, I don't even have a CS degree. I was considering myself below average as long as I was working mostly alone or on specific domains, for I could not compare with others IRL. I could only read people on Usenet or on the Web and they often looked 10 times as knowledgeable as I was. Also, I could see that other professionals listed impressive job titles and definitions, so I was, yes, really impressed and couldn't see how I could ever match those advertised skills.

Then I got a job in a bigger company, where because of the nature of the job, I could easily compare with other people in a large team, in the rest of company, and in other companies; and I quickly noticed I was in the top 10% or perhaps even 5%. That was at the same time very surprising and... very appalling, because that meant that all the big titles of those guys were just kind of fake, empty. it felt a bit as if I had been deceived. Even though they had CS degrees, they had vast holes in basic programming know-how an in computer knowledge, and they didn't give a fuck about it, as little as they cared about doing a clean work.

So the people I used to read on Usenet or the Web were indeed exceptions and not the norm, and sometimes pretty much gurus in their domain. Anyway, they were not at all representative of the majority of developers that populate companies.

Re:Visualizing How Developers Rate Their Own Programming Skills by GuiA on Tuesday November 29, 2016 @01:09AM (#13061212)
> I quickly noticed I was in the top 10% or perhaps even 5%. That was at the same time very surprising and... very appalling, because that meant that all the big titles of those guys were just kind of fake, empty.

Keep in mind that following that reasoning, people in the top 1% would feel that your title is fake and empty. Would you then say that it's a fair perspective?

Re:Visualizing How Developers Rate Their Own Programming Skills by nitrogen on Tuesday November 29, 2016 @01:22AM (#13061267)
If that supposed 1%er (all else being equal like negotiating skill, personality, etc.) is making less money or receiving less respect, then yes, that's a fair perspective.
Re:Visualizing How Developers Rate Their Own Programming Skills by ramblerman on Tuesday November 29, 2016 @02:02AM (#13061394)
shouldn't the 1%er move up rather than criticise the rest down?

I mean by definition there are only so many 1%ers to go around to fill up top spots.

Re:Visualizing How Developers Rate Their Own Programming Skills by nitrogen on Tuesday November 29, 2016 @03:22AM (#13061665)
In theory yes, but the world isn't strictly meritocratic. Age, school (or lack thereof), social connections, height, attractiveness, clothing style, voice, accent, social class, birthplace, medical conditions, and other non-work-related attributes can still affect a person's achievements.
Re:Visualizing How Developers Rate Their Own Programming Skills by metaphor on Tuesday November 29, 2016 @02:14AM (#13061421)
> Even though they had CS degrees, they had vast holes in basic programming know-how...

A CS degree does not confer programming know-how...something about judging a book[1] by its cover comes to mind.

[1] https://en.wikipedia.org/wiki/The_Art_of_Computer_Programmin...

Re:Visualizing How Developers Rate Their Own Programming Skills by nickff on Monday November 28, 2016 @02:56PM (#13057892)
I agree with everything you say, but would also like to add that the level of passion and 'pride' which programmers have seems to vary by specialization. I work in embedded systems, where having well-factored code, with well thought-out scope is the anomaly, not the rule.
Re:Visualizing How Developers Rate Their Own Programming Skills by lacampbell on Tuesday November 29, 2016 @12:31PM (#13064506)
> I work in embedded systems, where having well-factored code, with well thought-out scope is the anomaly, not the rule.

I had always romanticised embedded programming is being the domain of tightly written, well thought out code. I figured there was much less "room for error", so there'd be more scrutiny per functionality. That's been your experience across a few companies?

Re:Visualizing How Developers Rate Their Own Programming Skills by nickff on Tuesday November 29, 2016 @05:33PM (#13066798)
Embedded software can be very tightly written, with large sections of code written in assembly to save a few instructions, and other portions of code loaded into RAM for faster execution.

There are also quite a few programmers who couldn't 'cut it' in web programming, and went over to embedded, where they wreak havoc on small low-cost devices, and another group of programmers who somehow 'fell into' embedded programming many years ago, and have not updated their skills since.

Re:Visualizing How Developers Rate Their Own Programming Skills by realusername on Monday November 28, 2016 @06:11PM (#13059251)
I have honestly seen the exact same thing. I was rating myself quite average or just below average. I found actually that as a web developer, if you have a general culture of lower level computing and can produce readable and maintainable code, you are already in the top 10%.
Re:Visualizing How Developers Rate Their Own Programming Skills by SeanDav on Monday November 28, 2016 @02:54PM (#13057874)
This agrees with my own experience. I learned programming with people that would do things like write their own graphics library, in Assembly language, or device drivers, just because they wanted to see if they could. I thought every programmer was like that in the professional world - with rare exceptions, they were not.
Re:Visualizing How Developers Rate Their Own Programming Skills by kayman on Monday November 28, 2016 @08:13PM (#13059914)
When I came out of college, some real life examples of people who do not seem to care at all which shocked me:

- CTO of a company I worked for (brother in law of the company director) typed with 2 fingers. No Joke

- Senior Software developer to nullify a list, he just creates a "new list" instead of setting it to "null" End result from practical point of view is the same. But the lack of computer science insight baffled me.

- Team lead implements lines of code as a tool to measure productivity. Being a new kid out of school, I felt too young to call bullshit but intuitively, I felt the metric was flawed.

Re:Visualizing How Developers Rate Their Own Programming Skills by mikekchar on Monday November 28, 2016 @11:05PM (#13060688)
One thing to keep in mind is that there is a difference between a metric and measure. A measure is basically exactly what it says on the box: it's something that you have measured. A metric is a measure that you use to drive process changes.

LOC is a good measure, but a truly terrible metric. The reason it is a terrible metric is because it easily gamed (both consciously and unconsciously). The same functionality can be implemented in 1 line or 100 lines. The amount of time it takes to write 1 line can be more than the amount of time it takes to write 100 lines. You get the point.

LOC can, however, be a good measure. You can test this yourself if you like. Go through an old project (something with a year's worth of code). Make a list of all the features that were implemented in that year. Estimate the amount of work for each feature (or use whatever estimates you had before). Make a rolling average of "amount of work" over each week. Now go into your code repository and make a rolling average for the number of lines of code changed each week (so basically just add the lines added to the lines deleted).

I think you will find that there is a correlation between the average estimated effort and the average change in LOC every week. This is because over the life of a project, developers tend to use the same kinds of techniques, the same idioms, etc.

Occasionally, you will find that the relationship between estimated effort and LOC changes dramatically. In my experience, you will discover that this corresponds with a change in development mentality. Something has happened on the team that changes the way they write code.

So it's a good measure for that kind of thing. For example, I once had to deal with political problems from upper management where they were convinced that the programmers were not focusing on their job. I could show them very easily from graphs of estimated effort and lines of code that it was very much business as usual.

All this to say that if your team lead is encouraging you to increase your number of lines of code out the door, then it is indeed a flawed metric. But if the team lead is measuring productivity with lines of code, it may very well be a decent measure. You can't use it to affect productivity, but you can use it for other purposes.

Re:Visualizing How Developers Rate Their Own Programming Skills by hex13 on Tuesday November 29, 2016 @09:19AM (#13063144)
"Being a new kid out of school, I felt too young to call bullshit but intuitively, I felt the metric was flawed."

You should have said that to the team. Especially that if anything goes wrong in project, usually it's new person on the board / junior programmer that gets the blame.

Besides not telling that was just not honest to the team. I think we should all learn from each other, no regard with the job title.

Re:Visualizing How Developers Rate Their Own Programming Skills by niij on Monday November 28, 2016 @11:17PM (#13060733)
Peck and typer here. I didn't learn to type "correctly" but I can still do my job.
Re:Visualizing How Developers Rate Their Own Programming Skills by k__ on Monday November 28, 2016 @03:42PM (#13058238)
My CS degree didn't teach me how to code, but it helped me with a few background informations.

I'm really bad at Math, but CS helped me to understand FP and algorithms a bit more.