Live data from Hacker News

Your Progress As A Programmer Is All Up To You

thecodist.com

61–69 of 69 posts

Re: Your Progress As A Programmer Is All Up To You

#61
The biggest issue I had with that comment is: its your responsibility as a programmer to keep yourself educated and up to date, not some employer's.

I agree and disagree. It's a moral responsibility of the employer. Work takes up such a large portion of a person's time and energy that if the company isn't invested in the employee's progress, he owes that company nothing. My work ethic is strong as hell, but if I get the sense that management isn't interested in my progress, I slack as a matter of principle. If your manager isn't looking out for your career and you put more than about 10-15 hours per week in on your assigned work, you're just a chump. (In the MacLeod analysis, a Clueless.)

That said, expecting your employer to manage your progress and education is unreasonable, because no company can possibly account for the variations in peoples' abilities and desires. Even if your employer is genuinely well-intended and wants you to advance-- let's ignore the 80% of companies that aren't this way-- your company will figure out where you should go much later than you will. That's why open allocation is the best solution: the workers can figure out what's worth working on faster than central/upper management.

So, yes, it's a moral responsibility to the employer to give the employee time and resources to look out for her career (and, if it doesn't, engineers should slack). However, for the employee to put the self-executive responsibility of picking out what to learn on the company is, in practice, an irresponsibly bad idea.

By my third year I saw the microcomputers were going to be the future and wiggled my way into the group that worked with them.

The problem is that most modern companies have such mean-spirited, insane policies regarding performance reviews and internal transfer that internal mobility is pretty much impossible in them. At a closed-allocation tech company, the only time you can realistically get a transfer is when your performance history is in the top-10%-- in which case, lateral transfer is a terrible idea anyway, because you should wait for the promotion instead of restarting the clock. Closed allocation and Enron-style performance reviews are all about inhibiting mobility, i.e. keeping the poors in their place.

But once you discover you are obsolete it's too late. Assuming your employer will retrain you is a fool's pipe dream. These days employers may drop you, your job, your projects, or even the whole company without much notice, and then you have to find a new job. Expecting them instead to retrain you is not going to happen.

This is why I hope to see a French Revolution-style uprising. Silicon Valley looked like a way out, a "middle path" between serfdom and violent revolt. Now that that middle path is closed due to the VC good-ol'-boy network, I think that a (probably global) class war is just an eventual necessity. It may come next year, and it may come in 50 or 100, but I hope that it's the last major war humanity has to endure.

In programming you need to look forward because the only thing behind you is that nasty steamroller.

Honestly, I get the feeling that this guy was very lucky. He had the autonomy to pick new technologies and he picked winning horses. Imagine what he'd be writing if, instead, he'd learned Blackberry app development. Or, what he'd be writing if his manager, long ago, had fired him for attempting the transfer to the microcomputer team (possibly forcing him to take a suboptimal job due to financial pressure, with long-term effects on his career). He should at least attribute some of his success to having been luckier than most engineers.

Re: Your Progress As A Programmer Is All Up To You

#62
post #28

Earlier quoted context omitted.

> I'm not sure what things are left you > could do differently? There are so many thing that are left - one cannot do them in a lifetime! Analyze as much bugs as you can, invent your own language that prevents them from happening, write your own compiler for this language, make it fast, with better memory management, not some stop-the-world GC, but with something, that honors low-latency and so on. EDIT: As RogerL is…

So clearly you are not the class of person I have ever dealt with in the past. It would be an incredible breath of fresh air to work with someone who cares enough about their work to write their own compiler for it. Right now I'm working through SICP, having just finished PLAI, do you have any suggestions for a book on compilers I could do next? I was recently steered away from the dragon book as it's "missing a lot…

I found this book on compilers to be rather up-to-date, clear and useful when you start going into the topic: http://www.amazon.com/Engineering-Compiler-Second-Edition-Co...

Re: Your Progress As A Programmer Is All Up To You

#63
post #60

Earlier quoted context omitted.

I find it very strange to see an argument that memory safety is not an important property. Here are some arguments for it's importance: "Memory error exploitations have been around for over 25 years and still rank among the top 3 most dangerous software errors." http://www.isg.rhul.ac.uk/sullivan/pubs/raid-2012.pdf Or see work on static analysis of kernels and device drivers like http://research.microsoft.com/pubs/74…

I didn't say that memory safety is not important. I was talking about the need to control memory layout and other bells and whistles. Anyway, you suggested Rust under false assumptions. Rust doesn't care about reliability and security any more, than most of the modern languages. Even Perl with its taint mode is more secure, than Rust.

