1979
Recruiter: "On a scale of 1 to 10, how's your COBOL?"
edw519: "10."
Recruiter: "Great! I have tons of work for you."
1983
Recruiter: "On a scale of 1 to 10, how's your data base?"
edw519: "4. But I'm a 10 in COBOL."
Recruiter: "No one cares about COBOL. I need data base people."
1987
Recruiter: "On a scale of 1 to 10, how's your Microsoft?"
edw519: "4. But I'm a 10 in data base."
Recruiter: "No one cares about data base. I need Microsoft people."
1992
Recruiter: "On a scale of 1 to 10, how's your Oracle?"
edw519: "4. But I'm a 10 in Microsoft."
Recruiter: "No one cares about Microsoft. I need Oracle people."
1996
Recruiter: "On a scale of 1 to 10, how's your HTML & CSS?"
edw519: "4. But I'm a 10 in Oracle."
Recruiter: "No one cares about Oracle. I need web people."
2001
Recruiter: "On a scale of 1 to 10, how's your Javascript & PHP?"
edw519: "4. But I'm a 10 in HTML & CSS."
Recruiter: "No one cares about HTML & CSS. I need back-end people."
2009
Recruiter: "On a scale of 1 to 10, how's your Ruby & Python?"
edw519: "4. But I'm a 10 in Javascript & PHP."
Recruiter: "No one cares about Javascript & PHP. I need Ruby & Python people."
Number of days without work since 1979: 0.
Lighten up, guys. If you can build stuff, learn, and work well with others, you'll probably always be fine.
I like this, but I don't understand it. How you can end up with Number of days without work since 1979: 0
Isn't the reality more like the fact that you have to constantly obtain new skills, thus making you only "hireable" part of the time?
In 2001 you learn you don't have what folks are looking for so you go and "retrain", get a couple years solid experience[%] in that skill, and then have a decent run until 2009 when the whole thing rinses & repeats?
To me, senarios like these, make the case for actually having a CS degree -- that way you have a chance of obtaining a "zero" in number of days without work since 1979.
1979
Recruiter: "On a scale of 1 to 10, how's your COBOL?"
CS Graduate: "10."
Recruiter: "Great! I have tons of work for you."
1983
Recruiter: "On a scale of 1 to 10, how's your data base?"
CS Graduate: "4. But during my days at MIT, we did cover database theory quite intensely;
I'm sure I could adapt to your needs very quickly"
Recruiter: "Oh, MIT 'eh, I'm sure you could, when can you start?"
... and so on...
[%] I know a solid programmer can pick up new skills pretty quickly, but recruiters have a funny way of always insisting on a certain number of years of experience in a particular skill, don't they...
If you can go from 4 to 10 in something new every few years, that's amazing in itself. (although maybe we're using different 1-10 scale here; mine is probably log and I'm probably and 8.x at my strongest skill, and 4-6 for secondary skills after some solid effort.
Recruiter: "So you were writing Java code that talked to an Oracle Database, right?"
Me: "Right"
Her: "What version of Oracle was it?"
Me: "8i I think"
Her: "Sorry, we're looking for people with 9i experience." (9i had just come out.)
Me: "Really? You know SQL[1] is a standard and I'm writing Java code anyway, we were using a ORM as well. I didn't even end up writing that much direct SQL code."
Her: "Sorry, the client specifically said Oracle 9i -- I'm looking at it right now. They're not looking for Sequal experience."
This is when I decided to always avoid recruiters if I possibly could.
[1] I pronounced this "Ess Que Ell" but she responded "Sequel" which I think was the name of another database vendor at the time.
Firstly a tiny amount of people know C, C++, Java, Python & Ruby. If you found someone with that lot I'd probably hire them on the spot. That shows some real skill, multi-linguists are actually pretty rare, discounting the obligatory uni taught LISP and Javascript.
Secondly there's a constant need for people who make CRUD apps. Constant. Almost every business can benefit from a totally custom app with it's own special workflow. We tried RAD tools, we tried auto-generate tools, we tried plugin workflow that would be 'user' edited. Turns out if you don't involve a programmer it all goes very wrong.
After 20 years of promises from Delphi, VB6, Java, Rails, etc. the reality is it's getting harder to make good apps because everyone's expectations only go up. Bottom line is to make a CRUD app you still need a programmer. Almost every business is realising they need a programmer.
The market's only going to get bigger, much, much bigger.
This reads like it's from a person who's never been out of the ivory towers, hasn't actually been inside a real business.
I've worked for a very long time in software, network infrastructure and now Internet payments (complex stuff too) and mobile.
I've never heard a manager or developer say: If only we had someone that could write an algorithm to solve this travelling sales person problem we'd be saved! No. Inefficient algorithms are often good enough, typical programmers muddle through and yes pick up a textbook or reference wikipedia once in a while.
Modern software is a complex tangle of standards, protocols, and technologies. To build a typical example modern web application you're going to need to know linux administration, database administration, some server side language (ruby), a web framework in that language (ruby on rails), javascript (perhaps coffeescript), html, css (less), message queues (redis, beanstalk, etc), caches (varnish), loadbalancing proxies (haproxy), SSL termination, web application firewalls, network firewalls, providing JSON REST API's, Mobile optimization, real time communication (socket.io), third party API integration, Amazon S3 management and scaling. Etc.
All of this lifts the benchmark for what is an acceptable web app. The list goes on, and new bits keep getting added every year along with expectations.
It's bloody hard to find people that can deal with a majority of the above technologies. If you find someone that can do the full stack they're gold.
You want to be valuable? Prove that you're someone that can develop within modern software stacks and more importantly adapt as things change. Because change is coming, the music hasn't stopped and we're in for one hell of a ride.
Thanks for your feedback. As far as the meaning of the article, I wasn't trying to prove a point as much as elucidate something I was thinking about yesterday: the skills you pick up through entrepreneurship.
For the past 4-5 years of my life (starting in high school and continuing through college) I've been concentrating a lot of my time learning how to be a better entrepreneur. That's to the detriment of almost everything else in my life. And it's worth it to me because I love it. Even better still, it seems like a pretty safe bet because worse comes to worse and I completely fail over the next few years I'll still be able to get a job as a coder somewhere.
But the thing about being an entrepreneur is that it encourages you to get marginally good at a wide range of skills instead of REALLY good at one area. And so something I was thinking about is the potential consequences of this decision on my life. This is what I came up with.
I agree. The notion that we've already peaked in the number of profitable places to apply software is ridiculous. And that's what it will take for them to have "too many qualified candidates".
In the mid-80s people tried to tell me that software was too crowded, that there were too many people going into it and that I was unlikely to have the career my dad had. They were partly right: I've been even more in demand than he was.
Software development salaries are crazy high right now, which is a sign of a ton of suppressed demand. The web is far from done. Mobile is still rising. We are just getting started on the "internet of things". And that's only on the consumer side. Business is not going to be less dependent on software, and the ever-more-networked world is shortening cycles and increasing competitive pressure, meaning business software needs to change more often.
Yes, by all means, people should keep on learning. But the "gosh you'll be fucked in a few years if you don't go back for your CS degree right now" thing is BS.
Firstly a tiny amount of people know C, C++, Java, Python & Ruby
What does it mean to "know" a language? I've been writing almost exclusively in C for 15 years, but I wouldn't say that I "know" C; at least once a month I end up needing to consult the C99 standard for some obscure point of library specification.
On the other hand, there's a lot of people who know how to write Hello World in all those languages and consider that to constitute "knowing" them. Would you hire all of them?
Every job I have interviewed for in the past five years had "C, C++, Java, Python & Ruby" or a close equivalent as a basic requirement, not hire on the spot. (Before then, Python and Ruby weren't as widespread, and Java wasn't totally universal yet) But yeah, it is on the higher end (large web companies paying top quartile compensation) of the industry.
I thought this was great. Very clever. Every frontier seems like it will be a frontier forever, until suddenly it isn't. Perhaps software is going to settle down, start a family, and quit this cowboy nonsense. I don't think it'll happen by 2016, but I'd be hard pressed to say it won't happen ever.
On the other hand, I like to think that maybe what we call entrepreneurship - the hacker ethos, audodidacticism, uppityness, get-shit-done, rationality, self-improvement, a weird mix of skills cut in a wide swath of "whatever I needed to learn at the time" - is actually an overarching set of tools and attitudes for turning your ideas and ambitions into real things.
I can't imagine a world where it's not useful to do that anymore, even if the technology changes. It's true that the entrepreneur toolkit and the 9-5 megacorp toolkit aren't compatible, but every trend I can see points to people needing less and less to get more done. Economies of scale are technological: they shrink as the cost of production shrinks. Diseconomies of scale are sociological: as long as people are still the same, they'll stay the same. The advantages of being a large organisation might not always outweigh the disadvantages.
What if it's not us that get left behind, but them?
It's so easy to forget how much we had to learn to build websites. It's incredibly easy to forget how much time getting the event loop or even MVC to click took. It's easy to fail to remember how hard it was to learn the 5 different languages required to build the app we made in a couple of weeks over the summer. But those are skills, as challenging to learn as algorithms and big data.
As someone who has had to learn data warehousing very quickly, before being shown the joy of such things as MapReduce, before being slung into serious number crunching performance eeking territory, I can say with absolute certainty that, as "web scripters" or entrepreneurs, we have a huge advantage - we're the people who taught ourselves how to make things instead of regurgitating what a CS program teaches us.
I started a CS program at a decent university. While I think it's true that ivy league and extremely competitive programs might force one to think about this stuff the right way, State University absolutely do not. Most of the kids coming out of there will not be as qualified as someone who has taught themselves how to build a business.
Most importantly, If you're coming out of college, there is approximately a 0% chance the folks hiring you will have any expectation that you will be useful for several weeks while you get up to speed, which is plenty of time to become competent enough to be dangerous.
I'm by no means suggesting that a CS degree is the only way to get good at this stuff. In fact, I think that most of the best programmers I know didn't graduate. The difference is concentrating on being an entrepreneur vs concentrating on being a coder.
This part is reposted from another comment because I think it's important to your point:
As far as the meaning of the article, I wasn't trying to prove a point as much as elucidate something I was thinking about yesterday: the skills you pick up through entrepreneurship.
For the past 4-5 years of my life (starting in high school and continuing through college) I've been concentrating a lot of my time learning how to be a better entrepreneur. That's to the detriment of almost everything else in my life. And it's worth it to me because I love it. Even better still, it seems like a pretty safe bet because worse comes to worse and I completely fail over the next few years I'll still be able to get a job as a coder somewhere.
But the thing about being an entrepreneur is that it encourages you to get marginally good at a wide range of skills instead of REALLY good at one area. And so something I was thinking about is the potential consequences of this decision on my life. This is what I came up with.
Yes. It's amazing how I can quick pick up my new job's random DSL and special secret sauce algorithm and know house toolchain, and fix bugs in them immediately, whereas 10 years ago I was mindblown for weeks trying to understand how he Y Combinator and call/cc where even theoretically possible. Same with pointers before that, and the whole concept of a computer program drawing a picture on the screen before that.
It's really the same sort of difference of perspective as between industrial engineering and residential construction. If you've every seen someone build an ordinary home you know how much it looks like silly bullshit sometimes. Everything is wood nailed into other wood, and there's a lot more seat of the pants planning than you think should be necessary, and there's a lot more shimming and toe-nailing and adapting and whatnot than a lot of people would be comfortable with. And then compare that to a world where everything is planned out meticulously in autocad and everything is built out of reinforced concrete and bolted together pre-manufactured giant hunks of steel.
They are very different worlds, much as "hard" systems programming and "soft" high level "web dev" are. And it's tempting to look from one to the other and imagine that it's only a passing fad, but it's not.
As far as CS degrees, my experience is the same. I've interviewed a fair number of dev. candidates in my career (in addition to working alongside coworkers of various educational levels), and a CS degree on a resume has never had any correlation in my experience with a higher quality developer skillset. And this is down to a basic almost fizzbuzzian level too. From a few colleges a CS degree may mean something, from most it seems to be pretty worthless.
I've had this kind of argument presented to me every few years since the 1990s. It was probably happening for the forty years before that. Soon we'll need "real engineers" - and these fly by night part timers who don't have a "proper" background in computing are doomed! DOOOMED I SAY!!!!
Tosh.
I'm a guy who has got a subject specific degree - more than twenty years ago now (1st in Computing and Artificial Intelligence for those who care). I was selling software before that, and have spent most of the time since in industry.
What have I noticed since then? Amount I've actually used the "hard" CS stuff I learned there - close to zero. Correlation between "being good at math" and being a successful developer - basically zero. Correlation between having a degree and being a successful developer, after the first few years in industry, basically zero.
I don't see that magically being different in the next four years.
(Curiously the "being good a math" thing seems to be something US centric. I've not noticed the same focus on that with folk in the UK or elsewhere in Europe).
The space that developers get to play in has got larger and larger over the last 30 years. I don't see that changing. Quite the opposite in fact.
Sure some of that is going to be in areas that really need some hard-core math or engineering skills. Those jobs are out there now (embedded development is exploding again, big data has been around for years, the clever end of game development). I'm sure they'll be more in the future.
But there are also many, many jobs out there that don't. Many, many jobs that involve developers being good generalists, or having cross-over with UX and design, or having a decent understanding of economics, or understanding big-money. I'm sure they'll be more of those in the future too.
One thing we're really excellent at is wrapping up complicated stuff in abstractions that are stupidly easy to use. We're excellent at de-skilling our own job. And every generation whines that the previous one can't build their own computer / write microcode / write assembler / manage with less than 1k RAM / cope without a visual editor / manage their own memory / build their own OS / write their own application stack / whatever.
Yet people somehow carry on building new and neat things.
If you're a hard-core CS/algorithms person - go for it. They'll be lots of work for you. If you're not? Go find another niche. There are many, many out there. Be a good developer. Have fun. Make neat things.
And thus ends this particular Grumpy Old Man's Saturday Rant :-)
Reading Commications of the ACM (most recently, [1]), there's been an ongoing problem getting enough people into computer science programs (in large part because of the broad fears of "outsourcing"), and the projections are that EVEN MORE graduates will be needed through 2020. [2]
So yes, many times yes: This article is completely and totally wrong. And as adrianhoward says, it's the same sentiment that my parents chided me with back in the 90s, and that I hear all the time from people who imagine that the silver bullet is just around the corner that will make it so that we need fewer rather than more programmers. (FWIW: My degree is in "Cognitive Science", the "other CS", and I haven't had problems getting jobs when I've wanted one.)
And as an aside, if you look at the graph with yellow and brown bars about 2/3 of the way down [2], getting a job where math is the primary required skill looks like a slog (looks like about 2x as many math grads as math jobs), while in order to hire people AT ALL, companies are going to have to ignore whether they have a computer science degree, because there are nearly 3.5x as many jobs in CS-related fields as there are graduates in CS.
Based on these numbers it looks almost inevitable that we'll see echos of the "You've put together a web page? By yourself! You're hired!" dot com boom, just because it will be so hard to hire anyone at all.
So, while the story was cute, its premise is FUD that has a chance of scaring people away from CS at precisely the time that we need more people in CS. OK, end rant.
" Correlation between having a degree and being a successful developer, after the first few years in industry, basically zero."
In my experience it's even negative. Almost every person without degree that I worked with was much better at their job than the rest. They were more driven and that's probably how they got the job too. On the other hand the code written by phds... Often I regret looking. It's not that it's not correct (usually), it's just barely usable and disconnected from reality of how/where it needs to run.
> Correlation between "being good at math" and being a successful developer - basically zero.
I suspect you have a very limited (that is, "it's all arithmetic") notion of what math is. You cannot develop software without some kind of mathematical thinking.
So I've done a bit of hiring, and my message to you is as follows: If anyone actually does this to you in an interview, be glad they acted like that because you shouldn't work for them anyway.
For companies who have their shit together, this scenario is unlikely for a few reasons:
1. Experience, not classes or school, is paramount. We're hiring. We need you to do X. Have you done X or things close to X before? If so, you're better equipped to do X than anyone who has only taken a class on doing X.
2. School does not indicate coding skill. I've met many people who (supposedly) went to every class who couldn't code their way out of a paper bag.
3. Academic coding != production coding. The two are light years apart, and the latter is worth way more than the former.
4. Classes don't give a good signal on the ability to execute. Execution means doing what is necessary so you can ship. It means knowing there's a first 90% then a second 90% that looks like 10%. Finished, launched projects show execution. School do not.
5. Algorithms are fantastic and useful, but not in the ways they taught you in class. If you can use Google or use your copy of the CLRS to find what you're looking for, then engineer it into your solution, that's almost always more than enough.
6. If entrepreneurship is ever 'just applauded' in your interview ... run. Don't work there. Entrepreneurship indicates that you know this is a business, and that engineering doesn't exist in a vacuum. It means you can balance sales concerns against user concerns against design, UX, product, scale, and not just do things and throw them over a wall. It means you can be trusted to make decisions that add value and not just code.
This problem will be faced by many developers soon. The Internet is huge. Very large. The big companies are going to be dealing with huge data. You'll need to understand algorithms and math, and frankly, this stuff is a bit difficult to learn on your own. I thought I knew it all till I went into the algorithms class - that when I realized that not only did I not know it all, I was not as smart as I thought I was, and I would never have had the motivation to go through with this if I had not been forced to. And that goes for many developing.
Programming is a scarce profession now, but the simple stuff will soon be done by too many people. Software will become a real engineering task. In 20 years, the age of the code monkey will be gone.
Oh no, it will be cyclical. Programming is all about attaining higher abstractions, hiding more technology under a simple interface. Every now and then some new set of abstractions will be useful enough that we'll need a bunch of people to explore a field of opportunity. These explorers are called entrepreneurs.
Maybe in 2016, you're going to need deep credentials to be a useful web dev, but none whatsoever to start something useful with 3-D printing.
EDIT: that said, nothing makes you more employable than knowing things at a deep level. A friend of mine, a former Plan 9 kernel contributor, quit the tech industry after the first bubble to become a wildlands firefighter. Returned to the tech industry in 2008 and resumed being a highly-paid infrastructure geek like nothing had happened.
I'm of two minds on this one. Part of me agrees completely with what you say. Further tools will exist that automate a lot of what the code-monkey does. The level of work done by a lot of us will be push-button, or "plug these couple of things together".
On the other hand, in 1998 as a nerdy guy getting out of high school, with minimal html, javascript and programming experience, and running linux on a pentium pro I faced a big choice. I went to the local ISP to pick up a "real modem" (vs a winmodem) to connect my awesome unix box to the internet. The guy there asked why I wanted these modems vs going to circuit city for some amazing sale they were having for a faster winmodem. When I told him I was running linux I was offered a $40K/yr job on the spot - just for getting linux installed on a computer and understanding the basics (quote "we can teach you anything else you need to know, you got the spark"). I was 18, and that was a HUGE deal. Anyway this wasn't uncommon, at the time wired was running stories about "HTML factories" where people were making pages and pages by hand all the time. Minimal programming skills got you a job.
Some of this was just normal boom-time labor shortage. There were lots of stories about how after the crash these guys would never work again. Some aspect of this was true, but some of it was bunk. The 2000 version of this story would be "sure you can do html, and you can do CGI, and you understand http headers and can whip up a server, but we need people who understand SQL and how to work with record objects and how to do live updates to a system, stuff you need a real degree for. It's 2005 not 2000"
So basically I am suggesting that while Rails may be a non-skill (like HTML has become) and maybe good REST APIs will be auto generated, and some Backbone.js future version or successor will do most of our tricky js stuff, there will likely be good toolkits that allow people to plug together data-mining and data-management without needing super deep algorithmic understanding, we are already seeing the emergence of such tools.
So the other part of me disagrees, the code-monkey will be needed, just that they will be putting together different bits than they are today.
I think it will be the exact opposite. As computers take over more and more jobs from us, we will need less "office workers" who know how to shuffle documents around, and more workers with programming skills.
You want to be a mathematician? You need to know how to program. You want to be a "secretary", you need to be able to dig through your boss's e-mail using regexpes when he needs to find sth, you are a dentist - you will install your own scripts on the website because you know how to do it from high schools.
In 2016 (or 2012) it won't be "oh, we need more skilled programmers", it will be "sure, you know programming, everyone knows, but what really you know?". Programming will have the same place on CV like "MS Office", or "keyboard typing" has right now. No big deal if you know it, but much harder to find your job if you don't.
Of course there will still be place for real computer experts - algorithm designers et al, but the basics will be known to more and more people.
Math is overrated. Nobody really needs math; if you find yourself needing some math you're probably reinventing some kind of wheel. Same with algorithms.
How do you deal with huge data: you just do.
There are tools for that, and you apply those and perhaps make new tools yourself, but math and algorithms tend to never enter the equation.
"The problems we’re working on involve in-depth data analysis that require an extensive math and algorithms background."
I can see why a college sophomore would fear this response. But in my 18 years of programming, I've seen that the vast majority of software development isn't about the stuff they teach you in school. It's about design, collaboration, languages, libraries, and frameworks. It's about working around crazy cross-version incompatibilities, solving heisenbugs, and keeping everything maintainable. Math and algorithms? Feh. Not the real issue.
Let's assume the startup bubble bursts and programming jobs become scarce. There won't be any kindly interviewer at the large bureaucratic companies. There will just be a faceless HR person with a keyword-searching database saying, "No CS degree--no interview."
But personally, even if the startup bubble bursts, I don't see the demand for programmers going anywhere but up. And that entrepreneurial background will only be an asset at the smaller, more interesting companies.
Besides, starting your startup on the downside of the bubble is exactly where you want to be. You don't get rich starting up at the peak. If you think there is a bubble about to burst, save up everything you can earn right now, and then start your business after the pop.
There will always be more people, and more need for people, writing high level application code, glue code, and "spit-and-polish" code than people writing deep, difficult systems code. Always.
Here's the thing, in computing the advances in tooling and performance continue to pile up at an amazing rate. In 2016 it will be even easier to roll out a product built by a couple "web guys" with little in-depth technical knowledge that does an amazing amount of business and has a profound impact on the tech world. Indeed, in time it will be possible to run ventures which support billions of active users per day on incredibly cheap hardware and with a rather modest amount of dev-hours behind them.
Imagining that the future is only for hard-headed systems programming is the time honored ego-stroke of the hard-headed systems programmer who sees all of these "dilettante" "web guys" doing amazing work in the real world and making an impact and money doing so. But that's just a fantasy. The truth is that software is art. It's often a thousand times more valuable to write software which communicates with users and evokes in them strong feelings and strong connections than to write software which is technically pure and strong, but sterile, impersonal, and useless.
Knowing data structures separates the men from the boys. If you do not understand the difference between a tree (C++ std::set for example) or a hash table (std::unordered_set) you have placed yourself at a disadvantage. You can learn these things, they are not rocket science and you don't need a CS or math degree to do so, but it's important that you do learn about them and when to use what data structure especially if you have to scale to more than you ever thought possible. Most all programming languages have containers (lists, sets, dictionaries, maps, etc.) that are backed by various data structures. So you can experiment and learn.
No one cares if you can do an algorithmic analysis on different ways of sorting to choose the most appropriate way. These days it's dynamically built into the function. Just call sort.
Educationally there's not much of a difference between a philosophy, math or computer science degree. All of them are doing the same thing - logic. Philosopher approaches it classically, mathematicians do it formally, and comp sci do it ad hoc or practically. Each has it's virtues when you design or program.
That's a pretty bad example, since sorting is exactly the kind of problem that really depends on the application. Eg, depth sorting objects in a game would run quicker if you pick an algorithm based on the fact that consecutive frames typically don't change that much.
Except when you need to sort a big collection of strings and the standard library sort function never returns.
What we need is good vocational education. Polytechnic schools that teach you how to code, be part of a project or lead one, design an application and so on. Then the CS taught in universities can focus on the basics of computing, analysis of algorithms, AI, programming languages, etc without the now mandatory Software Engineering 101.
There are literally 100 cool things to learn and try: Like this weekend I thought about writing a small program for the DCPU-16, trying Meteor, making a small app using firebase, etc etc.
Possibly, learning more Math has a higher long-term ROI.
An another note: When everything melts down, it might be a good time to start another company, rather than look for employment though.
The critical skill for creating value is understanding the customer PLUS the 80/20 rule of software development. A creative technical guy can come with an elegant MVP if and only if he is attuned to real users.
This will be even more true in 2016 than in 2012.
A nontechnical MBA is just blocked from this insight. And a great algorithm guy who is tone deaf to users is likewise blocked. Even together, they are handicapped compared to the guy who sees both sides.
The most powerful problem solving of all is a group of people who can see both sides. Pud's thread about 400K users and what to do next was stunningly wonderful to me. You don't see that on stack overflow and you don't see that in the Harvard Business Review. You see it here on Hacker News.
I see in this thread that a number of people are talking past each other, each with a different subtle sub definition of the word "know".
I know of 7 basic subcategories of know - all but the last susceptible to phrasing:
(1) Knowledge that is immediately accessible at great depth and can be traversed quickly
(2) Knowledge that is not immediately accessible but resides in the unconscious. It surfaces in dreams, showers and intuition.
(3) Knowledge that is not immediately accesible but can be so quickly understood from a search (physical or digital) that it might as well have been remembered. Truly, the old fashioned idea that all your knowledge can only be kept inside your head is quaint.
(4) Knowledge that is not had but can be quickly acquired due to the similarity of the underlying structure to already possessed knowledge. With speed of acquisition proportional to similarity.
(5) Knowledge that is not had but can be acquired due to available learning strategies, knowledgebase and skill in acquiring knowledge.
(6) Knowledge that will be had in the distant future
(7) Knowledge that can not be gained due to difference in interests, lack of motivation or sufficient strength of reason, entrenched mode of thinking and set of beliefs which inhibit deftness with abstraction and for a very small few - reasons of biology.
Knowledge that cannot be accessed by Human Brains.
For many cases, the level 4 definition of knowing is sufficient and anything above should be good enough for almost all problems.
You push your super-repos to the datahub, and link to them on your resume; as we are doing it today but putting repositories in Github instead.
The point is: A university degree no longer mean the accredited person is capable. It has lost its value, that's why some recruiters are turning to GitHub and other solutions to find skilled people.
To assure the author: I don't hold a University degree, and I live in a third world country. I was offered, a week ago, a software dev. position for 30% of what a fresh Engineer (5 years of study) would get. The recruiter insisted that it was a starting salary but it was only a fraction of what I make online. He told me that the position is available anytime I changed my mind.
4 years earlier only, in this same place, you'll be laughed at if you don't hold a University degree whatever skills/capabilities you can show off to the recruiter. Don't dream getting that job, and even if you did, you'll be paid only a third or less than your colleagues.
I fit that storyline background perfectly. With one major exception, I got a job into finance risk management from campus, because my major was in Statistics. (Though after 8 years of experienced, I learned that statistics is not really used in such jobs - anything more than regression is not understood well (even regression in some cases), and 'intuitive' non-statistical solutions are always sure to be better received and sold despite offering far subpar solutions - but I digress.)
I recently got a call from Google for my rank in Code Jam. I explained my position and expressed my desire to work on programming. The HR, a very nice person, made it all but definite that because of my background and experience, I should look for a risk analysis role and not coding. He is still willing to set up a programming interview if I insist... but I don't know what to do :(
This is a nice little story, but I don't see what the problem is. The hiring manager states:
"The problems we’re working on involve in-depth data analysis that require an extensive math and algorithms background"
So if you know a bunch of programming languages and built some fairly successful websites, why would you even apply for that job? You're and entrepeneur and a "general programmer" at best or maybe even a "web programmer" only just good enough to hack a CRUD site together.
If the job posting actually indicated the need for in-depth data analysis with extensive maths and algorithms then this applicant wasted everyone's time by even applying.
I suspect that there is some assumption that the hiring manager doesn't know what she's talking about regarding the in-depth data analysis but I don't see where that assumption would come from.
Normally I get this kind if post but this one not so much. Some knowledge isn't something you just "pick up". I'm a software engineer now but my degree it's in mechanical engineering. If I were going for a M.E. job that required advanced knowledge if thermodynamics, heat transfer, calculus, statistics, etc, it would be ridiculous to say that I had started and run a few car repair shops and even ran a high end racing team where we built our own custom off-road truck and won the baja 1000. It's amazing experience but totally not applicable and doesn't mean I can just pick up the requires skills. Am I misreading this? The recruiter doesn't seem clueless.
[+] [-] edw519|14 years ago|reply
Lighten up, guys. If you can build stuff, learn, and work well with others, you'll probably always be fine.
[+] [-] petercooper|14 years ago|reply
Hang in there, 2009 edw519! JavaScript is increasingly back again in 2012 ;-)
[+] [-] OzzyB|14 years ago|reply
Isn't the reality more like the fact that you have to constantly obtain new skills, thus making you only "hireable" part of the time?
In 2001 you learn you don't have what folks are looking for so you go and "retrain", get a couple years solid experience[%] in that skill, and then have a decent run until 2009 when the whole thing rinses & repeats?
To me, senarios like these, make the case for actually having a CS degree -- that way you have a chance of obtaining a "zero" in number of days without work since 1979.
1979 Recruiter: "On a scale of 1 to 10, how's your COBOL?" CS Graduate: "10." Recruiter: "Great! I have tons of work for you."
1983 Recruiter: "On a scale of 1 to 10, how's your data base?" CS Graduate: "4. But during my days at MIT, we did cover database theory quite intensely; I'm sure I could adapt to your needs very quickly" Recruiter: "Oh, MIT 'eh, I'm sure you could, when can you start?"
... and so on...
[%] I know a solid programmer can pick up new skills pretty quickly, but recruiters have a funny way of always insisting on a certain number of years of experience in a particular skill, don't they...
P.S. I don't have a CS a degree.
[+] [-] rdl|14 years ago|reply
[+] [-] adrianhoward|14 years ago|reply
Need a better recruiter. People are still making really good money with COBOL :-)
[+] [-] nirvana|14 years ago|reply
Recruiter: "So you were writing Java code that talked to an Oracle Database, right?"
Me: "Right"
Her: "What version of Oracle was it?"
Me: "8i I think"
Her: "Sorry, we're looking for people with 9i experience." (9i had just come out.)
Me: "Really? You know SQL[1] is a standard and I'm writing Java code anyway, we were using a ORM as well. I didn't even end up writing that much direct SQL code."
Her: "Sorry, the client specifically said Oracle 9i -- I'm looking at it right now. They're not looking for Sequal experience."
This is when I decided to always avoid recruiters if I possibly could.
[1] I pronounced this "Ess Que Ell" but she responded "Sequel" which I think was the name of another database vendor at the time.
[+] [-] mattmanser|14 years ago|reply
Firstly a tiny amount of people know C, C++, Java, Python & Ruby. If you found someone with that lot I'd probably hire them on the spot. That shows some real skill, multi-linguists are actually pretty rare, discounting the obligatory uni taught LISP and Javascript.
Secondly there's a constant need for people who make CRUD apps. Constant. Almost every business can benefit from a totally custom app with it's own special workflow. We tried RAD tools, we tried auto-generate tools, we tried plugin workflow that would be 'user' edited. Turns out if you don't involve a programmer it all goes very wrong.
After 20 years of promises from Delphi, VB6, Java, Rails, etc. the reality is it's getting harder to make good apps because everyone's expectations only go up. Bottom line is to make a CRUD app you still need a programmer. Almost every business is realising they need a programmer.
The market's only going to get bigger, much, much bigger.
This reads like it's from a person who's never been out of the ivory towers, hasn't actually been inside a real business.
[+] [-] poutine|14 years ago|reply
I've never heard a manager or developer say: If only we had someone that could write an algorithm to solve this travelling sales person problem we'd be saved! No. Inefficient algorithms are often good enough, typical programmers muddle through and yes pick up a textbook or reference wikipedia once in a while.
Modern software is a complex tangle of standards, protocols, and technologies. To build a typical example modern web application you're going to need to know linux administration, database administration, some server side language (ruby), a web framework in that language (ruby on rails), javascript (perhaps coffeescript), html, css (less), message queues (redis, beanstalk, etc), caches (varnish), loadbalancing proxies (haproxy), SSL termination, web application firewalls, network firewalls, providing JSON REST API's, Mobile optimization, real time communication (socket.io), third party API integration, Amazon S3 management and scaling. Etc.
All of this lifts the benchmark for what is an acceptable web app. The list goes on, and new bits keep getting added every year along with expectations.
It's bloody hard to find people that can deal with a majority of the above technologies. If you find someone that can do the full stack they're gold.
You want to be valuable? Prove that you're someone that can develop within modern software stacks and more importantly adapt as things change. Because change is coming, the music hasn't stopped and we're in for one hell of a ride.
[+] [-] dshipper|14 years ago|reply
For the past 4-5 years of my life (starting in high school and continuing through college) I've been concentrating a lot of my time learning how to be a better entrepreneur. That's to the detriment of almost everything else in my life. And it's worth it to me because I love it. Even better still, it seems like a pretty safe bet because worse comes to worse and I completely fail over the next few years I'll still be able to get a job as a coder somewhere.
But the thing about being an entrepreneur is that it encourages you to get marginally good at a wide range of skills instead of REALLY good at one area. And so something I was thinking about is the potential consequences of this decision on my life. This is what I came up with.
[+] [-] wpietri|14 years ago|reply
In the mid-80s people tried to tell me that software was too crowded, that there were too many people going into it and that I was unlikely to have the career my dad had. They were partly right: I've been even more in demand than he was.
Software development salaries are crazy high right now, which is a sign of a ton of suppressed demand. The web is far from done. Mobile is still rising. We are just getting started on the "internet of things". And that's only on the consumer side. Business is not going to be less dependent on software, and the ever-more-networked world is shortening cycles and increasing competitive pressure, meaning business software needs to change more often.
Yes, by all means, people should keep on learning. But the "gosh you'll be fucked in a few years if you don't go back for your CS degree right now" thing is BS.
[+] [-] cperciva|14 years ago|reply
What does it mean to "know" a language? I've been writing almost exclusively in C for 15 years, but I wouldn't say that I "know" C; at least once a month I end up needing to consult the C99 standard for some obscure point of library specification.
On the other hand, there's a lot of people who know how to write Hello World in all those languages and consider that to constitute "knowing" them. Would you hire all of them?
[+] [-] Drbble|14 years ago|reply
[+] [-] artsrc|14 years ago|reply
http://itunes.apple.com/au/app/bookmyne/id350625461?mt=8
> Keeps saying "no enum const class".
[+] [-] aurelianito|14 years ago|reply
I fit your description in full. What is your offer? You can find my contact information in my hacker news profile.
[+] [-] LeonidasXIV|14 years ago|reply
Well, at least he's honest about it. As a student you might hope the stuff that you learned was worth anything I have serious doubts now.
[+] [-] edwinnathaniel|14 years ago|reply
[+] [-] sgentle|14 years ago|reply
On the other hand, I like to think that maybe what we call entrepreneurship - the hacker ethos, audodidacticism, uppityness, get-shit-done, rationality, self-improvement, a weird mix of skills cut in a wide swath of "whatever I needed to learn at the time" - is actually an overarching set of tools and attitudes for turning your ideas and ambitions into real things.
I can't imagine a world where it's not useful to do that anymore, even if the technology changes. It's true that the entrepreneur toolkit and the 9-5 megacorp toolkit aren't compatible, but every trend I can see points to people needing less and less to get more done. Economies of scale are technological: they shrink as the cost of production shrinks. Diseconomies of scale are sociological: as long as people are still the same, they'll stay the same. The advantages of being a large organisation might not always outweigh the disadvantages.
What if it's not us that get left behind, but them?
[+] [-] chrisrhoden|14 years ago|reply
It's so easy to forget how much we had to learn to build websites. It's incredibly easy to forget how much time getting the event loop or even MVC to click took. It's easy to fail to remember how hard it was to learn the 5 different languages required to build the app we made in a couple of weeks over the summer. But those are skills, as challenging to learn as algorithms and big data.
As someone who has had to learn data warehousing very quickly, before being shown the joy of such things as MapReduce, before being slung into serious number crunching performance eeking territory, I can say with absolute certainty that, as "web scripters" or entrepreneurs, we have a huge advantage - we're the people who taught ourselves how to make things instead of regurgitating what a CS program teaches us.
I started a CS program at a decent university. While I think it's true that ivy league and extremely competitive programs might force one to think about this stuff the right way, State University absolutely do not. Most of the kids coming out of there will not be as qualified as someone who has taught themselves how to build a business.
Most importantly, If you're coming out of college, there is approximately a 0% chance the folks hiring you will have any expectation that you will be useful for several weeks while you get up to speed, which is plenty of time to become competent enough to be dangerous.
[+] [-] dshipper|14 years ago|reply
This part is reposted from another comment because I think it's important to your point:
As far as the meaning of the article, I wasn't trying to prove a point as much as elucidate something I was thinking about yesterday: the skills you pick up through entrepreneurship.
For the past 4-5 years of my life (starting in high school and continuing through college) I've been concentrating a lot of my time learning how to be a better entrepreneur. That's to the detriment of almost everything else in my life. And it's worth it to me because I love it. Even better still, it seems like a pretty safe bet because worse comes to worse and I completely fail over the next few years I'll still be able to get a job as a coder somewhere.
But the thing about being an entrepreneur is that it encourages you to get marginally good at a wide range of skills instead of REALLY good at one area. And so something I was thinking about is the potential consequences of this decision on my life. This is what I came up with.
[+] [-] Drbble|14 years ago|reply
[+] [-] InclinedPlane|14 years ago|reply
They are very different worlds, much as "hard" systems programming and "soft" high level "web dev" are. And it's tempting to look from one to the other and imagine that it's only a passing fad, but it's not.
As far as CS degrees, my experience is the same. I've interviewed a fair number of dev. candidates in my career (in addition to working alongside coworkers of various educational levels), and a CS degree on a resume has never had any correlation in my experience with a higher quality developer skillset. And this is down to a basic almost fizzbuzzian level too. From a few colleges a CS degree may mean something, from most it seems to be pretty worthless.
[+] [-] adrianhoward|14 years ago|reply
Tosh.
I'm a guy who has got a subject specific degree - more than twenty years ago now (1st in Computing and Artificial Intelligence for those who care). I was selling software before that, and have spent most of the time since in industry.
What have I noticed since then? Amount I've actually used the "hard" CS stuff I learned there - close to zero. Correlation between "being good at math" and being a successful developer - basically zero. Correlation between having a degree and being a successful developer, after the first few years in industry, basically zero.
I don't see that magically being different in the next four years.
(Curiously the "being good a math" thing seems to be something US centric. I've not noticed the same focus on that with folk in the UK or elsewhere in Europe).
The space that developers get to play in has got larger and larger over the last 30 years. I don't see that changing. Quite the opposite in fact.
Sure some of that is going to be in areas that really need some hard-core math or engineering skills. Those jobs are out there now (embedded development is exploding again, big data has been around for years, the clever end of game development). I'm sure they'll be more in the future.
But there are also many, many jobs out there that don't. Many, many jobs that involve developers being good generalists, or having cross-over with UX and design, or having a decent understanding of economics, or understanding big-money. I'm sure they'll be more of those in the future too.
One thing we're really excellent at is wrapping up complicated stuff in abstractions that are stupidly easy to use. We're excellent at de-skilling our own job. And every generation whines that the previous one can't build their own computer / write microcode / write assembler / manage with less than 1k RAM / cope without a visual editor / manage their own memory / build their own OS / write their own application stack / whatever.
Yet people somehow carry on building new and neat things.
If you're a hard-core CS/algorithms person - go for it. They'll be lots of work for you. If you're not? Go find another niche. There are many, many out there. Be a good developer. Have fun. Make neat things.
And thus ends this particular Grumpy Old Man's Saturday Rant :-)
[+] [-] SomeCallMeTim|14 years ago|reply
Reading Commications of the ACM (most recently, [1]), there's been an ongoing problem getting enough people into computer science programs (in large part because of the broad fears of "outsourcing"), and the projections are that EVEN MORE graduates will be needed through 2020. [2]
So yes, many times yes: This article is completely and totally wrong. And as adrianhoward says, it's the same sentiment that my parents chided me with back in the 90s, and that I hear all the time from people who imagine that the silver bullet is just around the corner that will make it so that we need fewer rather than more programmers. (FWIW: My degree is in "Cognitive Science", the "other CS", and I haven't had problems getting jobs when I've wanted one.)
And as an aside, if you look at the graph with yellow and brown bars about 2/3 of the way down [2], getting a job where math is the primary required skill looks like a slog (looks like about 2x as many math grads as math jobs), while in order to hire people AT ALL, companies are going to have to ignore whether they have a computer science degree, because there are nearly 3.5x as many jobs in CS-related fields as there are graduates in CS.
Based on these numbers it looks almost inevitable that we'll see echos of the "You've put together a web page? By yourself! You're hired!" dot com boom, just because it will be so hard to hire anyone at all.
So, while the story was cute, its premise is FUD that has a chance of scaring people away from CS at precisely the time that we need more people in CS. OK, end rant.
[1] http://cacm.acm.org/blogs/blog-cacm/148620-hot-job-market-fo...
[2] http://cs.calvin.edu/p/ComputingCareersMarket
[edit: typo]
[+] [-] viraptor|14 years ago|reply
In my experience it's even negative. Almost every person without degree that I worked with was much better at their job than the rest. They were more driven and that's probably how they got the job too. On the other hand the code written by phds... Often I regret looking. It's not that it's not correct (usually), it's just barely usable and disconnected from reality of how/where it needs to run.
[+] [-] derleth|14 years ago|reply
I suspect you have a very limited (that is, "it's all arithmetic") notion of what math is. You cannot develop software without some kind of mathematical thinking.
[+] [-] StCroix|14 years ago|reply
[deleted]
[+] [-] lchengify|14 years ago|reply
For companies who have their shit together, this scenario is unlikely for a few reasons:
1. Experience, not classes or school, is paramount. We're hiring. We need you to do X. Have you done X or things close to X before? If so, you're better equipped to do X than anyone who has only taken a class on doing X.
2. School does not indicate coding skill. I've met many people who (supposedly) went to every class who couldn't code their way out of a paper bag.
3. Academic coding != production coding. The two are light years apart, and the latter is worth way more than the former.
4. Classes don't give a good signal on the ability to execute. Execution means doing what is necessary so you can ship. It means knowing there's a first 90% then a second 90% that looks like 10%. Finished, launched projects show execution. School do not.
5. Algorithms are fantastic and useful, but not in the ways they taught you in class. If you can use Google or use your copy of the CLRS to find what you're looking for, then engineer it into your solution, that's almost always more than enough.
6. If entrepreneurship is ever 'just applauded' in your interview ... run. Don't work there. Entrepreneurship indicates that you know this is a business, and that engineering doesn't exist in a vacuum. It means you can balance sales concerns against user concerns against design, UX, product, scale, and not just do things and throw them over a wall. It means you can be trusted to make decisions that add value and not just code.
[+] [-] maxklein|14 years ago|reply
Programming is a scarce profession now, but the simple stuff will soon be done by too many people. Software will become a real engineering task. In 20 years, the age of the code monkey will be gone.
[+] [-] neilk|14 years ago|reply
Maybe in 2016, you're going to need deep credentials to be a useful web dev, but none whatsoever to start something useful with 3-D printing.
EDIT: that said, nothing makes you more employable than knowing things at a deep level. A friend of mine, a former Plan 9 kernel contributor, quit the tech industry after the first bubble to become a wildlands firefighter. Returned to the tech industry in 2008 and resumed being a highly-paid infrastructure geek like nothing had happened.
[+] [-] sophacles|14 years ago|reply
On the other hand, in 1998 as a nerdy guy getting out of high school, with minimal html, javascript and programming experience, and running linux on a pentium pro I faced a big choice. I went to the local ISP to pick up a "real modem" (vs a winmodem) to connect my awesome unix box to the internet. The guy there asked why I wanted these modems vs going to circuit city for some amazing sale they were having for a faster winmodem. When I told him I was running linux I was offered a $40K/yr job on the spot - just for getting linux installed on a computer and understanding the basics (quote "we can teach you anything else you need to know, you got the spark"). I was 18, and that was a HUGE deal. Anyway this wasn't uncommon, at the time wired was running stories about "HTML factories" where people were making pages and pages by hand all the time. Minimal programming skills got you a job.
Some of this was just normal boom-time labor shortage. There were lots of stories about how after the crash these guys would never work again. Some aspect of this was true, but some of it was bunk. The 2000 version of this story would be "sure you can do html, and you can do CGI, and you understand http headers and can whip up a server, but we need people who understand SQL and how to work with record objects and how to do live updates to a system, stuff you need a real degree for. It's 2005 not 2000"
So basically I am suggesting that while Rails may be a non-skill (like HTML has become) and maybe good REST APIs will be auto generated, and some Backbone.js future version or successor will do most of our tricky js stuff, there will likely be good toolkits that allow people to plug together data-mining and data-management without needing super deep algorithmic understanding, we are already seeing the emergence of such tools.
So the other part of me disagrees, the code-monkey will be needed, just that they will be putting together different bits than they are today.
[+] [-] kolinko|14 years ago|reply
You want to be a mathematician? You need to know how to program. You want to be a "secretary", you need to be able to dig through your boss's e-mail using regexpes when he needs to find sth, you are a dentist - you will install your own scripts on the website because you know how to do it from high schools.
In 2016 (or 2012) it won't be "oh, we need more skilled programmers", it will be "sure, you know programming, everyone knows, but what really you know?". Programming will have the same place on CV like "MS Office", or "keyboard typing" has right now. No big deal if you know it, but much harder to find your job if you don't.
Of course there will still be place for real computer experts - algorithm designers et al, but the basics will be known to more and more people.
[+] [-] yxhuvud|14 years ago|reply
It is also an even huger place when it comes to demand of people that can do simple stuff.
[+] [-] guard-of-terra|14 years ago|reply
How do you deal with huge data: you just do. There are tools for that, and you apply those and perhaps make new tools yourself, but math and algorithms tend to never enter the equation.
[+] [-] jdlshore|14 years ago|reply
I can see why a college sophomore would fear this response. But in my 18 years of programming, I've seen that the vast majority of software development isn't about the stuff they teach you in school. It's about design, collaboration, languages, libraries, and frameworks. It's about working around crazy cross-version incompatibilities, solving heisenbugs, and keeping everything maintainable. Math and algorithms? Feh. Not the real issue.
Let's assume the startup bubble bursts and programming jobs become scarce. There won't be any kindly interviewer at the large bureaucratic companies. There will just be a faceless HR person with a keyword-searching database saying, "No CS degree--no interview."
But personally, even if the startup bubble bursts, I don't see the demand for programmers going anywhere but up. And that entrepreneurial background will only be an asset at the smaller, more interesting companies.
[+] [-] randomdata|14 years ago|reply
[+] [-] InclinedPlane|14 years ago|reply
There will always be more people, and more need for people, writing high level application code, glue code, and "spit-and-polish" code than people writing deep, difficult systems code. Always.
Here's the thing, in computing the advances in tooling and performance continue to pile up at an amazing rate. In 2016 it will be even easier to roll out a product built by a couple "web guys" with little in-depth technical knowledge that does an amazing amount of business and has a profound impact on the tech world. Indeed, in time it will be possible to run ventures which support billions of active users per day on incredibly cheap hardware and with a rather modest amount of dev-hours behind them.
Imagining that the future is only for hard-headed systems programming is the time honored ego-stroke of the hard-headed systems programmer who sees all of these "dilettante" "web guys" doing amazing work in the real world and making an impact and money doing so. But that's just a fantasy. The truth is that software is art. It's often a thousand times more valuable to write software which communicates with users and evokes in them strong feelings and strong connections than to write software which is technically pure and strong, but sterile, impersonal, and useless.
[+] [-] dhawalhs|14 years ago|reply
http://www.coursera.org/ http://www.udacity.com/ http://www.mitx.mit.edu/
[+] [-] 16s|14 years ago|reply
[+] [-] orbitingpluto|14 years ago|reply
No one cares if you can do an algorithmic analysis on different ways of sorting to choose the most appropriate way. These days it's dynamically built into the function. Just call sort.
Educationally there's not much of a difference between a philosophy, math or computer science degree. All of them are doing the same thing - logic. Philosopher approaches it classically, mathematicians do it formally, and comp sci do it ad hoc or practically. Each has it's virtues when you design or program.
[+] [-] gdubs|14 years ago|reply
[+] [-] rapala|14 years ago|reply
What we need is good vocational education. Polytechnic schools that teach you how to code, be part of a project or lead one, design an application and so on. Then the CS taught in universities can focus on the basics of computing, analysis of algorithms, AI, programming languages, etc without the now mandatory Software Engineering 101.
[+] [-] oliland|14 years ago|reply
Some sort functions might cover 99% of cases for web development, but not for other problems. The computer is not magical.
[+] [-] architgupta|14 years ago|reply
There are literally 100 cool things to learn and try: Like this weekend I thought about writing a small program for the DCPU-16, trying Meteor, making a small app using firebase, etc etc. Possibly, learning more Math has a higher long-term ROI.
An another note: When everything melts down, it might be a good time to start another company, rather than look for employment though.
[+] [-] paulsutter|14 years ago|reply
This will be even more true in 2016 than in 2012.
A nontechnical MBA is just blocked from this insight. And a great algorithm guy who is tone deaf to users is likewise blocked. Even together, they are handicapped compared to the guy who sees both sides.
The most powerful problem solving of all is a group of people who can see both sides. Pud's thread about 400K users and what to do next was stunningly wonderful to me. You don't see that on stack overflow and you don't see that in the Harvard Business Review. You see it here on Hacker News.
[+] [-] Dn_Ab|14 years ago|reply
I know of 7 basic subcategories of know - all but the last susceptible to phrasing:
(1) Knowledge that is immediately accessible at great depth and can be traversed quickly
(2) Knowledge that is not immediately accessible but resides in the unconscious. It surfaces in dreams, showers and intuition.
(3) Knowledge that is not immediately accesible but can be so quickly understood from a search (physical or digital) that it might as well have been remembered. Truly, the old fashioned idea that all your knowledge can only be kept inside your head is quaint.
(4) Knowledge that is not had but can be quickly acquired due to the similarity of the underlying structure to already possessed knowledge. With speed of acquisition proportional to similarity.
(5) Knowledge that is not had but can be acquired due to available learning strategies, knowledgebase and skill in acquiring knowledge.
(6) Knowledge that will be had in the distant future
(7) Knowledge that can not be gained due to difference in interests, lack of motivation or sufficient strength of reason, entrenched mode of thinking and set of beliefs which inhibit deftness with abstraction and for a very small few - reasons of biology.
Knowledge that cannot be accessed by Human Brains.
For many cases, the level 4 definition of knowing is sufficient and anything above should be good enough for almost all problems.
[+] [-] csomar|14 years ago|reply
The point is: A university degree no longer mean the accredited person is capable. It has lost its value, that's why some recruiters are turning to GitHub and other solutions to find skilled people.
To assure the author: I don't hold a University degree, and I live in a third world country. I was offered, a week ago, a software dev. position for 30% of what a fresh Engineer (5 years of study) would get. The recruiter insisted that it was a starting salary but it was only a fraction of what I make online. He told me that the position is available anytime I changed my mind.
4 years earlier only, in this same place, you'll be laughed at if you don't hold a University degree whatever skills/capabilities you can show off to the recruiter. Don't dream getting that job, and even if you did, you'll be paid only a third or less than your colleagues.
[+] [-] hirak99|14 years ago|reply
I recently got a call from Google for my rank in Code Jam. I explained my position and expressed my desire to work on programming. The HR, a very nice person, made it all but definite that because of my background and experience, I should look for a risk analysis role and not coding. He is still willing to set up a programming interview if I insist... but I don't know what to do :(
[+] [-] grannyg00se|14 years ago|reply
"The problems we’re working on involve in-depth data analysis that require an extensive math and algorithms background"
So if you know a bunch of programming languages and built some fairly successful websites, why would you even apply for that job? You're and entrepeneur and a "general programmer" at best or maybe even a "web programmer" only just good enough to hack a CRUD site together.
If the job posting actually indicated the need for in-depth data analysis with extensive maths and algorithms then this applicant wasted everyone's time by even applying.
I suspect that there is some assumption that the hiring manager doesn't know what she's talking about regarding the in-depth data analysis but I don't see where that assumption would come from.
[+] [-] oliland|14 years ago|reply
[+] [-] Mc_Big_G|14 years ago|reply