mwd_
"Just In", if it worked, would be great.
The talent drain that exists unfortunately forms a self-perpetuating cycle. It lowers the quality of remaining talent, so there are fewer successful companies, and as a result there are fewer potential tech investors of the kind they have in the Bay Area. This is a perennial problem in Canada that has affected multiple industries in a similar way.
Another local problem in Vancouver is the high cost of living. Even Toronto suffers from this somewhat. They're both pretty appealing cities but they don't necessarily have the best "price to performance" ratio.
I would guess that there is a very high correlation between CS degrees and programming or problem solving ability. I've worked in a pretty good lab full of grad students and their average skill level was dramatically higher than what you find at an average company (or at least, what I've seen working at half a dozen or so places), let alone what you see from average job applicants. Upon graduation most of these people easily found jobs at places like Google. They didn't get stumped on FizzBuzz because they had spent their time on abstract academic problems without real-world application.
There are definitely some people with CS degrees who cannot code, and you don't want to hire those people. The existence of these exceptions however doesn't mean that degrees aren't a strong positive signal when you are looking to hire somebody competent.
I think there's at least some reactionary bias against formal qualifications in the software industry and in startups. Some of the old professions like law or medicine do go too far the other way, but it's just as wrong to fetishize "real world experience".
When I see robots doing new stuff I don't worry about humans becoming obsolete (whatever that means), I look forward to the day when humans are freed from the grunt work they do now.
Some people worry about losing their jobs in the rock-paper-scissors industry, but I think this is a social problem that has nothing to do with robots.
If you want to learn more about Turing and the Entscheidungsproblem I recommend Charles Petzold's "The Annotated Turing". It has some great supplemental explanations to go along with Turing's paper plus interesting historical details. Petzold strikes a good balance between presenting the actual work and talking about Turing's personal life.
This is an area where C# is better. You can create classes or structs and structs go on the stack. Structs are a lot more appropriate for objects like rects.
Aside from university being fun, you should also be learning skills and meeting people. I'm working for a startup that started at my university and I heard about it through another student. If I decide to do a startup one day I'm guessing my experience and contacts will be an asset.
If we want to focus on immediate mode specifically, it arguably shouldn't be used even in regular old OpenGL. It's slower and results in overly verbose code. Most people seem to use immediate mode because that's what most of the tutorial examples use.
Maybe one way to tackle the switch from immediate mode -> vertex arrays (and maybe quads -> triangles) is just to make some macros that take old code blocks and generate new ones.
Extortion and kidnapping must be way less pleasant and much more difficult than dealing drugs. It's very hard to believe that they could scale up to be the same sort of revenue source.
As for the US and its supposed success, sure, it's better off than Honduras, but it still spends a fortune on law enforcement and has a massive prison population. I don't want to think of how many lives have been ruined over needless drug-related convictions. US demand and money are also what's fuelling a lot of the violence in Latin America.
I believe that, if this works out, it will be a huge technological improvement that will dramatically improve the quality of life of a lot of people. Imagine all the people who can't drive right now because they are disabled, for example. Many of those people who live in suburban or rural areas are just stuck inside a lot of the time. Having a car that can park itself somewhere away from where its passengers are dropped off is another big advantage. Or maybe it won't be much of a net benefit to average people because they'll have to fork over tons of money to have an automated vehicle.
I think that's the best part of this article. The criticism of Jeff Atwood's post is off the mark. Atwood wasn't being elitist, he was pointing out flaws in the theory that everybody ought to "learn to code" at a superficial level by putting in a few hours learning Javascript. For many people, more abstract problem solving skills would be more useful and the technical details will change or be forgotten.
The criticism of K&R C and so on also rubbed me the wrong way. That is a great, concise book that is still relevant in a lot of ways. If you're really good with high-level languages like Javascript or Ruby you might be able to do some good work but, all else being equal, you're more limited than somebody who also understands a wider array of programming concepts and more fundamental aspects of how computers work.
- You have to take time and put in effort to find good contracts. Not all work is billable.
- You will probably want to be able to show clients an app you've already created. If you can make that app a $40k earner then you are in great shape.
- You will most likely have to be willing to put up with less fun and less flexible work for clients.
I think the $40k from 3.5 months of work is amazing and would be a no-brainer for a huge number of people. The big downside is the level of risk involved and the difficulty in duplicating that level of success.
It should also be pointed out that you probably shouldn't bother with the startup if all you care about is money and the expected value is exactly the same as predictable contract work. If it's worthwhile then either the payout should be significantly higher or there should be some reasons other than money at play that are again going to influence calculations.
I leave at 5, assuming everything's in order, and nobody has ever mentioned anything to me. I also like to get in at 9, even if most other people arrive around 10 -- I love that quiet time in the mornings.
One thing I have noticed is that some people who work late are stuck in a horrible cycle of coming to work late, slacking off, then trying to make up for it by staying in until 7 or later.
The web startups with rockstar job ads may wish they had John Carmack or Bill Gates sending them resumes but I doubt it happens much. Bill Gates doesn't need to work at a little company somewhere -- he made his own company and is now a billionaire. A skilled, motivated recent CS grad is probably a great candidate for most companies.
When you consider the "cost" of your Ph.D., you should consider the opportunity cost of the salary you could be earning, which could easily add up to hundreds of thousands of dollars over a six year period. It's also wrong to compare a starting salary with Ph.D. to a starting salary with undergrad because by the time you get your Ph.D. and work the undergrad will have 5-7 years of experience and, on average, a higher salary.
Personally I've got to say that I also find the "rock star" rhetoric to be a huge turn-off. When I see it in a job ad I think of how horrible it would be to have to work with a club of self-described "A" players.
The gruelling interviews are another perverse system that I think has a negative effect. If you can easily get lots of interviews are you going to bother with the five stage interview with four hours of quiz questions and "homework"?
It might become a great campus, but do I think something higher density with a mix of uses would be more environmentally friendly.
All of that aside, I also think that there are factors more important than the relative number of old people in a given population. Technological development, public health, etc. are all probably more important, and some of those factors are at odds with high fertility.
I understand the appeal of hiring somebody who needs minimal training, but they may still not be the best pick. When it comes to a long-term position, it is better to hire the great developer who takes two weeks to get up to speed with some language or technology than it is to hire the mediocre developer who happens to have used Node.js or whatever.
One probably could develop his own good negotiating techniques over time, but that would only come after being destroyed repeatedly by highly-skilled negotiators. I think it's way better to shorten that process by learning from others.