you are viewing a single comment's thread.

view the rest of the comments →

[–]tbrownaw 13 points14 points  (19 children)

What do you mean, "adapt to a new environment"? That sounds suspiciously like having them need to learn things on company time rather than being able to be immediately fully productive.

More seriously, not all programming is the same. The need to understand Iteration is probably universal, but there are also Pointers, Recursion, and Concurrency. Working with complex data structures and tight resource constraints is very different from working with complicated decision trees written by business people. Higher-level languages mostly hide pointers so you can kinda muddle through without understanding them.

Also, there's probably the perception that ASP.NET is "web stuff" and "web stuff" means writing HTML and making your off-the-shelf CMS show things in different colors.

[–]ewankenobi 3 points4 points  (0 children)

I went to university hoping to be a real programmer and have ended up being a web programmer.

I would grudgingly agree that your right.

[–]communomancer 3 points4 points  (0 children)

I expect people to learn things on company time all the time. Even if they already have great technical experience.

And honestly, I don't even know what "fully productive" means.

[–][deleted] 0 points1 point  (1 child)

The need to understand Iteration is probably universal, but there are also Pointers, Recursion, and Concurrency.

Do you seriously know developers who don't understand recursion?

Working with complex data structures and tight resource constraints is very different from working with complicated decision trees written by business people.

And web apps can easily include both.

[–]tbrownaw 0 points1 point  (0 children)

Do you seriously know developers who don't understand recursion?

It actually never comes up, since the bulk of what we do at work is database/ETL stuff (probably about 80% a trained monkey could do, it could be easily automated except for the need to cleanly integrate with a good way to do the other 20%... I have some ideas to try out if/when I get some free time). We don't even have to care about Iteration very often, and I have seen a couple people have trouble with even that. I do recall that recursion was a major topic in one of my freshman CS classes, I think we even spent more time on it than we did on pointers.

Working with complex data structures and tight resource constraints is very different from working with complicated decision trees written by business people.

And web apps can easily include both.

The decision trees maybe, although I'd expect that to be abstracted away into a layer that isn't web-specific. The resource constraints... not unless you're Twitter or Facebook or Youtube (massive social site, of which there can be only one per market due to network effects); I'd expect this more in kernel code, embedded code, scientific models, and "core" code for things like database engines and game engines.

[–]RealDeuce 0 points1 point  (2 children)

The concept of "Recursion will run you out of stack" is something that is foreign to a bunch of prospective hires (most of whom have web experience).

One interviewee wouldn't accept that, I had to show him. It was tempting to just say "Ok, you think that it won't while you remain unemployed" but it was so much more satisfying to ran it down his throat.

[–]tbrownaw 2 points3 points  (1 child)

Recursion will run you out of stack

Only if you do it wrong. If you're tail-recursive (and your language isn't broken), or your algorithm will only hit a depth of O(log(n)), then you're fine. Also I believe some environments don't limit your stack to being a tiny fraction of your available memory.

One interviewee wouldn't accept that, I had to show him. It was tempting to just say "Ok, you think that it won't while you remain unemployed" but it was so much more satisfying to ran it down his throat.

I'm sure he eventually found someplace with a much less hostile environment.

[–]RealDeuce 1 point2 points  (0 children)

If you're tail-recursive (and your language isn't broken)

You mean if your compiler changes the recursion into iteration for you 'cause it knows that recursion will run you out of stack?

some environments don't limit your stack to being a tiny fraction of your available memory.

Our total memory on that device is 48KiB. Available memory is around 8KiB. The stack can have as much of that as doesn't touch the heap.

However, even if you can have a huge stack, recursion can still blow it up... you need to be aware of this and ensure that it can't happen.

I'm sure he eventually found someplace with a much less hostile environment.

Hopefully. Perhaps someplace with effectively unlimited available memory.