Hacker News new | ask | show | jobs
by geebee 5407 days ago
To become a software developer (especially the kind with a CS related degree), you need:

-A highly analytical mindset

-The ability to handle tough math

-The ability to read dense material and process it quickly

-The mindset to persevere, test, investigate, and find obscure problems in complex systems

-The ability to see a project through to its finish

-The ability to explain complex logic and design, verbally and in writing

It also helps immensely to have

- The ability to work well in a team, and good general social skills (the notion that this isn't important in software development is a silly myth, it's incredibly important)

- The ability to complete lengthy and difficult academic programs, without veering off into less demanding majors that give you more time to party.

- A family or other benefactor that can fund and support you through these academic programs (I knew a dude who tried to major in CS while working 25hrs a week in retail. Extraordinary people can do this, but it's very difficult to carry physics, math, cs, and a humanities elective under these circumstances. Many smart people fail even when school is their only "job").

It makes absolutely no sense to compare a person like this to the national average. The general unemployment rate has nothing to do with the unemployment rate for people like this.

So is the unemployment rate actually low for software developers, or is it simply low for all people with the traits listed above, regardless of field? You could reasonably argue that jobs go begging in software largely because the field is not competitive with the other professions/trades that people with these traits have available to them.

3 comments

Disagree on "tough math". Strongly disagree.

Be analytical, practical and tenacious. Know how to abstract, design, program. Know tools, know platforms. Know how to triage and actually ship stuff. Be good to work with. Keep learning, constantly. Read tons of code.

But "tough math"? Honestly, haven't needed anything more than simple statistics for most problems.

"Tough math" seems more like an ego thing. I'd watch out for that.

You're correct for general problem solving in computer science. However, in order to get a degree from most universities you have to have taken 3 courses in calculus, a course in linear algebra and a course in differential equations. To most people those courses are "tough math".
If you are seeking a masters in CS most universities are only looking for programming languages, computer architecture, data structures and one algorithms course. These are the prerequisites for most courses.
That's true I'm just speaking from experience of looking at many undergraduate computer science programs in the United States. They all generally require some "tough math", and I think they should because that sort of analytic thinking in solving complex mathematical problems applies directly to computer science.
An ABET accredited CS major requires learning the calculus and probably somewhat beyond the AP BC level plus a course in discrete math. And maybe a bit more, you can check out their web site at http://www.abet.org/
I agree. Even as a math major myself, I have only needed formal math when math was part of the domain knowledge. Math is a great major, but I think you can be an absolutely top programmer with a degree in a different subject or no degree at all.

I mentioned this because if you want to be the kind of programmer with a CS or related degree, you'll need to be very good at math.

You do not need to be very good at math to get a CS degree. The last role I had was in a company heavily loaded up with UMich CS grad students, none of whom could (for instance) deploy a discrete cosine transform.

There's a level of "street math" that good programmers tend to have (statistics, maybe some trig, maybe basic matrix arithmetic), but you'd be surprised how many excellent programmers don't even use algebra. A friend of mine interviewed at a very famous quant hedge fund (a decade or so ago) and shocked his interviewer by answering one of the questions with a system of equations in two variables.

I'd expect UMich CS to be very strong. I haven't looked at the undergrad curriculum, but I'd be surprised if it doesn't require calculus through differential equations, along with some more advanced electives.

I should have defined "tough math," because a lot of people on HN have gone far enough with math that what I described above wouldn't be considered "tough". But it actually does serve as a gatekeeper for most engineering and hard science curricula, including CS.

One can get through the required classes without being any good at them. Wannabe doctors take 2 years of chemistry as premeds and promptly forget it all when finals are over.

That said, I've never seen a CS degree that required any more math than a year of calc and maybe a semester of linear algebra. That doesn't seem so hard, one just has to keep up with the homework. Maybe you are thinking of computer engineering?

Semester of statistics required for mine.

Of course they have since dropped the stats requirement. And the calc 2 requirement. So now it's a semester of calculus and a semester of linear algebra. I guess too many people failed calculus 2 and stats.

I don't think that math is universally necessary - it's actually rare that I need to sit down and write equations and think about something mathematically. (Unless I'm a genius who does it in his head, and trust me, I'm not.)

And a 25-hour-a-week job doesn't seem that overwhelming. I think I worked 20 hours a week with a 30 minute commute each way - unless you're having a truly difficult time with the core concepts, a 15 hour course load and a 25 hour work load isn't much harder than starting any new job.

Mathematical literacy is more than just writing down complex equations.

for (a = 0; a < n; a++) { for (b = 0; b < n; b++) { do_something(a,b); }}

How many times is do_something called? If you can say n^2 in under 15 seconds you are now better at math than the average American.

That isn't considered "tough math" though. Surely basic math is needed but most developers won't actually use high level math (except to get the degree).
There's an argument to be made that learning tough math is necessary to make basic math effortless.
That wouldn't be a very good argument. Basic math gets better by doing a lot of basic math. Your trigonometry will not improve by learning topology. I had more than one math prof who could not seem to balance a checkbook.
I knew very smart guy who worked over 30 hours a week on compilers alone. He got an A-. Maybe he could have gotten away with less work.

This was a notoriously difficult prof at a notoriously tough program, though. So maybe not typical.

I suppose it depends on the specifics of your program. BS in CS over here, never had to take a compiler class as far as I remember.
I agree. Just like I'm not going to tell someone who is more analytical to get into graphic design. Creative people go to school for design to sharpen their skill, not to learn how to think creatively.