Video Games are a great example.
How many jobs has Halo created?
Well there are all the various paraphernalia that goes along with the series. From artists hired to design custom Xbox face plates, to the sales person selling the t-shirts, to statues, action figures, etc.
Then there are the advertisers who make the TV spots. The writers who run the various alternate reality games before releases. The musicians who do the score, the voice actors, directors, texture modelers, and so on and so forth.
Then there are the gaming bars that draw patrons in with Halo tournaments. The additional drinks sold, the chairs for spectators, extra food that is sold, and so on and so forth.
> A little business to local grocery stores, restaurants, etc. But I don't see software as a leveraged job-creation industry.
Ask Puget Sound and Silicon valley what the economic impact is!
The Halo example is good, but balance it out with things like Google's self driving cars. It's a relatively small team that will probably eliminate all of the taxi and truck driving jobs in the developed world. It will probably make vehicle sharing radically more efficient as well which will take a lot of cars off the road and eliminate more jobs there too.
All in all, I believe we're competing with foreign engineers no matter where they are so it makes sense to have them here. I'm just not seeing much evidence that we are creating jobs faster than we are eliminating them.
How many stores have employees dedicated just to selling electronics? How many video game t-shirts get sold? Entire comic strips like Penny Arcade, and all the associated goods that go with it.
Just an anthology book of comics, the printers, the person who does the page layout, the binding, the paper mill that makes the paper for the book, the factory that makes the glossy ink, everything is connected together.
As for knowing how malloc works: fewer and fewer universities are even touching C. It's all C++ or, better yet, Java (no need to understand memory management _at all_ in that case). The only guys left that are into reimplementing malloc are the minority of Computer Science or Computer Engineering graduates that are into embedded work or HA scenarios.
And just to quench my own personal curiosity, since you're on the hiring side and I'm not: why is it that every company absolutely must find someone who fits the bill exactly? What is with this aversion to spending any amount of time training people?
We don't have an aversion to training, but when someone has supposedly 8+ years of development experience and cannot answer simple questions, well, on to the next candidate.
I personally do always look for potential, I believe it is the most important aspect when hiring. But potential means having a drive to learn independently. I really do understand why a lot of employers are just saying "screw it" and not hiring anyone who isn't on Stack Overflow, or has a tech blog, or some sort of presence that said "I am passionate about this field."
(I'd be doomed by that metric, I don't have a github or Stack Overflow account! I'm on this site and /r/programming, however I do have a somewhat maintained tech blog.)
> As for knowing how malloc works: fewer and fewer universities are even touching C. It's all C++ or, better yet, Java (no need to understand memory management _at all_ in that case). The only guys left that are into reimplementing malloc are the minority of Computer Science or Computer Engineering graduates that are into embedded work or HA scenarios.
Ugh I know. My college still teaches native, and in fact the majority of the curriculum (last time I checked, its been a few years) was native, but they are unfortunately the exception to a general trend.
The thing is, managed languages are pretty damn nice for teaching software engineering principles in, but bad for hands on "this is how it works" explaining.
Covering how the JVM or CLR does stuff on a PowerPoint slide isn't the same thing as having students write an allocator. Which sort of sucks when they go on the job and have to write an allocator!
(Also, do you do something having to do specifically with memory allocation or is it just your pet entry on the list of things you think everybody should know about to not be dumb?)
What problems need custom allocators? I'm a fan of lower level details and all, but surely you can get away with one of the many existing allocator implementations when the problem to be solved isn't "sudo make me an allocator"?
Embedded. :P
> What problems need custom allocators? I'm a fan of lower level details and all, but surely you can get away with one of the many existing allocator implementations when the problem to be solved isn't "sudo make me an allocator"?
Memory is being counted in kilobytes. Processing time in cycles.
I'm loving it, but finding others who feel the same, and who are serious about software engineering, isn't easy!
So what you're saying is that you have a hard time finding people experienced and passionate about your extremely small niche? I'm sure I'd have a hard time finding qualified child neurologists willing to work for < 200k as well.
Heck, I might be interested in the embedded space. I certainly have experience with Assembly language (several different CPUs) and C (for twenty years now). It would certainly be a change from testing call processing.
Covering how $a or $b does stuff on a PowerPoint slide
isn't the same thing as having students write a $thing.
Which sort of sucks when they go on the job and have to
write a $thing!
That statement is true for many different projects in many different niches. Colleges can't possibly teach them all. If they try, then classes spend less time on CS fundamentals and employers are unhappy. If kids learn about $thing, that means less time for theory and employers are unhappy. (Not to mention that practically speaking, less time on theory means they won't be passing "top tech" interviews at all.)"We need people who know $thing" does not imply that "colleges should teach kids $thing" is true. Is $thing important because you know it and use it, or do you know it and use it because it's important?
Well yes, very true, I believe in fundamentals.
But the 3 types of common memory storage (stack, static, heap), and how each is commonly implemented, seems like it should be covered. :)
Likewise, common GC algorithms should also be gone over!
CS curriculums really are over stuffed, just from a theory point of view there is so much that is already not covered.
America also needs to remember that the high quality engineer they sent home has the world at his feet - if he has migrated out of his home country, the world is his oyster. He can migrate to any other country offering him a job and will not have to limit himself to the H1B.
Being on the hiring side of things, America needs all the talent it can get. Hiring good software engineers is seriously hard.
Maybe the problem is just connecting people with jobs, but given the low unemployment rate in the tech sector, I really doubt it.
Having to interview 5 candidates before finding one who just knows how malloc works isn't fun.
Indeed, one of our high quality engineers had to be sent back to his home country after his work visa expired, we are hoping to get him in on H-1B, and I believe he got approved, but now we have to sit and wait for government wheels to churn.
America should make it as easy as possible for highly motivated and talented individuals to come here. Jobs, heck, entire new industries will be created.
Isn't that the entire lesson from start-up culture? Get talented highly motivated people together, let them achieve their dreams (with someone who knows business and finances overseeing things!), and the economy will grow.