I'm out; this discussion is not productive to me. You have given no evidence to back your claims -- you have no data, to use your phrase, though you are so keen to see mine.

Specifically:

I gave examples of the need to control memory layout and memory allocation.

I gave examples of Rust's features leading to reliability and security -- memory safety and absence of data races.

Re: Your Progress As A Programmer Is All Up To You

#64
post #60

Earlier quoted context omitted.

I find it very strange to see an argument that memory safety is not an important property. Here are some arguments for it's importance: "Memory error exploitations have been around for over 25 years and still rank among the top 3 most dangerous software errors." http://www.isg.rhul.ac.uk/sullivan/pubs/raid-2012.pdf Or see work on static analysis of kernels and device drivers like http://research.microsoft.com/pubs/74…

I didn't say that memory safety is not important. I was talking about the need to control memory layout and other bells and whistles. Anyway, you suggested Rust under false assumptions. Rust doesn't care about reliability and security any more, than most of the modern languages. Even Perl with its taint mode is more secure, than Rust.

[deleted]

Re: Your Progress As A Programmer Is All Up To You

#65
post #60

Earlier quoted context omitted.

I find it very strange to see an argument that memory safety is not an important property. Here are some arguments for it's importance: "Memory error exploitations have been around for over 25 years and still rank among the top 3 most dangerous software errors." http://www.isg.rhul.ac.uk/sullivan/pubs/raid-2012.pdf Or see work on static analysis of kernels and device drivers like http://research.microsoft.com/pubs/74…

I didn't say that memory safety is not important. I was talking about the need to control memory layout and other bells and whistles. Anyway, you suggested Rust under false assumptions. Rust doesn't care about reliability and security any more, than most of the modern languages. Even Perl with its taint mode is more secure, than Rust.

Mozilla's Gecko team is incredibly interested in both uncompromising performance and strong security. Rust is the first language in industry to offer the zero-overhead abstractions of C++ while retaining memory safety (with the exception of perhaps Ada, which has never taken off outside the government sector).

You seem remarkably uninformed as to what Rust's goals are. Allow me to enlighten: reliability is a big, big deal to the Rust developers. Security is a big, big deal to the Rust developers. Speed is a big, big deal to the Rust developers. Memory efficiency is a big, big deal to the Rust developers.

As for your mistaken assertion that such efforts at memory safety are unnecessary in real-world code:

https://groups.google.com/forum/#!msg/mozilla.dev.servo/ufJM...

  >>> * Do we have data showing how many security bugs we could be avoiding in
  >>> Servo in comparison to Gecko? Is the security benefit truly as valuable
  >>> if expected performance benefits don't pan out?
  >>
  >> We've been talking to some members of the security team (Jesse, Brian). In
  >> general the main class of security vulnerabilities that Rust offers a layer
  >> of defense against is memory safety problems in layout, rendering, and
  >> compositing code. Use-after-free is the big one here, but there are others.
  >> I'm not in the sg so I can't run the numbers myself, but I am told this
  >> constitutes a large class of security vulnerabilities.
  >>
  >
  >A quick scan suggests that all 34 sec-critical bugs filed against Web Audio
  >so far are either buffer overflows (array-access-out-of-bounds, basically)
  >or use-after-free. In many cases the underlying bug is something quite
  >different, sometimes integer overflows.
  >
  There are 4 sec-high bugs --- DOS with a null-pointer-deref, and a few bugs
  reading uninitialized memory. The latter would be prevented by Rust, and
  the former would be mitigated to the extent Servo uses the fine-grained
  isolation Rust offers.
  
  There are no sec-low bugs.
  
  Web Audio is an example of a feature which has very little security impact
  of its own. Its security impact is entirely due to bugs where violation of
  language rules can trigger arbitrary behavior. Rust prevents such bugs. A
  lot of Web features are in this category. 
TL;DR: Firefox's Web Audio component, which in theory ought to have practically zero attack surface, contained at least 34 critical and exploitable security vulnerabilities. All of these were a result of the lack of safety afforded by C++. Rust would have made these vulnerabilities impossible.

Re: Your Progress As A Programmer Is All Up To You

#66
post #2

This is absolutely true, at least from my perspective. All of the programming jobs I've had in my career have been for medium- to freaking-huge companies, and most of my projects at those jobs have required me to do a ton of self-teaching to get up to speed on a bunch of technical (or scientific, or mathematical) stuff that I had no previous exposure to, in order to get my job done. On only one occasion did I ever ge…

