Colleges: "It's not our job to prepare you for the workforce."
Recent grads with $50k+ in debt and no useful job skills: "..."
Colleges: "It's not our job to prepare you for the workforce."
Recent grads with $50k+ in debt and no useful job skills: "..."
Just hired a guy for embedded. A lot of on the job training later and a few times he struggled with something recalling that maybe they talked about this in Architectures.
I’ve used the Observer Pattern high level on AWS and bare metal chip to chip communication. I hope “theory” is t lost completely as it’s what helps you identify the problem and not just implement the solution.
Meanwhile, the CS track leads to grad school and a research career.
And you just kind of made the point, why hire a junior developer who you have to train and will leave right when they become useful? For just a little more money you can hire someone with 2-3 years of experience or at least someone who came from a boot camp who at least knows the stack you are using.
so pay them more as they become useful. They leave because now that their skills are up, the junior salary is no longer commensurate with their skill level.
I bet if they were paid the same as if they jumped jobs, they would not leave.
The SE route would insure that graduating students have experience in modern tools and techniques.
I sat in several classes learning about the development lifecycle and it was a waste of time and money. A class where students sat on LeetCode would be much more productive and lead to better jobs.
Why waste money hiring you when they can hire a recent immigrant or a boot camp grad who did learn practical skills for the same amount of money - and no that’s not meant to be an insult.
When I just need to hire someone to whip out a few pages in React + [c#/WebAPI || Node+Express || Python + Django], I don’t care about your leetCode abilities.
I have never in my life said “Thank God we hired someone who can reverse a binary tree on the whiteboard”.
I don't think the average CS grad can actually code and I don't want to hire them either.
No I’m not going to spend months studying leetCode and reading “Cracking the Code” instead of just calling my carefully curated network of contacts that are itching to either hire me (former managers who have moved on to other companies) or refer me.
I’m no special snowflake. Anyone with 10+ years of experience, a decent network, can competently talk about architecture, and who knows how to answer soft skill questions can have multiple offers quickly.
To be blunt, there are more of you - companies looking to pay quite well for seasoned software engineers/architects with practical skills than there are of me - people who have those skills. Statistically, I can find a job a lot more quickly that pays well than you could find someone who has practical experience and who is looking for a job.
Besides I know from all of the recruiters contacting me from FB and a friends experience, if you learn enough “leetCode” they don’t care what company you come from. They are hiring kids straight from college.
But as soon as they said it requires relocation to the west coast I deleted it.
Now on the other hand, Amazon hires AWS SA’s, TAM’s, etc without requiring relocation as long as you can travel frequently.
Data structures and algorithms are absolutely essential to software engineering, which itself is just a buzzword for applying known and repeatable methodologies to writing software. Every single "software engineering" concept outside of maybe QA / testing is already a subset of a modern computer science curriculum.
"Modern tools" is specious. Does it make sense for a student to use git or JUnit or Vagrant or Node to get their work done?
Sure.
Should a professor spend any time covering these things in class?
Hell no.
Any student who is unable to figure these things out on their own is going to be unemployable when they graduate anyway. A prof should give them directions to the documentation, and that's it.
Yes most graduation students are going to be programming and not “inverting binary search trees”.
How many example websites are out there about how to use sql in programs have:
sql = “select * from User where firstname = ‘“ + firstname + “‘“;
And it was just posted today about people committing their AWS credentials. Mostly because every AWS example has client = S3Client(secretkey,accesskey,”us-east-1”)I was responding to the idea of just “googling for the answer”. In both of the situations above, the student would search for the answer and get back an example that was insecure, but how would they know that? In the first case, the sql statement is a prime target for a sql injection attack where they should have used parameters and in the second case, they should have not included their credentials in their code at all and configured their local box to store credentials in their user directory and used a role on AWS.
And you wonder why not only can’t Johnnie do FizzBuzz, but why in 2019 developers are writing insecure applications.
But why would I as a hiring manager (I’m a reformed dev lead), hire a junior developer who just knows theory and will spend the first six months to a year doing “negative work” when I could pay the boot camp grad or the recent immigrant who was focused on learning useful skills a few thousand more?
Before landing at my current job, I was passed on by lots of tech companies because I was good at theory and bad at interviewing/coding.
Again, let's keep in mind the premise: CS and SE are separate departments in a uni. Professors who gravitate more toward forwarding computational science are in CS; professors who gravitate more toward the science of building software systems are in SE. I posit that such a division would put people where they belong and make people going for SE better prepared.
Data structures and algorithms are absolutely critical tools in the box. Should an SE student know the space and time complexity of them and what that means? Sure. Should every student spend time creating their own linked list, binary tree, hash map, or binary search algorithm? No. There is a value on the theoretical side of the house in knowing how to do it. But, data structures and algorithms used in the field are well-known and understood. Students should know when to choose what.
While taking quizzes and exams may have some value in reinforcement learning, SE grades should be based on projects. The projects should grow in complexity over the course of their college careers. By their senior year, they should be able to cost out a project for time and materials. The projects should become a portfolio for them when they graduate.
All of this assumes that the professors have some clue about building software. The professors would need to actively build software with modern tools.
The professors from my grad program were brilliant people who understood many foundational concepts. They expanded my mind greatly, which is what I went into a grad CS program for. Very few could build software though.
Students have so many conflicting deadlines that they aren't encouraged to experiment with tools they'll need to build software. They go with the quickest means to an end. A solid program in SE would give them the time and guidance.
You're not "playing" with tools. You're learning to use them to build stuff of value to someone. And that's the point: SE majors should work on real world projects using modern tools.
My contention is that SE should be a separate academic department from CS in the same way the EE is separate from Math and Physics. CS professors would continue to teach CS and very definitely not SE.
How many different ways can we create a simple state machine? With modern javascript frameworks the ways are endless and needlessly complex.
The worst part is that NOBODY KNOW THIS because they're all just code monkeys.
If you are self taught and know the popular stacks, it's often easier to get a job than one based on theory. Your typical software as a service CRUD app maker doesn't care if you can "invert a binary tree". Most companies outside of large tech companies don't care at all about the list of "general topics" that you outlined - especially for entry level positions.
This isn't 20 years ago when most people were still offline. There's plenty of evidence out there that supports the idea that employers want strong data structure skills, portfolios, knowledge of git, etc. when looking for candidates. If a student isn't putting in the time on personal projects and they haven't sought out internships to prove their worth, then that's their fault.
There are FAR more html / css / javascript / php / wordpress stack jobs out there than there are candidates who can fill those roles (I know this from experience because I actively avoided them during my most recent job search), so all a dummy with a degree has to do is play around with those for a month or two using existing themes and they'll be employable.
Colleges are there to create educated people in specific fields of study. If a student wants to learn more about the outside world, there are more than enough on-campus resources available that they are able to take advantage of, and students are certainly informed from the start regarding how they should acquire that information. Any student handbook would have plenty of information about what's available.
Just because students are lazy and not motivated to learn beyond what gets them a letter grade doesn't mean that the information isn't available to them.
I would never hire someone who didn't have the intelligence or initiative to look up basic information and apply it, regardless of whether they lucked into a degree. It isn't the professor's job to waste valuable education time spoon feeding you. If you can't read the document the professor provides to you and figure it out, then you're investing in a lost cause. THAT is not the university's fault, it's yours.
I would expect such people to have trouble finding a programming job.
Now, I understand that a university would focus on timeless topics rather than current trends that will soon be outdated - but personally I see for loops as the former rather than the latter.
Of course, the report in the source might be an over-estimate: presumably inept candidates attend many more interviews before getting a job.
[1] https://blog.codinghorror.com/why-cant-programmers-program/
Java? It’s been a go to Enterprise language since 2002.
C#? It was a popular language at least as far back as 2005.
JavaScript? I saw jobs wanting JS experience and knowing “Ajax libraries” back in 2008.
C/C++? There are some jobs advertising for that still. My first job in both were back in the mid 90s.
And of course, if someone asked me the command to delete a remote branch in git, or what window compositor ubuntu uses, or how to perform a linear regression in excel, such precise operating details and user interfaces can change at the drop of a hat!
The web was already popular by 2000 and knowing HTML and JS would have been a no brainer.
Aside from that, in class I learned theory and was tested in that (actually we were taught how to program Java too). If I wanted to manifest that theory in an application, the expectation was that I do it in my own time.
I have no desire to see CS programs dragged down to the lowest common denominator because some companies want low-paid Javascript monkeys but require a Bachelors for the position.
I wouldn't be surprised if there are 'summa cum laude' in ReactJS or some such by next decade.
I can tell there's some momentum building for trades, but this is the unfortunate generation that got the wrong old advice instead of the new advice. By the time the new "trades" message is clear I'm sure it'll be useless advice as well.
Why would you be disadvantaged? Not going to college isn't going to give you down syndrome to limit your career advancement. However, it is true if you already have down syndrome, you are going to really struggle to get into a college and are very likely to struggle in the workplace. We need to be careful to not conflate the two.
It is true that people with higher levels of scholastic attainment are statistically more likely to be successful in the workplace. However, more interesting is the change over time. With a substantial increase in post secondary attainment over the last several decades, what hasn't changed is the level of success in the workplace. Incomes are stagnant. Job quality is in decline. If education gave advantages, the more and more people being formally educated to a higher degree should result in rising incomes and/or job quality should be increasing, not the opposite.
Which brings me back to my opening paragraph. Post secondary schooling appears to provide an advantage only because it has already filtered out anyone who is inherently disadvantaged. It does not create advantages and disadvantages, it only reflects the advantages and disadvantages which are already present.
University takes an incredible amount of time and money. If people put their resources into more independent endeavours, they'd certainly see a return on the investment greater than most college degrees.
If you've done something interesting (and really having a degree isn't all that interesting), then large companies will be happy to talk to you.
Any giant tech company will all happily interview you if you have a good portfolio without a degree.
All of this takes work of course, but not more work than getting a degree. It does take a lot of independent thought and strength to do what you think is right even when others are telling you it's wrong though.
I'm not saying the current situation doesn't suck - but these are people trying to make the most of it by doing what they think is the best move for their situation.
That's simply not true. Despite a sharp rise in post secondary attainment, workplace success has not meaningfully changed in many decades. Incomes are stagnant. Job quality is reportedly in decline. Where are you seeing the gain in workplace success with the rise of post secondary attainment?
I expect what you are really referring to is that those with higher levels of scholastic attainment are statistically more likely to have a higher income than those with lesser levels, but like I said before, that is because people with down syndrome (to stick with the example), who will statistically struggle in the workplace, never had a chance to go to college in the first place.
Not all people are equal. A lot of people simply do not have what it takes to be accepted into college, and if they manage to be accepted, they fail under the academic rigour. The same qualities that see them struggle in school are what also result in struggles in the workplace. If you could theoretically graduate from college with flying colours, you're already destined to be successful in the workplace, even if you never go to college.
[1] https://en.wikipedia.org/wiki/Educational_attainment_in_the_...
However, the post secondary attainment rate is quite a bit higher. Bachelor degrees are not the only type of post secondary attainment.
I will add that, statistically, even those with high school attainment will do better in the workplace than high school dropouts, but that is for the same reason: Those who drop out of high school have deeper issues that limit their success in the workplace. It is not because of the lack of a diploma. Each successive level of schooling filters out more and more people who are not born successful, which is why the more successful people, statistically, have higher levels of schooling.
What is not changing over time, as more and more people attain a post secondary education, is workplace success. Incomes are stagnant. Job quality is reportedly in decline. This invalidates the idea that post secondary schooling increases workplace success.
> Are you implying that the other 73% would be simply unable to attain the degree?
Bachelor's degree? Quite possibly. ~30% bachelor attainment seems to be a fairly consistent limit across the world, even where general post secondary attainment is much higher. In Canada, over 60% of the population have a post secondary education, but university attainment also tops out at approximately 25%. Which should be surprising given that Canada more than anywhere else has an extreme culture of "If you don't go to university, you will be forever stuck working at McDonalds".
I thought the other option was obvious: Colleges should prepare people for jobs rather than hiding behind excuses like "We're creating well-rounded citizens!"
Unfortunately, that would mean they'd need to replace all the TAs and adjunct professors with people who are actually qualified and have real world experience in their field, so it will probably never happen.
Colleges: "Pay us $100k so that the interviewer will call you back"
Colleges train you on the concepts and technical foundation you need as a baseline to not waste everyone else's time in the workforce. People should be applying to these internships and research jobs during their freshman year, the clock is running from the day they step on campus. I have no sympathy for people who opt to work an irrelevant part time job instead and wonder why their empty resume isn't getting any bites after they graduate.
However, think of all of the lack of productivity and financial progress on the macro scale, that's where I feel we need to act beyond the level of personal decisions. If we don't put the right incentives and regulations in place, what's to stop the collective from just slowing down the economy? I have sympathy for all of us who have to deal with the student loan ball and chain around our country's former students.
Ok, then why not just do this, without going 200k in debt?
People should just learn these useful job skills without doing the college part.