Hacker News new | ask | show | jobs
by badminton1 3596 days ago
A coding camp graduate can be considered with respect to a computer science graduate what a paralegal is to a lawyer, or what a nurse is to a doctor.

They can perform some procedures, but not all of them, and at some point there might be supervision.

Now to be fair, paralegal and nursing programs take much longer than 12 weeks, are very strict and are regulated occupations that require a license that you can actually lose under certain circumstances.

Their purpose is to provide extra productivity and cost efficiency, but at some point they might require supervision and some procedures might exceed the skills learned during their training.

2 comments

Some of the best engineers I have worked with did not learn CS in college, or even in a boot camp. They learned on the job.

Some programmers want to believe that computer science is harder than it really is, because it inflates their egos. CS is not as difficult to learn as law, or medicine, or electrical engineering, or many other disciplines for which self-taught practitioners are exceedingly rare.

Furthermore, I've seen new hires with graduate degrees in CS fail interviews horribly, or get hired and produce horrible crap, while new self-taught hires have outperformed them significantly. A degree is no guarantee of any skill level, which is unfortunate.

An abridged definition of engineering is "applying science to create technology". A software engineer applies computer science to create software based technologies. Under that definition you worked with programmers not engineers.

Then, true. You might have worked with programmers that seemed productive and learned on the job. But much of that learning happened at the expense of exposing the company and the customers to great risk.

For instance, if you are manipulating financial information, and you don't know what a floating point number is, you are eventually going to have a bad time. If you don't understand concurrency and parallelism, you might end up corrupting important data, if you are suffering networking issues and everything you know is HTTP at a high level... you are going to have a bad time. And the list goes on and on and on.

Friendly software development technologies were created to augment productivity, not to release people from the responsibility of knowing what is going on with them.

Now to your point, it is clear that not all computer science programs focus in producing highly-qualified software engineers. But that doesn't mean that you can simply skip the fundamentals.

Not all software requires the same degree of rigor in design and implementation. Software has bugs, but it sounds like you'd prefer if such software were never written in the first place. Regarding risk, it's as likely that the super-educated "engineer" drops unfiltered input directly into a SQL query as it is that Joe Programmer has the chance to corrupt data with a concurrency bug.
Bugs and defects will happen at the time of implementing functional and non-functional requirements no matter how strong your preparation and problem solving skills are. But they differ since assumptions would differ in nature.

Many people would work on a problem until it works (or stops being an obstacle). But it takes some preparation to understand if an implementation is acceptable from a non-functional requirement standpoint.

I never said anyone should skip the fundamentals. But you don't need to go to college to learn them.

Your nitpick on the difference between engineering and programming is ridiculous, and your definition of engineering is wrong.

In the information age, given the right questions, you might eventually get the right answers. But you need to be able to formulate the right questions first.

If you do not possess a strong problem solving approach, you might not be able to formulate those questions in the first place.

Then, corporate interest aside, there are definitions of software engineering that are very clear. Refer to the IEEE definition of software engineer for instance, it might be more aligned to mine than to the "I feel like an engineer today" idea you are trying to push.

I've been in the industry since 1999 with no CS degree, and there were no boot camps back then. I'll bypass the horn-tooting, but I've managed to do pretty well in my career :-)
Do you perceive that a CS degree could have helped you overcome challenges or mitigate risks through your career?

Have you resorted to trial an error on tasks that could have been solved by applying CS knowledge?

There have certainly been moments. However, I suspect the time and expense wouldn't have balanced out yet, and becomes more skewed the older and more experienced I get. (I was a full time developer 6 months before I would have graduated, had I done a CS degree in 4 years out of high school, so throw that income in the mix as well)

These days my role is focused on a breadth rather than depth of knowledge, my ability to learn new skills quickly, and an emphasis on solving business problems through technology. (The company I work for focuses on logistics problems core to most businesses, not Twitter-level concerns)

I agree with you but I don't think the comparison to other disciplines is fair.

It's incredibly easy to self study CS, by applying your theory, with a quick feedback cycle on 1 pc and the internet.

Something that is almost impossible in law or medicine.

On a meta level, "I've known great engineers who were self-taught and terrible engineers with CS degrees" is a recurring meme in these discussions that really adds no information to the thread - it's obvious, and it's almost a tautology.
To piggyback off of your own analogy...

Learning doesn't stop after an initial degree. So, in medicine, you have situations where nurses are adopting many of the roles that physicians have stereotypically occupied, in terms of NPs and nurse anesthetists, etc. Granted, they do this with additional education, but it's still acquired gradually rather than in a single degree. PAs, which are ostensibly assistants, essentially have the same training after a certain period of time as physicians, especially with med schools shrinking their in-class curricula, and PA programs having stricter pre-degree experience requirements.

I think the argument that's implicitly being made with this sort of model is that you don't need a monolithic degree to learn a given skillset, and there are multiple routes to the same outcome. Furthermore, having a monolithic degree doesn't mean you know everything there is to know in the field (especially as your degree drifts further and further into the past). My guess is a certain proportion of those non-CS graduates provide something else to corporations other than low-level fundamentals of computer science.

My prediction is that medicine will crumble under its own weight as these sort of realities become too expensive to ignore. There's too much of an unmet need for health care to ignore the huge swath of people who can competently provide it. Maybe something similar is happening in IT.

Your analogy is also a little interesting in that in many settings, the tasks done by nurses and physicians are not the same. I routinely have seen physicians ask nurses to complete tasks like put in IV lines and so forth because they didn't know how to do them, and didn't want to botch the job. The nurses weren't simply a substitute, they were functioning in a different role.

Yes, through years of collaboration they have learned to distribute tasks in specific ways leading to specialization. What I am trying to get at is that it might not be a really good idea to have a nurse be the head of a cardiology department.