I find it is usually possible to convince your employer to give you time to study up - whether this is extra time tacked onto a project because "I need to learn the framework", or actual formal training.

I think not making your employer pay a fair share of your training is like being one of those people who stay 4 hours extra when their project isn't late. People do it through a mixture of anxiety, peer pressure, and possibly not liking their children all that much.

To me, it is your responsibility to learn the tech you want to use in your next job, but it is fair to ask the company to pay for new skills you need for them.

From the companies perspective, it is worth spending the money up front so that you don't mess up a project by not really knowing what you are doing.

Re: Your Progress As A Programmer Is All Up To You

#67
post #65
post #60

Earlier quoted context omitted.

I didn't say that memory safety is not important. I was talking about the need to control memory layout and other bells and whistles. Anyway, you suggested Rust under false assumptions. Rust doesn't care about reliability and security any more, than most of the modern languages. Even Perl with its taint mode is more secure, than Rust.

Mozilla's Gecko team is incredibly interested in both uncompromising performance and strong security. Rust is the first language in industry to offer the zero-overhead abstractions of C++ while retaining memory safety (with the exception of perhaps Ada, which has never taken off outside the government sector). You seem remarkably uninformed as to what Rust's goals are. Allow me to enlighten: reliability is a big, big…

This is pointless. Of course memory safety is necessary, I never said that it isn't. I was assuming that any sane person would understand that. And guess what? Most of the mainstream languages are safe in that regard. So you cannot claim, that Rust is particularly safe, it isn't. It's safer than C and C++, but that's about it. And that's ok, no need to be offended.

Re: Your Progress As A Programmer Is All Up To You

#68
post #42
post #22

Earlier quoted context omitted.

No, they are interested, learning is fun for them too. But not everyone is interested in learning the same things you are. For me, for example, there is absolutely nothing more boring, than some new fancy framework, API or a language. I am, however, very excited to try things that might reduce amount of bugs and potential security issues in my code, make it cheaper to run, cheaper to support.

there is absolutely nothing more boring, than some new fancy framework, API or a language Hear, hear. There must be 100+ "frameworks" out there, all for the task of rendering a web page. If you learnt them all, you would be stupider than when you started. Pick a handful of technologies - ones that will last - and get deep into them. Step off the crazy treadmill and go for quality, not quantity. If you had gotten into…

What's the best way to determine quality over quantity?

Is it best to wait languages out for a while and see how much they are adopted by others first?

Re: Your Progress As A Programmer Is All Up To You

#69
I agree completely with this blog post, though honestly, to me it makes the field sound pretty grim. I highly recommend you follow the link to the "technology steamroller" (earlier post by same blogger).

"If you don't keep learning, keep reading, keep improving your skills eventually that nasty steamroller behind you will flatten you permanently. Then your career is likely over."

and

"And that clanky monster breathing down your neck has an endless supply of fuel."

Egads. Not blaming the messenger here, he's right. It's a tough field. So the pay is extraordinary, right?

http://money.usnews.com/careers/best-jobs/rankings/the-100-b...

Take a look at these jobs, and in particular, look at the pay in higher salary regions. The best job, software developer, earns 116k a year on average in San Jose.

The average registered nurse earns 122k a year in San Jose. The average dental hygenist in SF earns about 106K a year. Nurse practitioners clock in at 125K a year.

There are all kinds of ways to interpret this data, and in the end, I'm talking about the greenness of the grass somewhere else. Not that I wouldn't welcome comments about these comparisons, I just want to make it clear that I acknowledge these other fields come with their own stresses and challenges and barriers to entry (and I don't object to good salaries in these fields at all). And everyone has to keep learning...

But is there a steamroller that threatens to make dentists obsolete, and do dentists have to bet the farm, so to speak, on whether to learn "enterprise java beans". It does seem particularly relentless (and difficult to predict) in software, and the career stakes are very, very high.

I think programming can be a wonderful career for some people. I think the main reason I pay so much attention to this sort of thing is that I often think about pay and work conditions for software developers within the context of claimed "shortage", as this is frequently discussed (and until recently, often accepted without question) in the mainstream media.

Judging from this informative blog post, it takes a very unique wiring to really thrive for a career as a software developer. Can we really say there's a shortage of people willing to put themselves in the path of a steamroller? (The author of the blog post in no way made this claim, this is just a question I'm turning around in my own mind).

Post reply on HN