5 ms·
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
by geebee 15y 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.
- pavel_lishin 15y agoI 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.
- onemoreact 15y agoMathematical 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.
- watty 15y agoThat 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).
- Helianthus 15y agoThere's an argument to be made that learning tough math is necessary to make basic math effortless.
- deleted 15y ago[deleted]
- rdouble 15y agoThat 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.
- geebee 15y agoI 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.
- pavel_lishin 15y agoI 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.
- jinushaun 15y agoI 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.
- kabdib 15y agoDisagree 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.
- geebee 15y agoI 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.
- tptacek 15y agoYou 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.
- geebee 15y agoI'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.