Whether you believe code schools are good or bad (I lean somewhat towards good), I wonder if we have not fully learned the lesson from the rash several years ago of fly-by-night for-profit colleges preying on vets and providing substandard education and inflated job promises, all on the GI Bill's dime. I worry that if the GI Bill was extended to code schools, we'd see the exact same thing happen again.
> I worry that if the GI Bill was extended to code schools, we'd see the exact same thing happen again.
This is dead on. I am a veteran currently going back to school for an engineering degree on the GI bill. When I got out of the service I didn't even consider going back to school, and just taught myself how to code and started working as a web developer. Once I made it to the point of working with other software engineers with formal educations in a large firm though, I realized the depths of my ignorance. I hit a wall that no amount of javascript bootcamps or rails tutorials could ever get me past. The fundamental knowledge of math and science that separates engineers from 'coders'.
I think the VA is absolutely doing the right thing here by not allowing code schools to take advantage of GI bill money. The industry does not need more coders, it needs more engineers. If these schools were legitimate they would be working in connection with established universities to provide accelerated ABET accredited degrees. You'll notice that the article posted mentioned nothing of the actual long term success rates of these programs, either.
Many people think that most developers don't actually need CS (and much less math) fundamentals in their every-day work life. That's why coding interviews like big tech companies tend to do are controversial ("Why would an iOS developer need to able to balance a binary tree?").
Can you give some examples where you hid road blocks because of your lack of education?
Balancing a binary tree is just an algorithm, like there are so many. As a programmer, you have to design algorithms on the fly, quite a few of which may actually be harder than just balancing a binary tree. Algorithms emerge automatically from designing data structures; when you end up manipulating these data structures. In turn, data structures emerge naturally from trying to model particular problems. There are too many branches in mathematics modeling too many types of problems than anybody could know them all.
In that sense, asking a developer about how to balance a binary tree, is a dumb interview question.
He should only know, if he happened to have worked on exactly that type of problem, only yesterday or so.
The question is rather: If the following is the description of the algorithm to balance binary trees, show that you understand it by dealing with the details in the following examples.
I like your post and just wanted to add on top of this that some algorithms including those sometimes asked in interview questions take/took months or years of effort to come up with. You chase down blind alleys and have insights along the way that come from being deeply immersed in a problem. Which is why interview candidates change these "tests of problem solving skill" into tests of knowledge by cramming.
Often times the right answer is (and should be) "show me you can find and use a use license-compatible library that typically has orders of magnitude more testing in the real world than something you feel the need to re-implement from scratch right now".
The dirty secret is 90% of what happens in the real world (and on HN) is a solved problem that needs to be applied or re-applied. Someone has done it before and they've done it better than you will.
There's a difference between "I know how to do this but it would be a buggy mess and require a week or two of effort, therefore I shall use a library," and "I don't know how to do this but this library seems roughly applicable so maybe it will work."
The former is a healthy and pragmatic use of your most valuable resource -- time. The latter is a cop-out. If no one actually understands what is going on at a deep level in the library, the result is likely to be an over-engineered mess. It might be that you're doing the most efficacious and appropriate thing for the task, but it might not. And with many such decisions made over the course of a project, some of them are bound to be wrong unless someone can reason about them and explain their purpose.
I find this is most important when refactoring or updating code. Some junior engineer down the line will encounter some code he doesn't understand, and track down the guy who wrote it, and at this point there is a world of difference between that guy saying, "Yeah, we needed a data structure that does X and Y so we used that library," and "Uhhh, not sure why we used that library, does anything break if you remove it?"
I benefit from my degrees but I would find it annoying if I would get asked questions like that. I design (among other things) crypto algorithms for banking purposes and implement them in a plethora of languages including ARM asm. But balancing a tree? I did that in an exam on paper 22 years or something ago. I would be able to do it given enough time but I probably would just walk out. 20 odd years ago when I was a cocky and already quite experienced coder, I would have done it easily but, although already having done many real life projects, I was a crap coder. And, due to the strangeness of the market and the scarcity back then, my current freelance salary in Europe, is not too different from what it was then. My feeling is still that those questions are pointless unless you want people straight out of uni. And then they already did their exams with those questions, so again pretty pointless...
I use my CS knowledge all the time when building webapps. Not directly of course, but as a general feel for things.
Stuff like "Oh hey, this problem fits a state machine approach" and "I can reduce the complexity of this sprawling if statement by making a truth table and minifying stuff"
And the good old "What you're asking for maps onto so and so problem and is fundamentally unsolvable. Can we tweak the requirements?"
Sure, you're not inverting binary trees every day, but it's useful to be able to see where a binary tree would help you solve the problem.
Agreed overall--I find that there's a real lack of appreciation of the sort of structural, high-level knowledge that I (at least) learned while getting a CS degree. And not a particularly good one, either, just something at a middling state school.
Just being able to look at a problem and go "hey, this is pretty simple graph traversal, I know the rules for this" has saved my bacon. Or the type theory that I picked up along the way that made type-heavy programming in Scala and Rust make sense. Or the set theory (math, but required for my CS degree, so I count it) that does bounce through my brain when I'm thinking about databases. Or even, like--"hmm, I think I can bang out a quick and dirty parser," and knowing what that parser should look like because I've studied how programming languages work and I get that for free.
I'm not the best programmer ever to walk the earth by a long shot, but I'm pretty good, and I'm pretty good because I can approach problems both bottom-up and top-down. Couldn't do both, flexibly, without a strong academic background.
> Can you give some examples where you hid road blocks because of your lack of education?
Not a veteran, but I've noticed something very odd about entry level jobs - they're not challenging. And that is no accident someone hiring you is actually doing that with a clear expectation that the complexity you're about to encounter will fit into their schedules.
Higher education is very different - the professors are intentionally trying to push you, hopefully bit-by-bit out of the existing skill range into unknowns. At least mine weren't trying to teach me, they were trying to get me to learn, mostly by making my own stupid mistakes without a huge penalty attached to it.
When I moved out of my CS course (and my open-source work building compilers) into my first job, the skill required to do my job satisfactorily was trivial.
No more hard problems, just hard timelines.
Took a couple of years and changing jobs before again landing up with a problem I didn't know how to solve ("Uh, make PHP5 fast ... Go!"), which helped me grow and learn.
That was a lucky break, but I succeeded because my professors had pushed me into the deep end against my wishes (i.e more sleep) before.
>Can you give some examples where you hid road blocks because of your lack of education?
At a certain point I was working on an iOS app attempting to do some really advanced animations with Core Animation/Core Graphics and my total lack of geometry and basic algebra knowledge started to show. One of my colleagues started talking about the movement of an animation in terms of radians and pi and I felt completely lost. He was speaking a totally different language to me. Up to that point I had felt somehow "proud" of being a self taught developer with no formal schooling. But when that happened I just felt completely embarrassed at my lack of fundamental knowledge and context. Now I'm struggling through undergrad mathematics classes and hoping to get to that point some day. The greatest overall takeaway I had from that experience is that math and science open a completely different world to you that most people don't even know exists. It changed my life.
A lot of the hardcore game developers (which use way more math and advanced CS concepts that most other devs) didn't go to college. This stuff is totally learnable on your own.
I recommend for example "Essential mathematics for games" by Bishop and Van Verth.
Thanks for the recommendation. As someone pursuing gamedev who also knows their math background is lacking, I'm always looking for tailored stuff like this.
To be honest though, that stuff confuses the hell out of me too and I have an MSc in CS from a highly regarded German engineering university. So while I agree with your general sentiment about depth of knowledge, basic computer graphics linear algebra stuff is just another skill that you learn in a similar way to a new language, for example.
Good to hear that you are learning some practical applied mathematics. It will be useful. You might find that the mathematics taught as part of a CS course is much less useful for 90% of programming jobs and not much use in the rest of your life either.
Cookie-cutter isn't a bad thing. If it solves a real problem or addresses a real need, it will be successful.
I mean Facebook started out as a cookie cutter app. Heck, it was a basic CRUD app. Look at where it is today.
Outside of such unicorns there are also many examples of reasonably successful products that can be categorized as cookie-cutter. Basecamp. Trello. Snapchat. These apps don't do anything groundbreaking or operate on the bleeding edge of technology. But they are well-known and profitable.
Cookie-cutter is also what 99% of programmers work on. Yes, it's nice that you were on the team at facebook that built the first react prototype, or that you were the first software engineer at oculus. The rest of us are building apps, adding an endpoint to an api, figuring out what the new database schema should look like, etc. And there are a hell of a lot more jobs openings for "blue-collar coders" than there are for geniuses.
I mean, it's great you're working on the latest computer vision algo to make the billboards in Minority Report a reality. I just spent the day wrestling with Google's client API registration and authentication nonsense so I could get per-page bounce rates.
I agree. All of us outside of military hear about pilots and Navy SEAL at work most of the time. But 99% of men/women in military work doing none of that stuff. But that 99% are still gainfully employed doing essential work.
Am not military and especially I'm not American, but IMHO wars on the field are not won with Navy SEALs but with logistics and I'd add artillery. Those sound boring compared to any special forces, but they're not, quite the contrary.
I was talking about the amount of media attention given to pilots/SEAL/etc. But yes wars are won with artillery. But luckily, we haven't had a war like that in awhile, especially for US.
I agree except for Snapchat, the real time computer vision they (or at least the startup they bought) put out I would have to say was on the cutting edge. Real time facial recognition was standard, but the facial transformations and 3d modelling in real time stood (and still stand) alone
I don't use Snapchat, so correct me if I'm wrong, but aren't those relatively new developments? From a quick Google search, it seems that the acquisition of Looksery and the launch of "Snapchat Lens" didn't occur until September 2015. By then, Snapchat already had at least 80 million daily active users. While their current real time computer vision stuff is definitely not something the average engineer could make, it does seem like they started out as a cookie cutter app.
I may need it, but I don't necessarily need to keep it in my head.
That's why I own copies of Knuth, and Sedgewick, and Cormen, Leiserson, Rivest, and Stein.
Now, the ability to understand and make intelligent use of those resources is something that requires education (formal or self). But oddly no one (that I've heard of) ever tests for that ability in job interviews.
Weirdly they seem to ask the CS fundamentals that aren't as relevant (algorithms) and skip those that are (e.g. the relational model, data structures (uses of), type theory, formal grammar).
I wouldn't say that you don't need it, but I would say that most companies ask about the wrong bits.
It always baffles me when people say that algorithms aren't relevant to software development. It's like saying thermodynamics isn't relevant to engine design.
Knowing specific algorithms is irrelevant to most modern software development because for any algorithm that's common enough for a "standard" developer to remember you'd be expected to use a pre-existing implementation.
If you want to sort a list, balance a tree, multiply a matrix or find the shortest/cheapest path in a graph, you should use a library that already does that and is reasonably tested and optimized, certainly more than whatever you'd write today. Most likely you shouldn't even get to choose which algorithm to use for that, and if you need to then the choice should be based not on the O() measures you might remember but on benchmarking, since the constant factor often dominates.
I have seen quite a few very large systems in which the most complicated algorithm actually implemented in the system is a set of branching if-then conditionals for some business logic. There's no custom data structure traversal - yes, it needs some data processed, but all the algorithms for that are in the DB implementation and "do X for all selected items" is literally the deepest level of iteration anywhere in the system. There's cryptography, but that's in a separate library made by someone else. There's network algorithms with state in them, but that's managed by a separate layer.
In such data processing systems all the development does is glue code that specifies what exactly should be done, but all the how part (e.g. the algorithms) is already implemented by someone else and is reused.
There are fields and apps (parts of them) that are algorithm-heavy; for example, even simple games tend to pack a lot of interesting algorithms (but even there much of that is now handled by standard libraries/frameworks). But most developers don't work on that, the majority of software dev work is cookie-cutter data processing apps where all the algorithms are out of your scope.
How often do you actually implement algos? Unless you're coding libraries for a brand new language, you're just going to pick out someone else's implementation of it. Why redo that work?
It's more like saying that the detail of the thermodynamics cycle of the specific rotary piston engine of that plane that had one (nah, won't search it) is not relevant to "engine design" stated generally without any modifier.
Those interview questions aren't about "algorithms", they are about details of specific ones chosen by their complexity and that are rarely used in practice.
Well, somebody better know the structure of the metals in use, or else you get turbine disks shattering jet engines and landing 1,000 yards away [1]. Just because it's not important to know every day doesn't mean you won't find challenging and important applications of undergraduate-level algorithm design.
Which it completely is, if you want to design a modern engine.
If you want to have an engine with 60s power, weight and fuel economy, then sure you don't need to know the science behind it. Just throw some parts together, and you'll get something that works.
Metal crystalline structures are taught in many metalworking trade schools, even if briefly. It has direct implications for things like heat treatment.
They are controversial because they frequently don't let you look anything up and most developers are used to being able to do that as part of their normal process.
The actual algorithm is irrelevant, so looking it up wouldn't be helpful. The point is to find out if the developer understands complexity well enough that they won't build bad things, that they'll know how to avoid nested loop if they can, that they'll know what the cost of one approach is compared to another.
If you look something up and the interviewer asks you what the O() of your approach is and you don't know, how can they feel assured you grasp these fundamentals?
I understand why these are contentious, but I find people tend to miss the forest for the trees when criticizing the practice.
> The actual algorithm is irrelevant, so looking it up wouldn't be helpful.
It isn't irrelevant if you are attempting to implement it correctly.
> If you look something up and the interviewer asks you what the O() of your approach is and you don't know, how can they feel assured you grasp these fundamentals?
That wasn't the original question in the comment I responded to and your attempt to re-phrase it as X when it was a question related to a specific algorithm is disingenuous.
> Why would an iOS developer need to able to balance a binary tree?
---
<removed a bunch of RL-related stuff that is pointless bitching about ppl we've fired>
> It isn't irrelevant if you are attempting to implement it correctly.
Exactly my point. Rarely is there one "correct" implementation. Understanding the choice you make and can support is the point of coding interviews. That's why they're so often done in pseudocode and/or on the whiteboard.
If you can look stuff up you're not demonstrating a knowledge of the fundamentals. If you don't understand complexity and optimization, you will make mistakes even if you can look stuff up later.
> Exactly my point. Rarely is there one "correct" implementation.
For any given problem asked in such interviews there is certainly one correct implementation and if you believe otherwise you are not providing sufficient information to answer such a question.
> Understanding the choice you make and can support is the point of coding interviews. That's why they're so often done in pseudocode and/or on the whiteboard.
> If you can look stuff up you're not demonstrating a knowledge of the fundamentals. If you don't understand complexity and optimization, you will make mistakes even if you can look stuff up later.
> That's why these companies do these.
Honestly? This is part of the rant I was trying to avoid.
1) I've met developers that claim SHA-1 is a secure choice in 2017 and make other facepalm worthy claims that 5 minutes of research would have told them was a bad idea.
2) We've fired quite a few people who believe as you do precisely because they are so convinced they understand the fundamentals they don't look things up and make costly mistakes.
3) I've met accountants who can't correctly handle a 4-4-5 calendar that is integral to their jobs without looking things up. Similarly, I've met ones like you that genuinely believe they've memorized the "fundamentals" and repeatedly failed waste thousands of dollars.
4) I honestly believe anyone who refuses to look things up to double check is fundamentally incompetent. We all make mistakes and the only way to appropriately minimize them is to double check (i.e look things up) before hand and have someone else review it afterward.
5) I genuinely do not want to work with anyone who does not do #4. Ever. The sheer number of times they've attempted to shift blame onto other people before they were fired is simply not worth the hassle.
2) and 4) and 5) are strawmen. It is -in fact- possible to understand the fundamentals and look things up.
As to your assertion that there is one "true algorithm," the merits of that stand for itself, but regardless being able to explain WHY is what an interviewer should look for.
"Go Google and implement some algorithm" does not provide a useful metric other than "can use a computer."
All of this also ignores a more pressing issue: that looking something up often means getting bad results. Can the applicant draw on knowledge of complexity to distill their Google search? Without that types of test your answer is "hopefully."
That's why Google, FB, etc start with whiteboard tests. Anyone can search and implement.
> Can the applicant draw on knowledge of complexity to distill their Google search? Without that types of test your answer is "hopefully."
It isn't difficult to structure a complex question that requires research and have the answer you claim is impossible to find.
> That's why Google, FB, etc start with whiteboard tests. Anyone can search and implement.
I'm sure that is what you believe but that doesn't make it true.
> 2) and 4) and 5) are strawmen. It is -in fact- possible to understand the fundamentals and look things up.
I've never met an engineer (or any professional implementing complex processes) who simultaneously grasped the fundamentals of all areas where they needed to possess competence from memory. (Yes, that includes myself in case you are wondering.)
>
It isn't difficult to structure a complex question that requires research and have the answer you claim is impossible to find.
An answer? Sure. THE answer? No. Too much subjective reasoning in that; something that performs well with clock time may be far worse in some other metric. It always depends. You need to be able to explain it, and that's what complexity is about. Fundamental comprehension of the tradeoffs of approaches.
> I'm sure that is what you believe but that doesn't make it true.
Great. Same with you. Unfortunately, those companies agree with me and do fairly well filtering candidates.
> I've never met an engineer (or any professional implementing complex processes) who simultaneously grasped the fundamentals of all areas where they needed to possess competence from memory.
Me neither. But then again that's not what we're talking about.
You do need to know there is such a thing as a b-tree, and when you might want one, and that balancing is a thing that you might want to do, and when to do it - even if you never actually implement one from scratch yourself, you absolutely do need the vocabulary to refer to it and a general understanding of the concept. That's what a lot of self-taught coders are missing - the knowledge of the theory that makes it easy to communicate with others.
I'm a small business owner in the UK - IT consultancy. When I'm running through a load of CVs for a technical position I instinctively move the Engineers and Technicians up and the others down the pile. I have other criteria obviously but as a graduate civil engineer myself I appreciate the discipline that an engineering quali brings and the sort of mindset as well (more concrete/steel/timber or bigger plant will fix most problems.)
Good on you for being a self-starter and having the perception that there is no short cut to becoming gainfully employable in civvy street (an old UK forces name for the other side) and being prepared to put in the work. I wish you all the best and suspect you will do fine.
Right. You cannot solve engineering problems with programming skills unless you also know engineering, just like you cannot write accounting software unless you know accounting, etc.
For another example, if you were coding the Shazam app, a good understanding of undergraduate math is needed to code of the fast fourier transform part. Even more so, one would need that knowledge to even realize that an FFT was the path to a solution.
> The fundamental knowledge of math and science that separates engineers from 'coders'.
Only math. Furthermore, someone with years of coding instinctively develops such mathematical understanding, while the very same understanding will be lost on someone who just graduated, but has never coded.
> Furthermore, someone with years of coding instinctively develops such mathematical understanding
FWIW, this isn't my experience. I have a CS/math background, spent the first few yrs of my career at Google, and then moved to a startup as the first employee. We had a lot of difficulty sourcing good candidates, and our first two hires were 1) a guy with no engineering experience and domain knowledge that had programmed during his Master's (and had some useful domain knowledge) and 2) an engineer with ten years of experience. I supported the first guy's hire and the second guy was hired against my recommendation.
The first guy hasn't yet had occasion to put his actual specialty to use, and yet after a month of some pretty hands-on guidance to teach him basic engineering habits, he is pretty much crushing it. He's dependable, he's creative, he's hardworking, he can implement stuff quickly but also think about the big picture: he's certainly exceeded even the fairly high expectations that I had of him despite having no eng experience and relatively limited programming experience. I had the exact same experience with a math PhD who worked under me at Google: he was hopelessly unproductive for the first month or two (Google is really, really, REALLY shitty at ensuring that new hires with potential get the guidance they need). I noticed this and took him under my wing to teach him the basics of engineering (which are truly not very difficult to learn) and in a month or two he was one of the best engineers on our team.
Our other hire is.....the opposite of all of that. He's basically been reduced to the only thing he's shown himself able to handle: he spends two days working on okay-to-have changes on the margin that no one really needs but that I could've taken care of in half an hour. 90% of the time he ends up breaking stuff that I have to spend 20 minutes fixing anyway.
TL;DR: my experience has been that there are certain skills and ways of thinking (and perhaps innate talent? I dunno) that are incredibly useful for engineering that some people go years and years and years in industry without ever acquiring or strengthening. On the flipside, someone with these capabilities can become a solid engineer in very little time. Good CS and math depts tend to instill or select for pretty much exactly this set of skills, in my experience. The main gap they have is a set of best practices for being a little more meticulous about their code, and this is shockingly easy to teach.
There's provability ("math"), and testability / falsifiability ("science"), and then there's just making it work amidst a deluge of trade-offs ("engineering"). If in the end, you simply can't make it work, the entire exercise becomes futile. In that sense, I do not really believe in favouring the formalisms of provability and testability at just any cost. If the person can actually solve the practical problem, then that should allow us to move on, no? That is why I like having that kind of people on my team.
I would invite you to consider the possibility that you are coming into a situation with a pro-academia bias that creates the reality you find yourself in. That's not at all unusual for someone who's worked at Google. As long as we're trading anecdotes, I have some that could easily show the opposite.
In my experience, intellectual curiosity, intellectual openness, raw intelligence, initiative, and attitude are much better indicators of success as a programmer than having a degree.
> I would invite you to consider the possibility that you are coming into a situation with a pro-academia bias that creates the reality you find yourself in. That's not at all unusual for someone who's worked at Google.
That's a very good point and I have actually been very careful to consider that. There's still a tiny chance that it's possible, but I'm pretty sure that's not the case. The fact that we ended up hiring this other guy against my wishes gives me a nice little counter to confirmation bias. He's pretty horrible even on the stuff where he has a huge (theoretical) advantage over me and the other engineer, due to having much more real-world experience with it. You just can't work around a lack of creativity, conscientiousness, and problem-solving skills.
For example, I set up most of our non-core-logic systems stuff by the seat of my pants (servers, DBs, caches, etc etc etc). I got roughly zero experience with this stuff at Google because the tooling was so excellent and taken care of by large, expert teams. It's been a great learning experience both in terms of familiarity with the tools and the trade-offs that come with small size/too much to do. Learning these skills is part of why I wanted to try a small company. Since this guy has proven himself utterly useless at anything even remotely involving engineering, he's been reduced to marginal changes to this kind of systems stuff, setting up things that are very low-priority so far. He still manages to mess up most of these! Every time he pushes a config change, or sets up a new service, or does _anything_, something is broken and I need to fix it. Most recently, he burned through a few thousand dollars in a couple weeks by making an entirely unnecessary switch away from our key-value store without noticing that his new set up used a dozen beefy reserved instances.
I don't have 100% confidence in my view here since my sample is so small, but the original point I was arguing against was that "years of coding will teach you mathematical understanding" and that this obviates a math degree. Everything I've seen from different vantage points has pointed to this not being true. It's entirely possible for someone with a decade of engineering experience to be almost utterly useless (cf Jeff Atwood's old post about "senior engineers" being unable to FizzBuzz).
My uneducated guess is that the engineer with 10 years of experience is just very complacent. He probably can get another job even after this one, because of the 'experience', and he knows this.
But the 1st engineer is starting out so he's extra motivated. Motivation brings out creativity, energy, and result.
That doesn't really comport with what I see day-to-day. This guy definitely doesn't enjoy not being able to do anything and breaking everything that he touches; you can see that it upsets him. I don't know why HN (and people in general) are so desperate to avoid the possibility that differences in ability can exist.
IME, a lot of them boil down to the principle of least surprise and not keeping silent dependencies on things in unexpected ways. These sound trivial and obvious, but they manifest in a thousand different ways, and the habit of constantly and subconsciously checking for these things in the back of your mind while designing/coding/reading code is something that comes with practice. As I said, I don't think it's very difficult for intelligent people to learn this give a little bit of time, which is why I hire for creativity and problem-solving skills instead of direct experience with certain tools. Particularly at our current size, dead weight is infinitely costlier than it would be to a behemoth like Google. Our latest hire has never worked in anything but C and he's already more productive on our Python codebase than hire #2, who has the advantage of years of Python experience and months more tenure at this company.
> why was engineer #2 not able to adopt them?
It's not so much that engineer #2 couldn't adopt these habits: it's that he's apparently not capable of doing any actual functional implementation, which is a prerequisite for a functional implementation that's well-engineered. The point I was making was that an intelligent, creative hire missing engineering experience can easily and quickly be taught. But an experienced engineer without creativity and intelligence is not very useful.
As far as why he can't do any functional work: Every time I mention this to someone[1], people seem pretty put off, but I honestly just think he's just not a very smart guy. For some reason, the very idea of differing levels of intelligence seems to offend people, but I'm racking my brains here and I can't think of another reason why he would be so abysmally unable to do anything. In conversation with him, your response never gets addressed and he just rephrases his last point ad nauseum with no hint of comprehension. My (semi-technical) founder has pretty much been working directly with him and he hasn't had any luck in finding things for him to do either. I guess the silver lining here is that I'm batting 1000 on hiring recommendations so I hope in the future I won't be overruled on tech hiring.
[1] Not at work: that would be entirely inappropriate. I mean to friends/confidantes when they ask me how the new job is going etc.
This has been my experience. Frankly, coding made it easier to understand the math, and absolutely none of it was complicated when I did finally get to it.
I didn't go to one, but I'm entirely self-taught. I'd seriously advocate for you to open your mind a bit.
I once had a boss that had a very similar attitude to what you're talking about here, and I left the position pretty quickly. And not once have I felt constrained by my lack of degree- if anything, the self-learning put me in a place where I more quickly learn new technologies because I'm more active in starting side projects using them.
I understand that one's school is a huge impact on their experience, but don't let it become an implicit endorsement.
> I can't imagine taking a coding boot camp student seriously.
I felt more or less the same. Then I worked with a few, all second-career starters from a variety of boot camps. Not all were great or even good at what they did - but some, one in particular, were excellent. The latter group seemed to share a degree of native intelligence, drive, and perseverance which didn't seem to occur all together in any of the former. It was almost as though the fact of having graduated a boot camp, by itself, predicted nothing useful at all...
I agree with you about the VA. But when you say the industry needs more engineers not coders I find this ironic because I have lots of engineering friends who became coders, and no coding friends who became engineers.
When I was general medical officer in the Navy, among other clinic duties, I did exit physicals for sailors, sometimes 20 a week. I would always try to talk to them about their plans for the future. Some seemed to be squared away. But I can't tell you how many times someone told me their plan was to take online classes from some sketchy school I'd never heard of. I'd google it with them, it would be some online university. Then I'd urge them about brick-and-mortar schools.
What most of society doesn't seem to understand is that returning veterans are quite anxious about getting out and this makes them very vulnerable. They are like the Trump voters willing to throw their lot in with whomever tells them "it will be okay", regardless of how unscrupulous and incompetent those promise-makers are.
> Students overwhelmingly report retaining and applying less from online courses versus face-to-face courses.
> However, this may be due to a difference in factors other than distance learning.
However, I find your insult to Trump voters gratuitous and unnecessary.
Here's an interesting thought: do you find the notion/anecdote regarding the returned servicemen insulting?
Because to me, he's applied an analogy describing a certain behaviour to both groups: but you find one "a political insult" and presumably one "an accurate description, or at least an acceptable anecdote".
It appears to me, as a non-american, the analogy is not only apt but accurate, but i understand how one may find it insulting.
But then, I also understand how a returning veteran might find this entire thread/idea insulting when applied to them.
But in both cases...that doesn't make the point deviate or approach the truth any more or less.
Personally, I believe there is a "rational voter paradox" at play in both of our societies political cultures (I'm australian for what its worth).
We find certain ideas insulting and degrading when applied to the notion of "voter", because we carry a political ideology of sanctity (the rational voter) around the voters decision. Because we are partisan, any attempt to analyse voter activity that draws away from the rational automatically puts you in the camp of "the other", which makes you an enemy, which makes everything an insult.
Hint that voters voted for trump because they were anxious and threw their lot in with someone giving out soothing epithets and its an insult.
That same idea however, returned service men being anxious about the future and being duped into throwing their lot into schools that make grand promises...and its an observation. Even a completely legitimate thread.
I've had the same thing happen to me a few times: express what I think is a fact, and been told that this is not the place for such hostile speak, insults, or comments.
I will leave HN today with this thought from my professional experience: If you're an analyst, and you actually have to predict these things, don't give anything but politeness to the people who find such observations to be insults, even though you know they're wrong, and use them if they're predictive :P
> However, I find your insult to Trump voters gratuitous and unnecessary.
I read it without placing the emphasis on the colon and I'm sure it's less barbed and strengthens the point:
They are like [the] Trump voters willing to throw their lot in with whomever tells them "it will be okay", regardless of how unscrupulous and incompetent those promise-makers are.
That there were some, not all, trump voters who were actually quite vulnerable and were manipulated. Just as there were some Clinton, Johnson and abstaining voters who were vulnerable and manipulated.
The key difference was that Trump dropped a shockingly honest hint about the desire to exploit the manipulable: "we love the poorly educated," arguably has a hint of suckering about it. I suspect this is something some Trump supporters are uneasy about by appealing to symmetry (i.e. if the other side had done this).
I found the analogy I misread quite useful as it linked two phenomena that I had previously believed to be disparate. It would be a shame for that to be lost for the sake of a missing word and a superfluous colon.
Trump was "shockingly honest" - and it was shocking! - about a lot of things about which Nice People Don't Speak, all throughout the election cycle. His bombshell about buying politicians in the first GOP debate is a sterling example - roughly from memory: "I know you guys are for sale because I
buy you all the time!"
Shocking indeed. But not on substance - no one familiar with modern US politics would seriously doubt that most politicians are absolutely for sale, although probably not thinking of it in those terms, or that the two meaningful parties do absolutely sucker rubes into voting for cynically promised outcomes which often aren't even plausible and are the rest of the time rarely pursued. Obama was the best I've seen in my lifetime, in terms of trying hard to live up to his campaign promises and also being competent to pursue them, and even he only passes if we grade on a real generous curve.
No, what's shocking is that anyone would say it, at least where the rubes might hear. And, again, that is shocking! One does not expect to hear the inchoate doubts shared among much of the electorate confirmed outright by a major-party candidate. And I suppose if one confidently expects to get screwed either way, it might make some sense to vote for the guy who's at least honest about it.
My apologies, I would like to adopt dpwm's restatement:
> They are like [the] Trump voters willing to throw their lot in with whomever tells them "it will be okay", regardless of how unscrupulous and incompetent those promise-makers are.
Ok, we've put that edit in. But please don't drop partisan tangents into HN comments. It's basically trolling, as you can see by the destructive effects on this thread (e.g. https://news.ycombinator.com/item?id=14277404) and, even with the edit, mars your otherwise fine comment.
This is why reasonable, rational people are losing and will continue to keep losing. Because we accept calling Trump unscrupulous and incompetent as a partisan opinion when it is actually clearly a statement of fact based on ample amounts of evidence.
OP here. In response to your question, I was seizing on a well-known phenomenon (voters responding to a hollow jobs promise) to make an illustrative comparison to my thesis, another situation that evokes similar behavior.
To me, it was like being in a thread about trees and saying "Trees are green, you know, like money." The "like money" part, was just a comparison.
> They are like [the] Trump voters willing to throw their lot in with whomever tells them "it will be okay", regardless of how unscrupulous and incompetent those promise-makers are.
I met many on the GI bill at my 'brick and mortar' school. They still did not do well. I honestly think people who have only known the military since highschool need a step down program to reintroduce them to civilian-style learning. The concept of sitting in a class for months then writing one all-or-nothing exam was terrifying. They needed constant reassurances that they were keep pace. They wanted weekly testing and assignments. They also had serious reading issues. They could read, but ask them to read more than a few pages of prose and they would zone out. Military manuals, like most highschool textbooks, are written in easily digestible packets, bullet points. University texts are not. Whereas most university students wouldn't have trouble tackling a few hundred pages over a weekend, I saw Iraq vets in apparent combat with books, veins pumping as if they were preparing for an assault.
> The concept of sitting in a class for months then writing one all-or-nothing exam was terrifying. They needed constant reassurances that they were keep pace. They wanted weekly testing and assignments. They also had serious reading issues. They could read, but ask them to read more than a few pages of prose and they would zone out.
This all sounds like pretty much every starting undergraduate student I've ever encountered.
That isn't universally true. The enlisted ranks have some pretty good training in many cases. Navy electronic techs take months of classes that are quite intensive.
Similar for other technical tracks like aircraft maintenance. The bar to entry for these kind of jobs are minimum ASVAB test scores that aren't easy to make.
You may have encountered a lot of ex infantry or similar. They get intensive training as well, just not as cerebral.
But the ASVAB tests are precisely my point. They are rapid-fire multiple choice questions asking the taker to bounce between subjects. Doing well in that sort of test means nothing to the standard undergrad assignment of "pick a topic and write a 10-page paper". I once spent an hour explaining IRAC style to a former special forces soldier. Everything he had ever done in the armed forces was to prove that he knew material. He had never been asked to write a paper or give a speech with the intent of convincing others, never imagined that structure was as important as facts.
PSA: While IRAC is generally associated with law school and lawyers, anyone can learn and use it. It really does works.
A special forces guy isn't the best example of someone with the kind of training I'm talking about.
I mentioned the asvabs not as a comparison to writing a paper, but to note there is a bar to get into the highly technical jobs. Similar to the bar created by things like minimum SAT scores for some schools.
Talk to an ex military person that had a highly technical job that required 6+ months of military tech school. They have the skills you are talking about.
Talking about ex military like they are one homogeneous group just doesn't make sense. Skills vary, just as with recent high school grads.
My only experience with anyone from a SOF background comes from a coworker who is a mechanical engineer but I would think that someone from a special forces background would actually be a fairly good example.
It might not require the kind of very technical training that say Navy nuke school does, but assuming sandworm was talking about proper "special forces", as in Army SF, most of those guys tend to be older, more mature soldiers and I believe all Army SF candidates have to take the DLAB and then attend language school for 6+ months. I would have assumed that sort of environment would actually translate fairly well to undergrad.
Just pointing out that their training is less read, attend lecture, write a paper. So, they could turn out to be good at that, but it's not something they typically do a lot. But, there are ex-military that have lots of experience with that pattern.
Also, FWIW, I don't buy the premise anyway. Some percentage of fresh HS grads do well at college, some don't. Same is true for military vets. I was trying to pinpoint a specific group that I knew would mostly do well to dispel the notion that vets are somehow not great candidates for it.
I'm from Wisconsin and am currently reading "Janesville: An American Story", which is about the city of Janesville, WI and what happened when the GM auto plant closed in 2008. A lot of subsidies went to retraining the unemployed factory workers because that's supposedly how you are supposed to treat factory closings. But it turns out that when you compare the salaries of the workers who went back to school (tech school or university) versus the ones who just found other employment, the ones who went to school actually ended up earning less on average. Yes, income isn't everything about education, it is supposed to make you a better person and so forth, but such unintuitive results really make you think.
Unless the laid off workers are randomly assigned to training or finding other work there's a pretty serious selection bias that the people with the best prospects are the least likely seek training.
The book itself contains an appendix which shows the analysis. It doesn't seem to have been published as a journal article, but it is based on publically available data and basically the same argument was put forth by the author of the book in an article on ProPublica.
I wonder whether it would be better to provide employers in tech money to train <target group> directly, on the condition that X% of them retain full-time employment of at least $XXX,000 for five years following "graduation".
The idea is to align incentives -- the employers get to try vets, and if they succeed, everyone gets more money.
Code schools are not very conducive to retention, especially not on a 5 year scale. Keep in mind most boot camp grads are going to front end jobs at mid-early stage startups.
Is that the san francisco view of what code camp people do or the US wide reality. When we're talking about a US wide problem we should be really looking at US wide solutions because, like it or not, a lot of people don't want to live in San Fran. If code camps really only supply SF Startups with front end coders I don't think that's worthy of a national program.
Exactly. The goal of the regulation isn't to prevent veterans from learning to code, it's to prevent them for being preyed upon. The OP has an unexamined premise: that the "code camps" described are an effective entry point for a programming career. As the readers on Hacker News are well aware, that's a pretty shaky premise.
We need a revolution in EdTech as well. Something that leverages online MOOCS and flipped classrooms at the local level staffed by developers in the real world working on a volunteer basis. The tools are there, the will is there, why is this not happening?
What is the problem that MOOCS are solving here that other solutions aren't? There's really no way to have a discussion about why it's not happening or why it may or may not work without actual discussion of the benefits of a MOOC vs alternatives.
Also many many veterans, during their service, avail themselves of old school MOOCs before they exited. They're called correspondance courses or sattelite courses and most of them are from traditional colleges and even allow you to finish up your degree at said college. What does a MOOC offer over this? If enough vets aren't using these why is a MOOC going to be the magic bullet?
> Some code schools do accept GI Bill benefits — longer-standing ones that have made it through State Approving Agencies, which work on behalf of the Department of Veterans Affairs to decide which programs can use GI Bill money.
So it can be done, and responsibly. I guess the only thing that's left is to increase the number of seats at VA approved schools.
I despise the GI Bill scavengers disguised as schools, but that's no reason to not find a way to integrate boot camps into the offerings. There are still plenty of traditional schools that take GI bill money and provide basically no benefit. At least there will be built in skepticism when assessing code schools which may help weed out the shadier folks (even if it makes it a pain in the ass to get approved by the VA/state approvers).
There's no reason we can't have an accreditation program to ensure that only reputable schools can get access to GI bills. This whole problem of predatory colleges doesn't seem like an insurmountable one. It seems more an issue with legislative inertia and poor implementation rather than an intrinsic failing of GI education plans.
I am not sure that would even help. The current culture war on the elite campuses and the dominating narrative would probably not be welcoming to a lot of straight masculine males with somewhat conservative leanings and on government dime that participated in the US wars. And not be able to give them the environment and support to reintegrate them into society.
Very shitty situation. The reason post WWII GI bill worked that well was that there were veterans everywhere from WWI and the draft that they could relate to and get help.
Yes, god forbid we encourage mixing of world views because it might challenge both side's opinions of the other and gasp might even lead to some improvements. Lets continue to segregate as much as possible.
Also according to wikipedia there has been a form of the GI bill running basically continuously since WWII, so this isn't a new change.
What I think is hard about college for a lot of people is that much of the learning, even more than highschool, has no immediate relevance. Heck I remember hating a lot of intro CS classes because I was solving problems I didn't care about. Or think about asking a kid what they'd want to program a computer for. For most it's such an abstract problem to problems they haven't even encountered yet that they can't even think of anything. Same goes for a lot of people which can be a bug turn off for a more traditional college education. That said I still think you need a foundation in the theoretical as well as the practical.
I think established and accredited universities should set up two year coding programs that can teach the trade as opposed to pop up overpriced bootcamps that usually operate without much accountability.
Then the GI Bill can pick up the tab for such programs.
There's no need to water down university education. We already have community colleges which offer Associate's Degrees and university extensions which offer certificate programs. For example in Silicon Valley, De Anza college offers an AS degree in Programming and UCSC Extension offers a certificate program in Software Engineering. Those can be good options for someone who just wants to learn practical code construction skills without getting deep into CS theory.
But those programs wouldn't meet the accreditation requirements, which usually require minimum numbers of teaching hours.
Plus, established universities don't teach the trade, they teach you how to think about learning the trade. You actually learn the trade in co-ops and internships and by doing it.
> Plus, established universities don't teach the trade, they teach you how to think about learning the trade.
A university wouldn't run a program like a code school. They're a better fit for a tech school or community college (which can be public, regionally accredited, and part of a larger state higher education system).
You are being downvoted I suspect because people are assuming you mean it's not possible to learn to code in 2 years, when what I suspect you mean is "why waste resources on poorly planned school curriculum regardless of timing when other options (such as the apprentice model) are available"
So, after you finished your degree and started trying to learn to make a CRUD app, how long did it take you to be able to make such an app and reason intelligently about its behavior?
How long would it have taken you if you had not done that degree first?
I would love for more people to code and I would love for veterans for find work but ....
My impression is those who excel at coding (like everything else) love doing it. So, I would expect the majority to fail. It's doesn't seem like a skill like riding a bike where you learn it once and then it's just this thing you can pull out whenever (or maybe it just takes longer to get to that point).
My point is, whenever I see programs like this it appears the majority of the students are just going through the lessons. The moment the class is over they're back to whatever their real love is. They're basically learning by rote and it's a superficial learning not because they aren't smart but rather because they're disinterested. They're just doing it hoping to get a job, not to scratch an itch / pursue a hobby.
As such it feels like they're unlikely to ever become the kinds of people that actually get the jobs they're taking the classes to get.
Is there a way to solve that? Is there a technique to evoke a passion for coding in the majority of students or is it more up to the student to bring / discover their own passion? I know a bad teacher can ruin passion and interest. The majority of math and computer teachers seem to not really know what they're teaching and just teaching from a book. I don't know that a great teacher can spark passion an interest though. Maybe they can it a larger percentage of their students but that percentage will being small?
>It's doesn't seem like a skill like riding a bike where you learn it once and then it's just this thing you can pull out whenever (or maybe it just takes longer to get to that point).
Sure it is, you just need to see it as a skill that you need to work on and be disciplined about it. There are still a lot of places that can use daily automation that also don't have time/money to go looking for a product.
Plenty of people are good at things and do not necessarily love doing that thing. I'm sorry, but having a bleeding-heart passion about programming is not a prerequisite for doing well and people that make it a prerequisite can turn into toxic, snobby elitists when working with others.
The people that go back to their real love just need more time to reach a given plateau compared to someone who does this stuff for 10-16 hours a day and gets a shot of dopamine every time they compile something. Nothing says you can't reach the top without loving it, it's just going to take a lot longer.
A lot of businesses just do not care about the extra quality you can put into a code base and when you try to put your passions into something and realize how little people care for anything beyond mediocrity, it can end up killing your passion.
I've often felt this way in the past, but with experience I have to disagree.
There is a large range of skill needed for various jobs. I've met plenty of people writing software for a living that don't care about software. It's just a job to them. You don't need a PhD to hide in a corner writing test automation for mega corp.
I have to agree here.
We must be able to find room for all the people coding to have a job.
I love writing code, live and breathe software, but I can't demand that everyone must have this passion.
However, a team consisting only of job coders tend to stagnate.
We must find the room for both.
On the flip side, even if fixing motorcycles is what you love to do as a hobby, doing it for forty years professionally might be soul-killing and might not pay well.
I'd suggest most people who excel at bike riding approach it with the same enthusiasm and drive as you attribute to the programmers who excel (to your credit, you mention "everything else" is the same, which would include cycling until you pick it out as an anecdote at the end of the paragraph) and that's before achieving a level where they can actually make money on their cycling ability.
To run with your analogy though: if programming were like riding a bike, that could do great things for society. There would be a significant portion of the working population that understood the idea of what their computers were made to do and improve their ability ability to leverage these machines to assist them in achieving their tasks even more efficiently. That would be the equivalent to the majority of people who can ride a bike and could use that skill to improve their mobility while saving money for themselves and their local society, improving health,..., reaping all of those benefits that can be achieved from knowing how to ride a bike even if most people who can ride a bike will never be able to live off of their bike riding ability.
>There would be a significant portion of the working population that understood the idea of what their computers were made to do
You don't need programming for that. A good mental model of modern computing is important but programming is overkill.
>improve their ability ability to leverage these machines to assist them in achieving their tasks even more efficiently.
Ok but it doesn't work like that. I don't know what kind of utopia you are imagining but it is a pipe dream. I can one up you, society would be far better off if they were more financially literate. Or even better if we got the literacy rate up - you would be surprised by the vast number of people who are functionally illiterate (and I'm not speaking about those for whom English is a second language)
I agree! Good points. Financial literacy is next on my list, personally (any recommendations?).
As charged, it is a utopia I was picturing, but I often like to mentally dabble in that terrain as I find it can expose potential paths forward. Sure, the envisioned Utopia won't be the actual destination, but its artificial brightness makes bumps that I normally easily miss suddenly salient.
Yes. What I meant by that term are things like the user understanding enough about modern file systems that when they download a file they understand where it's stored as well as typical file CRUD operation. They know enough of the web to reasonably protect themselves from malware and are able to distinguish between a valid site and a generic phishing attempt. They understand the point of a browser or mail client and not think that IE and Internet or Outlook and Email are interchangeable. They are able to diagnose and debug the most basic issues (print job failing to print because the wrong print target was selected, able to understand network connectivity issues vs. application not working).
You'd be surprised how many people fail at those very basic computing tasks, and those are the kinds of things people need to know to get their jobs done. Knowing how to program in Python isn't going to do anything for the VP of Business Development.
It's not just the passion but the ability to excel at it. I believe it's correlated with IQ. Most people want to believe it's teachable, because stating otherwise sounds cruel and elitist, but I see no reason to believe that it's not innate. If you have it, then learning and practicing can help bring it your potential. If you don't have it, you'll just be frustrated all the time trying to wrestle with the computer.
As a teacher, I think of innate ability and teachability as separate issues. Innate ability almost certainly (imo) sets an ultimate limit, but there's plenty of room for accomplishment before it's reached. I actually do believe that every programmer is ultimately constrained by individual neurological factors. But I've also taught 'normal' people to code. They may not have what it takes to independently arrive at using BSP tree traversal to solve visibility in a twitch FPS at age 23, but I doubt most working programmers do, either.
Programmers don't abandon all hope because they aren't John Carmack. For the same reason, people below some IQ threshold shouldn't abandon all hope of contributing to software. There is a lot of different kinds of work needed, and a minimum intelligence level to contribute anything at all hasn't been established, to my knowledge.
Well there's built-in cognitive ability and then there are practical skills and knowledge in particular areas. The built-up wiring often factors in more I think. The main feature of intelligence is actually compression. So its like judging the performance of a compression library in the case where you need to add one file to an archive -- you need to factor in the size and contents of the existing archive.
The folks who do not have an "absolute" love of programming often bring valuable/important things to the IT table that those who DO have that love, do not. They have useful perspectives that end up working in IT in ways that even they probably didn't expect. That's what I've found, at least.
They are also less prone to "programming fashions" and behavior such as begging the boss to let them use the latest language on some new project (with associated risk).
I say this as a person who DOES have an irrepressible desire to learn more computer languages. I've come to respect those in IT who just get the job done and are less prone to "shiny-thing syndrome"
I think you're perceiving a dichotomy between "excel" and "fail", and then compounding this with conjecture that this is a) correlated to enthusiasm and b) something that needs fixing.
From my experience - I've seen many different programmers in many different situations over the last three decades - I think I can recall enough counterexamples to suggest all three points are misperceptions.
> "They're just doing it hoping to get a job...."
Why can't it just be a day job?
By the same token, I suck at programming even though I love it (and have enough experience to fake it).
Talent Is Overrated spends a considerable amount of time talking about this topic. Over the past few years, the more I began to reject the notion of passion being a prerequisite to growth, the more adapt I was at switching perspectives to continue to drive growth. There are a remarkable amount of times at work where I have zero passion for my current task, but I can surprise myself with a beautifully written solution.
If we remove the phrase passion from being a prerequisite to being a highly competent developer, we can begin to view this problem in a proper context. The issue is we're failing to adequately define how to go from being an apprentice through being a master developer. This gets even murkier when you consider job roles in organizations that do not care about this distinction, but we aught to do our best to define a general framework that anyone interested in could use and apply. We could look at finer art fields and see what principles we could apply. For instance, from music, I learned to love music by playing just difficult enough music to keep me interested, but not hard enough to get frustrated enough to quit. I never had personal teachers because my parents didn't have enough money, but I used my resources the best I could. There came a point after playing music for a number of years that the patterns started to emerge that I began asking the right questions and got lead into music theory. This happened a decade after playing, but within a few months my view of music was forever altered. I called it "just in time learning", and it's something I've tried to do with mentors of my own. There are quite a few topics in computer science that are better learned over time through rote memorization, but the part that I think we're failing to address is giving students a platform to build off of on their own. Every reputable fine art program makes extensive use of studio time where students are given ambitious projects with loosely defined parameters in conjunction with their theoretical courses. The supplement each other and provide the bedrock for a young artist to grow on.
What I'm failing to articulate is, passion is not mandatory to learn. In fact, I would say if used inappropriately, it can be destructive to a new learner of a skill. Once they hit their first brick wall and have no one to turn too, they might feel they aren't passionate enough and give up. When in reality, if they were given a different perspective, they might have easily overcome the challenge and moved on. Not every skill set can be sexy, and not every task can be passionate. The man that is responsible for tuning concert pianos with a live crowd are extremely talented, but most are not passionate about tuning pianos. We are looking at this as a problem with students, when in reality the problem is with the program and the teachers.
I'm pretty sure that anyone could learn to code. However you need an atypical mind (not superior, just different) to truly excel at it. I'm not sure if that comes about due to nature or due to nurture, but both could be out of reach of adults depending on which developmental theories you subscribe to.
Self-taught veteran coder here. I'm not great, but I've built a few things in Python (with a LOT of input from more experienced developers).
I never really thought about coding until I came to a developer with an idea and he said "Great now go build it."
It was very intimidating, but I was lucky because I had a boss who gave me the freedom to devote time to learning and many false-starts. It took about 6 months before I had something slammed together that worked.
I learned that coding (while hard) is not impossible to learn. More importantly I believe that it re-wired my brain for problem solving. I think more logically than I did before, and that has helped me to learn other skillset and further grow my career. I now have an MBA and work in finance.
So I'm sorry but I don't believe that coding is something that you have to be a natural rockstar to do. There are so many small and solvable problems out there and so few coders. These are still wildcatter days.
I do tend to agree about programming classes being rote, but isn't that true of any kind of education?
Perhaps what is more important is having an employer flexible enough to let their employees learn new skills while working.
As a veteran and a developer, I think this is a good thing. This title is just clickbait nonsense.
The amount of "schools" preying on young veterans for their juicy GI Bills and student loans was sickening. It was basically theft and left a lot of veterans in debt.
I saw many soldiers coerced into starting courses just before being deployed. It must have been nice for those schools to have a lot of enrolled students paying absorbent amounts of money who were not even capable of participating in the course.
Most coding bootcamps are already predators, keep them the hell away from the GI Bill.
There are already more coders than are needed.
What there aren't enough of are leaders who are smart enough to recognize this.
I cringe at the thought that software engineering could become a "blue collar" profession.
Systems have become needlessly over-complicated and this is driving an increase in demand for coders.
As companies hire more coders; their systems get more features but they also grow in complexity (particularly if they hire junior coders). Non-technical managers are often not knowledgeable enough about programming/architecture to see that their systems are more complicated than they need to be and never bother to rein-in the complexity.
So basically as the complexity increases and becomes harder to manage, companies hire more coders but those coders are a double-edged sword because whilst helping to manage existing complexity, they also add new complexity on the side.
Unlike with most other professions, in software development/engineering, there is no limit as to how many people you can throw at a problem; that's because there is no limit to system complexity and richness of features but the law of diminishing returns still applies.
So you're taking a dubious theory (tech-debt => hire juniors => more tech-debt, repeat), applying it industry-wide and then using it as an argument against JUST VETERANS from pursuing a career-change into software?
I have no problems with veterans wanting to become coders. What I don't want more of are people who go into this profession only for the sake of making more money - These people are only driving up software complexity and not actually adding value to their companies.
Software engineering is one of the few professions that let you get more money by delivering a lower quality product (assuming that your manager is sufficiently non-technical).
If you live in Vermont and want one-on-one help you can contact me via twitter: @high_rigour and I'll personally help you out. We have a strong group of engineers here who would like to help veterans free of charge.
When transitioning from two decades of mainly Coldfusion (mvc) and some Php to C# last year I spent a few hundred dollars on Pluralsight. Best money I ever spent. SOLID, the full asp.net framework, CQRS, a bunch of common patterns, etc etc.
I feel like I've learned more in the last 18 months than I did in the decade that preceded them. It has totally rekindled my childhood passion for programming (Vic20/C64 basic, Amiga assembly).
I'm a bit ashamed by how far I had fallen behind, but at the same time it shows it might not be too late for someone who got too comfortable until reality hit him in the face.
Quality content is really, really important. So is finding a great mentor. And also other sources of inspiration like DotNetRocks, and reading He every day.
Those are good points. I would personally narrow it down to the personality type of the individual. I personally do much better self-learning than in a class room. I taught myself how to program after dropping out of business school and it was the best choice I've ever made.
I have a feeling this dichotomy (between self-learning vs classrooms) will be especially true for coding far more often than most subjects. Also anecdotally I found a part-time university course in english/writing to be the opposite of my experience vs learning coding.
That would really be the difference in whether or not I recommended someone down a particular path. But I also believe this is what makes someone a good developer - even outside of the learning experience. Basically your interest and motivation in the subject outside of formal settings. Which drives talented devs towards OSS projects and learning new languages.
Although not everyone has to be above average at their jobs to be functional. There are plenty of BigCo programming jobs where you could be generally disinterested in off hours and still be of value to the organization (see: I've met a number of Java/C++ devs who would fit this category who work in big teams and are happy/functional). Those people would probably be better suited for coding schools. And would probably be a large percentage of those leaving the military for retraining, so I support the OPs mission.
Quite frankly, if a person has any sort of formal education in their background such as college or even taking coding classes in high school, they are then entirely unqualified to offer such an opinion.
It may be easy to learn new languages online due to having learned the foundations, but unless you can say you learned all the foundations online, this type of comment isnt helpful. As many others have mentioned learning is a science and it takes a lot of work to structure learning in a digestible manner.
People have been self teaching since before online was a thing, and the materials available online today are vastly better and more complete than what was available pre-web. You could just as well argue that someone isn't qualified to offer an opinion if they didn't teach themselves to program from photocopied systems and hardware reference manuals. (That's the way some of us did.)
There can be advantages to a formal program, especially for some people, but claiming that formal education is somehow a prerequisite is a gross exageration.
> The problem with self-teaching is that you don't know what you don't know, so you don't realise where the gaps in your knowledge are.
The benefit of self-teaching is that you do not have to try and learn everything in four straight years and then set forth into the world with what you were able to take in during that time. In practice, the gaps become quite apparent when the gaps become problematic and one can quickly fill in the gaps on the fly thanks to no dependence on the schedule of others to fill those gaps.
What did you expect? The purpose of a Computer Science education is not to teach programming. Just like a Physics education doesn't teach you how to bolt together steel beams on a bridge.
Originally CS was a branch of math, then the issue was confused because many places taught software engineering in CS departments, and finally we begane to settle on some sane terminology.
> The problem with self-teaching is that you don't know what you don't know, so you don't realise where the gaps in your knowledge are.
That is why the only valid starting point is : the problem at hand and to solve.
From there, you can work your way back to what lack of knowledge prevents you from solving the problem.
If knowledge does not show up somewhere, assisting you while solving a problem, it is most likely useless knowledge and undoubtedly just a waste of time.
Of course there are tradeoffs. I'm not arguing that self-teaching is necessarily ideal or preferable. But both the article's premise (or at least the tl;dr people are taking away from the headline...the text is a bit more nuanced) of "can't do code school therefore can't learn to code" and the assertion that someone isn't qualified to comment on self-teaching if they have an education are ridiculous.
Okay, I'll bite. I learned programming entirely on my own, both from the manuals that came with my computer and from magazines, both computer specific and general purpose (Byte mostly---it was a fantastic magazine in the 80s).
But this was in the 80s, when computers came with decent documentation and a guide on programming. It also helped that I was in high school and thus, had the time to devote to self study without having to worry about supporting myself.
So I think it's possible, but it requires a degree of discipline and self-motivation to learn. Not everyone has that.
But to say that "if a person has any sort of formal education in their background ... they are then entirely unqualified to offer such an opinion" comes across as arrogant.
There's a huge difference between the theoretical ability to learn something and actually having access to education. I completely agree that we're living at a time when anyone with a decent laptop and internet connection has access to the basic required materials, but learning something from scratch with minimal guidance is difficult, and the huge amount of mythologizing around programming has made it even worse.
Bootcamps, at least Dev Bootcamp, focus heavily on the mental/emotional aspect of this stuff as much as the technical material itself, and do a lot to build the confidence that really is required for many people.
And yeah, I do think most companies are primarily incentivized by profits, but that doesn't mean they can't provide a genuine service at the same time.
Full disclaimer, I used to work for Udacity and was "trying to make a buck".
Trying to make a buck isn't bad. But I also repeat to people that learning this stuff is free. I think it's my obligation to repeat it to people so that they don't get taken advantage of by people trying to make a buck. You can learn it all for free, the only 'cost' is time, which varies wildly with or without paid guidance. It's ok to be thrifty, even "cheap", when it comes to learning, and for coding especially the best resources tend to be free.
For guidance, there's a literal industry of practicing programmers who pay it forward all the time with source code plus guidance on IRC/skype/email/HN/blogs/etc.etc. Desire to actually learn is the key thing, and while paying someone can help keep your education progress on track even in the face of disinterest (college courses you hate but must pass), it's no substitute for internal motivation. (Edit: a sibling comment does note the sometimes paying can actually spark internal motivation. Paying for things can be worth it, but it isn't necessary.)
But what you're talking about is more like a club for new coders (which is a good idea). This guy was specifically looking for coding schools, which I assume are online only (so no classroom atmosphere).
Now that access is so prevalent and available to most (not even just resources related to programming/coding/whatever), it seems like it tends to be discounted compared when access was the issue and worrying about anything else outside of that could be considered to be fanciful.
Yeah but knowing where to find them (the good ones) is not an easy task. There is definitely economic value in the curation of material, and in the personal oversight provided by courses.
One thing I was surprised about was the price. Can you really get $10K per student in a boot camp/coding school? Googling I found [0]. It's looking like about $1K per week. What kind of student to teacher ratio do they have? I assume they also take referral fees with their placement programs?
It occurs to me that I'm in entirely the wrong industry. I'll be honest, I work with a few people out of boot camps, and I really like them. Having junior people on your team that are driven and excited about learning is so beneficial to the overall team dynamic. However, the knowledge deficit is pretty large and it's pretty easy to fall into the trap of "this is good enough" (when it isn't) due to a lack of perception of the scope of the field.
Like I said, the people on my team who come from boot camps are really excellent and I would hire them again in a heartbeat. I just have a hard time believing these aren't the cream of the crop. I would feel bad taking $1K a week from general students knowing that they are unlikely to succeed.
Code coming out of the universities isn't that great either. That's why you need summer internships / coop education. People need to learn how to take PR criticism the right way - and to learn.
I wonder how much improvement you'd see if you handed out "Clean Code" by Martin to junior developers.
I would recommend a good internship over any other way of learning, and I would vote for extending the GI bill to help pay for them.
Code school won't turn you into much of a coder, nor will an Ivy League university. They will establish some sort of foundation, but I think the benefit-per-month and -per-dollar is not the best. And this is coming from someone who loved school, mades As and Bs, and graduated from a university.
Books and online resources are not the whole answer either, not for a beginner. You need a jump start. Maybe school would get you jump started, but an internship would be even better. And this is coming from someone who read thick books cover to cover on JavaScript, Apache, and SQL. I seem to do well with books, not needing a class --- but I wonder if I could have done it without some solid real-life problems to sink my teeth into. I didn't get an internship. I got even better: a job where I could learn on the job --- basically a paid internship.
Humans learn best through apprenticeship, on-the-job demonstration, using more than one of their five senses, question-and-answer. It was true in the Middle Ages, and it's true now. We haven't changed.
Never underestimate the bandwidth of a human face-to-face interaction.
No one at the university is going to get a job after one year. Something like App Academy has access to companies and provides you with access to recruiters.
Secondly it's the rapidity that's an advantage. The fact that they're nine weeks is an advantage. You have to value your time.
I have a couple thoughts on this subject as it directly applies to me. In many ways the G.I Bill is a coupon thats worth up to $22,000/year + (monthly cost of rent for every month in school). Many vets end up using the GI Bill just for the monthly rent check (for SF its like 4k/mo).
I am a strong believer in freedom of choice and personal responsibility. If I earned that GI Bill i should be able to spend it where I see fit. If you want to spend all of it in University of Phoenix or ITT tech or Harvard go ahead. But to baby people and protect them and removing their own personal responsibility I think is morally wrong and does more harm to the Vet in the long run.
Maybe blowing their GI Bill in X school/program wasn't the best choice but hopefully they gain some valuable experience out of it and come out the better for it.
From a civilian perspective, hypothetically speaking, why should we continue to fund the GI Bill if it's just going to be wasted? In a world where too many of the veterans get fleeced and get nothing for the money it would be rational for the rest of us to cut that benefit, perhaps replacing it with nothing or with a difference benefit like a larger pension. Personal responsibility is important but it doesn't exist in a vacuum. As a taxpayer I want societal good to come from my tax dollars, so I feel a responsibility to prevent the veterans from being taken by scammers and do discourage scamming in general.
Vet here, currently in my junior year of a CS major. I personally view the GI Bill as similar to a lot of other affirmative action programs - the people who are best-equipped to take advantage of the programs are the least needy.
I did a term in the Marines as a radio tech for air traffic control. I did all of it in Yuma, AZ. No deployments, not even a float on a ship. I got out with a job offer in hand to work at Intel as a microscope tech. Intel offers to pay for tuition, but I get $22k in BAH and a book stipend per year on top of free tuition with the GI Bill, so it's a better deal for me to make Uncle Sam pay for it. My SO is a nurse, so she makes good money as well.
I'm fulfilling my end of the bargain, I guess; I've kept pretty close to a 4.0 GPA while working full-time. But when John Q. Taxpayer thinks of a veteran going to college on the GI Bill, he probably doesn't think of a POG[1] radio tech whose parents are both affluent college grads. He thinks of some grunt who lived in the dirt and got shot at in Afghanistan and is probably the first person in his family to go to college.
The latter tend not to use their benefits at all, use them as another form of welfare like the parent poster mentioned, (take some fluffy bullshit classes and pocket the BAH) or get scammed by some shitty for-profit institution.
Result: Those who use the benefits tend to be those who were already going to go to college and do well anyway. Of course, if you threaten to canc the benefits, you're going to get a bunch of very angry veterans and affiliated people who will yell at you for ripping away that poor grunt's chance to be the first kid in his family to go to college. Never mind the fact that the poor grunt got suckered by fucking DeVry or just didn't go at all.
Because it's a deal. They go to places they can die and in exchange you're going to give them this.
It's like if you were spending your salary on drugs and gambling. A poor use of your time but poorer justification to cut your salary. It's your money at that point and it's not up to me to cut your salary on that front.
It's obvious that most of you didn't serve to the army of your country.
If you did then you would know their level of IQ, perception, education (science in general, maths etc). These people have their brains washed in an irreversible level. Even their educational levels are very low. In the army school (or whatever it's called) they learn to make war not engineering.
And their perception? Ohh.. It's simply distorted. They cannot translate a single command they have given with success. But this is army, people on top only occasionally deal with real problems and they never look back to check from the moment they give the command to their inferior. Most of the time they deal with the Shave or the clean boots or the parade!
But hey! They are perfect doing other things! They are good supervisors and devoted to single tasks outside of the office. And I think that this is the key to their inner world and the most significant reason for their failure: Single Tasks + Reality Distortion
Veteran here. Most of us are a humble bunch, but I've met some incredibly gifted individuals while serving... and I served in the US Army Infantry. I would encourage you to rethink your uninformed opinions of us.
In my country we serve to the army for 1 year totaly free. Yes, without a payment. I was asking my father to give me 50 bucks to buy a box of cigarettes and drink a beer in the bar. How I felt? Garbage...
But here is the worst part. We had a commander A and All day we were serving ourselves. We were taking care of the gardens, making parade, straw broom stuff for hours and many other stupid things with very little education. Every day (and night ofcourse) we had service in the watchtower and every second day we were free and we could go out to town.
But some day another commander came. The first day he said to us (he was just arrived in the camp and we were there for months) that the services were many and probably we would not have many "free" days. suddenly we started to have free of service days every 15 days! The law which they were abusing was saying that for the needs of the battalion we could make as many services in a row as it was needed. 15-20 days in a row for 1 day out.
And this is a very small example of what army means. What was the diff from Commander A to B? You can spend many many hours thinking but noone can give me back that 1 lost year with all those people. I know them very well. First I thought that only my country's people were like that. But then I realized that everywhere is the same.
"Incredibly gifted individuals" are always living in their world. I was lucky to meet some of them. They didn't even know what an FFT is and we were serving in the electronic intelligence.
USAA, a financial institution made by the military community for the military community, has a program called Vetfit = veterans for IT. It puts them through an intensive 14 week bootcamp.
Perhaps there's not enough knowledge about this program but 1/4 of USAA employees (~31,000) are vets.
I run a code bootcamp, and I honestly think it's a very good thing that the GI bill doesn't apply to code schools. At least, not until we're controlling for outcomes somehow.
Here's why:
As soon as GI bills (or any federal funding) enter the education space the product and outcomes no longer matter to the most ambitious (/greedy) companies; all you have to do is capture those dollars before someone else. The product doesn't actually matter in a financial sense because you have person A spending person B's money.
I think there's a solution, and the person this article was written about needs to be given a chance, but there needs to be some serious curation. Some online code bootcamps have graduation rates (that's graduation, not even hiring rates) of ~30%. And that's of people who paid $8,000 of their own money. Think what they would be if they were just soaking up GI bill money. Candidly the space is full of garbage schools that don't teach very much already.
Look at for-profit education lead gen for accredited universities and you'll see how quickly the race to the bottom happens. ITT Tech is the most recent example, but there's something messed up about the fact that you can sell a hot swap of a potential student on the phone for $500+. It's just an influx of money that needs to be captured from not-too-discerning spenders, and with no connection to outcome. That's bad for all involved.
Want to hear something else messed up? One of the most lucrative ways to drive those education leads is from "jobs." Post a fake job, turn someone down, then, "Oh it looks like you don't qualify for job x (that may or may not have existed), but you can attend y for free because there are grants/loans available so do that instead." Farm out those leads to a overseas call center that's paid based on how fast they can get people the biggest loans, and profit. It's a federally funded scam and a wasteland of money the poor and uneducated (or taxpayer) are on the hook for, while the companies best at marketing make a killing. I can't even type because I get so mad thinking about it.
So I think GI bills should apply to code schools, but if and only if they meet outcomes x y z. And we're not there yet.
As an aside, if there's a vet (or anyone that can't afford it) that wants to learn to code please reach out to me. We're going to be launching a six month online computer science degree soon that's free up front and a percentage of income only after you get a high-paying job. If you don't get there we fail and we get nothing. It's a lot of "credit" risk for us, and you'll have to pay a percentage back, but it's the best we can do, and it's only fair to align incentives. Email in bio.
Learn to code requires time. From my experience, after basic education (e.g. before starting High School), with 6 hours per week, during 6 months (144 hours), with a teacher and a easy language (e.g. BASIC or Python) you can accomplish students to have a sound base, so more advanced programming can be put on top of that afterwards. The point of few hours per week is because of the brain requiring time for assimilating knowledge. I.e. unless you have some basis, e.g. knowing a previous computer language, or some similar experience, pushing full-time for learning programming would burn the student.
In addition to the "learn to code", there is the case of "knowing to code, but learning new stuff", which can be frustrating, too, if not focused properly. E.g. computer languages work pretty much the same for number computations, algorithms on data (lists, graphs, trees, etc.), so if you know the language X, you'll be able to move quickly to language Y. The problem is when "moving from X to Y" involves more than algorithmics: e.g. if Y involves computer graphics, and you had no previous computer graphics experience, the handicap would be learning computer graphics, not the language Y. Another example, if you're an experienced C/C++ programmer you can take easily on Node.js server stuff, but not on web-client programming, not because of Javascript, but because of requiring learning many additional elements (DOM, CSS, etc.).
People who go to coding boot camps often get coding jobs. Many coding schools deliver what they promise their students, which is a job in return for their fee and the student's hard work.
It's silly that VA benefits can be used for intensive short courses in for-profit plumbing and truck-driving schools but not coding schools.
This is a screwup that needs to be fixed. The VA has screwups in it. SNAFU (situation normal, all f---d up) is a military acronym. They fix SNAFUs when they get pressure from Congress.
Of course there's a history of sleazeball entrepreneurs figuring out how to get paid with VA benefits in return for bad education. That's no good. It was already happening at the dawn of the computer age, and it's happening now. It needs to be dealt with, ongoing.
There's also a history of people being trained for work without the aptitude to do it well. That's also a waste. It happens in plumbing and truck driving too.
Making it hard for veterans to use their benefits to learn to code is not the way to deal with these problems.
Plus our industry can use lots more skilful hard working people.
You could write to your congresspeople and bring this article to their attention. I did.
Is there any data out there on how successful code schools are in terms of job placement and more importantly longer term success in hands-on coding (non-managerial)?
I've always had a perception (perhaps wrongly) that people who code are somewhat natural at it and don't need to be taught. Honestly I've never met anyone that was any good that was taught to code in school or by a book.
What we really need are trade schools supported by the community and the state like community colleges. For-profit education like for-profit healthcare is kinda uncivilized and backwards. I think all bootcamps are for-profit so this opens up plenty of room for someone to actually do the right thing and set up a non-profit bootcamp.
This is nuts. Only a small percentage of people can learn to effectively generate code. Thinking that veterans can be turned into developers is absurd - they'll get code-monkeys instead, with a few exceptions.
I don't believe that, at this time in the USA or in the future, education will save people in software development from unemployment. The only thing that will do that is having some smarts. And if you're smart, you already know what to do (for you). One of those things to do is head _away_ from software development if you're a noobie. At this time there are more developers worldwide than ever before, work continues to be offshored and developer wages are declining in the USA. You'd almost have to be insane to try to get a job writing code.
I haven't seen a Nuke fail to learn to program enough to get stuff done, and the two that stuck with it were annoyed when they realized they were going faster by staying off the internet. (Though this is learning for a hobby).
They're going to also do better in a tech interview than most programmers. Mostly because they've survived a program where they have a half dozen or so knowledge interviews a year (that to me were more stressful than my actual job interviews).
Though most rates don't remotely compare to nukes, and nukes have more sure ways of getting SV like pay than tossing in with IT developers.
But US Navy nuclear power school grads ("Nukes") are not typical veterans. I should know, I've been lucky enough to have had several as bosses and co-workers. They were first-rate and far too valuable to use as software developers. Their knowledge of naval matters was much more important.
> they'll get code-monkeys instead, with a few exceptions.
that's an expected outcome of most courses to teach programming. some will excel and others will merely pass. I think that's ok as far as outcome expectations go.
what concerns me more is the prevailing attitude among policy-makers that "tech jobs" is a magical panacea for all working class woes.
Qualifying for GI Bill funding is a long long process, and very challenging for newer organizations. I'm involved with Code Platoon, a non-profit coding school for veterans based in Chicago, that is about to graduate its second class ("platoon"). It's a robust program, at 20 weeks, plus optional internship placement at the end to keep learning - so I think pretty ideal. Companies sponsor 80% of the tuition cost, so the students pay only $2500 out of pocket. Finding sponsor companies is inherently a limiting factor on the program though - GI Bill funding would allow more veterans to participate.
I don't see the need for Code Schools. Folks can learn almost anything using the resources of the internet.
Provide the vets with books on coding for a specialized curriculum for fee and give them some specialized job prep. Many places would love to hire Vets.
>Folks can learn almost anything using the resources of the internet.
This is correct, but it isn't true. I can't tell you how many people I know stuck in the tarpit of "learning to code via the internet", who are being bombarded with flash-in-the-pan.js tutorials and coding tutor websites that don't really lead anywhere.
I think we as software developers look back on learning to code, and only remember the epiphanies, forgetting how infrequent those epiphanies actually were, and what a different climate things were even 10 years ago.
Quite frankly, if a person has any sort of formal education in their background such as college or even taking coding classes in high school, they are then entirely unqualified to offer such an opinion.
It may be easy to learn new languages online due to having learned the foundations, but unless you can say you learned all the foundations online, this type of comment isnt helpful. As many others have mentioned learning is a science and it takes a lot of work to structure learning in a digestible manner.
I'm speaking from this perspective, I dropped out of school and barely made it to my CS classes. I learned on the job through internships and resources online.
You can test the vets on the knowledge and grant them special certifications that can single out the ones who ha ve tested out of the curriculum.
I teach in a coding school and while there are tons of good contents out there they would hit a brick wall quite soon. We mentor them, we are there 8 hours a day + all day on slack to answer their questions. We run cognitive apprenticeship sessions (live coding) twice a week. We require them to demo what they've learned each Friday and many more nuances that simply browsing MDN won't give you.
In short, good coding schools are a shortcut to being a junior developer. They will learn how to learn to code.
"code schools" don't provide credentials either. This isn't talking about providing college education to veterans, that is already covered by the GI bill. This is about "coding bootcamp" and "make an iPhone app in two weeks" sort of school. And that doesn't play any better in an interview than self-learning.
We can help (free of charge) few veterans to code. Our startup provides low code platform to build custom business applications from custom workflow requirements. It is like building custom software from Lego components and it will be easier to learn by using Lego components as opposed to building Lego components. The end result of effort of coding will be custom business application which can help veterans land job. Please contact us by using email found in my profile.
Thanks,
Neal
Few code schools accept GI Bill because it requires them to have been in business for 2 years prior to applying to accept it. There's little stopping schools from getting approved, but the problem is most haven't enough track record or get denied when the VA investigates them.
Nobody who is not mentally disabled and owns a PC with an internet connection "wants to learn to code but can't". What about showing initiative and teach yourself with one of the infinite resources available on the internet?
"Coding schools" are a sham, and I'm glad they're not covered by the GI Bill.
There's nothing stopping these veterans from going to a regular university, college, or community college and getting a real degree in computer science, software engineering, or a related field.
> There's nothing stopping these veterans from going to a regular university, college, or community college and getting a real degree in computer science, software engineering, or a related field.
Nothing? Have a little empathy, buddy. While I have some sympathy for your opinion of coding bootcamps, just bear in mind that it's not easy giving up something you've been doing for a couple of decades and going back to college with people half you age and then having to restart your career in an entirely new profession. The mental flexibility one has when one is young just isn't there anymore for these individuals.
Hey, I'm a vet who went back first to a coding bootcamp and then to a CC before 'real' university. The hardest part for me (especially because I feel like I'm a pretty ok programmer) was being willing to do the very basic Freshman/Sophomore material. Also, humanities. I really wish there was an option to just take Math and CS. I imagine this is what was originally imagined with Associates degrees.
I was extremely lucky because I already enjoyed math and coding on my own. How much Trig do you remember? I'm not trying to be a smart ass, but for a vet who has a lot of real world experience - going back to high school math can be a real challenge in unexpected ways.
It depends. I was fortunate to have no obligations, so I left and went to a 4 year school. Many veterans leave and have obligations that may prevent them from being able to handle the reduced amount of income. I don't have any "sympathy" for this, but there are things that prevent many veterans from attending college based on life choices.
Also, let me tell you. When I started engineering school I nearly failed out. 5 years of 0 school and it was very difficult to go back to school. I eventually graduated and landed a great job, but there aren't a lot of 4.0 high school valedictorians going to the Army. My point here is that it's complicated.
I do agree though that it's good that these coding schools are not covered. But! The GI Bill IIRC does provide support for trade schools. So if you were able to create a coding trade school (which is what most devs are doing in their daily work) you could be able to train veterans.
College costs more, takes longer and in many cases has a more selective acceptance process. To state that "there's nothing stopping" them from going back to school is a totally unsubstantiated claim that casually dismisses the circumstances of people and their families.
it's essentially an accelerated vocational training program designed to feed in to either entry-level IT jobs, or upgrading to a proper Computer Science degree track. this is common in community colleges, afaik. there are multiple schools in New York City that do this anyway.
I guess the major difference is length of the program. community colleges aim for 2 year programs. coding boot camps aim for 12 week programs.
Allowing for-profit coding bootcamp to teach veterans coding is a very bad idea. Some business types will inevitably try to use it as a get rich quick scheme and waste the resources/time of everyone.
Here are some thoughts that I'd like to share I went through the path of starting out as a college grad with a degree in Humanities and got into IT/support/light-coding.
Dump the misconceptions:
I'm sure soldiers smile when they encounter civilians who are completely clueless about military and everything else that goes with it. Same with the startups and coding career. Everything you read/see on media/TV about startups is pretty much garbage. They may get the personality, haircut, fashion, and the ambiance right (Silicon Valley), but that's not what being a coder is about.
Are you cut out for it?:
Some are just not cut out to be a coder/programmer. This is not meant as a disrespect. Not everyone is cut out to be a soldier. I tried really hard to convince an ex Air Force officer (not army, but a desk jockey from AF) to try out a career in IT (not even coding but server/systems management) as he was leaving the service, but he had been forced to do some of it while in service and had bad experience. So he was dead set against it. But one of my ex managers was an enlisted man in Navy/Airforce (not sure, but not army) when I worked as a server/desktop technician and he was good as a server/linux admin.
You need to find out if you have the aptitude, patience and passion for IT/code career. Especially with coding because you will have to constantly learn new tools/languages/etc to keep up, all on your own time (nights, weekends). If you have problem with it, you'd be better off not starting it. This is especially true if you don't have a CS degree. With a CS degree, an employer may hire you even if you don't know the programming language used in their product, because they think you can learn quickly enough. With no CS degree, you have to have concrete examples to show that you can learn and do the job, which means even longer personal time spent for self training sessions.
I am in the process of switching from Desktop Support into coding, and I know I am spending easily 10 - 20 hrs a week (thanks to RescueTime) on my personal computer watching/reading online courses and typing out the tutorials. I have a full time job and wife/kids. And I spend 2-3 hrs every weekday and/or entire Saturday on my computer each week, learning/practicing coding and everything else (git, HTML/CSS, some bash, some database) related that I realize I need to know. And I am not really advancing fast enough, for lack of time, and I've been in IT for years.
Who usually goes to coding bootcamp?:
Coding bootcamp is really for someone who already has enough knowledge in coding. Someone who went through a coding school commented on HN that it seemed most already had spent time/energy on their own to learn quite a bit, and joined the bootcamp to get that final push/proof that they can show to potential employer.
Consider a coding bootcamp something like a training school a newly minted SF operator attends after he already proved himself in the initial Army bootcamp and years of service as a regular soldier. If you have not already spent substantial time (and actually learning) with computer, a coding bootcamp will mostly likely be a waste of time/money.
But you should still consider it seriously:
But here's the thing. Starting the training to be a coder/server-admin these days costs almost nothing, unlike the training required to be a jet fighter pilot or a doctor or a lawyer. To be a pilot/doctor/lawyer, you HAVE to get into a training program and find someone to pay (or pay yourself) for the instructors/equipment.
But starting a career in IT nothing is like it. All you need is a computer, internet, and time. Half of the coders surveyed on HN (or Stackoverflow?) stated they were self-taught programmers. Of course many others may have started out but gave up. It would be dishonest to not bring that up.
So how do you get that initial start and experience to start the journey to be a coder/IT worker?
So what to do?:
Research. There are many different types of coding, like HTML/CSS. Or coding backend. Or create an iOS app. I think Mr. In the article, Mr. Molina trying his hand first on iOS app was ill advised. He should've first learned about HTML/CSS or bash scripting, not to be an expert but at least know how's it's done. Read a little about different jobs, like tutorials for a few days to get a sense of direction.
Spend time on job postings like indeed.com and see what skills/tools are in demand. Spend time on HN and read, to soak up the culture/ambiance, not too much though. Not to be a pretender, but to start thinking like a coder.
Find time, lots of big chunks of time. Coding/hacking/building-a-computer all require hours of continuous tinkering, changing, testing. Not like 1 hr here and there but like half a day, or all of your evening. I find myself most productive when I can spend bigger chunks of time working on the same thing.
Watch how you spend your time. Use tools like RescueTime or other tools to keep track of how much time you spend. You will be surprised how quickly time passes when you start watching an episode of something on Netflix. Just stop it, until you get a jog as a coder.
Find office like environment. This is necessary especially if you are just starting out. Trying to do it alone at home will inevitably lead to netflix/xbox/etc. I've made that very mistake. And I recommend against Starbucks. You want to maximize productivity, and starbucks is not the place.
If you can spare $200 - $500 a month, try out co-working spaces like WeWork or NextSpace. It will make you sit down and stare at the laptop screen at minimum. I used the service in between jobs to learn some very basic html/css and it helped. I didn't get a job as HTML/CSS coder but it definitely beat trying to do it at home. Try cheapest plan which usually allows you to use any open desk. If you can only spend evening/weekend, try reserved desk/room. More expensive but you can leave external monitor to go with your laptop, boosting your productivity.
Go to meetups. I personally don't because I'm an introvert, but attending a few doesn't hurt imho.
Write out things you want to learn. Doesn't matter whether you stick with it or not. Adjust it if necessary. But write it out so that you know what you are doing now.
Use Google Doc to take notes as you try out commands, tutorials. Spending time writing out what you learned really reinforces. Especially useful in the beginning.
The path to learning anything in IT/coding will be really circuitous. Let's say you want to put up a HTML/CSS website on a VPS server like at DigitalOcean. But before you even touch the server, you may have to learn about vim, ssh, rsync, ftp, Domain registration, yum install, etc. It may be days/weeks before you actually get to do what you initially set out to do. But that's the fun of being in this field.
Try setting up a study group, virtual or physical. Use free/cheap tools like Slack, Zoom, codeshare.io, etc to ask questions, help stay focused.
Negatives you have to know:
Ageism is real. If you never heard of it, search on google and read about it. You are considered over the hill at 40. Many are sharing on HN that recruiters are not returning calls because of perceived age on the resume. I'm near that age and experiencing it myself.
You will have to constantly spend own time learning new things. It may even feel like you have to get a new associate degree every 3 - 5 years. I think no such issue exists in the law enforcement, firefighting and such industries.
> Voting for a demagogue needs to carry a heavy social cost, or nothing will change.
To me this means anyone who found either top US candidate as a viable option, so am I supposed to dismiss the majority of Americans merely because they voted? Personally this was an off-topic and non-relevant aside that served no purpose but to start flamewars. Politics is a mind-killer.
Not to mention hardly everyone who visits HN is even from the US and those outside of it (in western countries who have experienced stable/functional political systems) are very likely looking at the whole thing as a sidehow rather than who one voted for as some deep analogous reference to the topic at hand.
No, obviously not, how would the exact same thing but of a different US political position make it okay? Did you not see my above comment?
I admit I may be expecting too much from expecting basic comprehension from the type of audience who likes to engage in this 24hr news network partisan stuff... all I'm trying to get across to you guys is that this isn't the place for it. You may find /r/politics and /r/worldnews much more welcoming, or the comment sections on the websites of major US news networks (CNN, Fox news, MSNBC, etc).
But as I said I will continue to downvote/flag it here.
How dare half the nation have a different political opinion than I! It's time we put their feet to the fire! /s
HN is a great place to talk tech, startups and entrepreneurship. However I'm not really interested in HN's thoughts on policy, policy making, or governance. I'd rather discuss these things who study them, are in those fields, on a forum expressly for that purpose.
If you aren't prepared to talk policy or policy making, or governance, you are not prepared to lead any group of people, let alone a start-up, where there are no landmarks, so initial trajectory errors in policy are all the more difficult to detect and correct.
What about those of us on HN who think you can't just segment fields like that?
I can't stand startup and entrereneurship talk.
I'm on HN because its a place that attracts smart people that talk about a high diversity of intellectual topics with a common ground of tech experience. These days its often the high-tech savvy community from whom the experts in those other fields are likely to be found. (and partly why i'm here). And at the very least, I would argue you can't separate tech in any meaningful way from policy, policy making, society or governance.
What's with these shit posts lately? This is specifically talking about using the "GI bill," (actual name is The Servicemen's Readjustment Act of 1944) which is certain benefits provided in exchange for active duty military service. Education is just one of those benefits, access to special loans is another. It's one of the reasons why people sign up for military service in the first place. It's something that is earned, not given.
The argument presented here is you are allowed to use your GI Bill to learn to be a HVAC technician so why shouldn't you be able to use it to learn to be a software engineer? Incidentally, this article is pretty pointless anyways because you actually can learn to be a software engineer with your GI Bill you just have to go to an accredited traditional college or university. They even mention there are "boot camps" that are becoming accredited. Even so, I question how much you can actually learn in less than six months, certainly not enough for a real career in software in my opinion, I base that on my own journey learning and my decade plus experience in industry. I think the point of this article is something like "coding is the new blue collar" or something else irrelevant.
Well even if you wanted to say that, part of the compensation package of joining the military is having school paid for afterward. So think of it as more of a contract, because it is.
True, but what does "writing code" mean? If it means learning some basic JavaScript syntax and writing a small text adventure, that isn't hard at all. Learning the mathematical fundamentals of CS on the other hand is a great deal harder, and getting up to speed with what technologies are considered standard is extremely difficult.
Many, if not most, software jobs require very little CS knowledge. At such jobs the ability to compare numbers and read a chart (a matrix of algorithms and data structures vs. time vs. space complexity) will cover almost every possible use case.
"Mid-level development as a skilled trade" jobs, for example.
Right. Most programming jobs aren't asking for 5+ years experience in <some language/framework/library> because they're looking for someone who knows how to balance a red-black tree, they're looking for someone who already knows all the workarounds and kludges you'll need to know to do the work they want you to do.
Learning a programming language is relatively easy. Knowing which of several libraries that offer similar features is the right one for your particular task takes time.
Right, but as the article mentioned the veteran needed an accelerated timeline because of family obligations and couldn't afford the time not working to attend a traditional 4 year university.
They do fine for a lot of programming jobs. If you're going to work at a DoD contractor or something, work on the team maintaining a hospital website, or work in enterprise architecture you don't need a 4-year college degree in CS. I actually think you're better off getting a degree in something else and just learning to code on your own time for the vast majority of people.
> If you're going to work at a DoD contractor or something, work on the team maintaining a hospital website, or work in enterprise architecture you don't need a 4-year college degree in CS.
You've got to be kidding. The thought of somebody with only a coding school certificate writing software for missile guidance systems, aircraft, nuclear submarines, etc. is a bit terrifying.
No I'm not. Most of those systems are proprietary for obvious reasons, and the training to work those systems is going to be a lot of on-the-job training. A CS degree would help, but Lockheed Martin isn't hiring people to rewrite data structures for missile guidance systems. Well, they could be, but that's an entirely different demographic.
But even with that being said, you're not including the multitudes of DoD services that are not critical, military email accounts and websites, payment processing, web portals for HR, etc etc.
I don't think you even need a coding school certificate for any of those jobs.