The new forums will be named Coin Return (based on the most recent vote)! You can check on the status and timeline of the transition to the new forums here.
The Guiding Principles and New Rules document is now in effect.

Going back to school: IT/Software Development

supertallsupertall Registered User regular
edited November 2007 in Help / Advice Forum
I figured this board would be a pretty good place to ask.

I've done the university thing, and due to some poor decisions and bad foresight, ended up doing something I don't want to be doing for the rest of my life. So, I've been thinking of going back to school. During my program I didn't get too much exposure to any sorts of computer science other than a C++ programming course; I really liked it however, and I think this is something I could be happy doing.

So my questions are: what sort of education path is best to get into this? There's a technical school nearby that does a 2 year diploma program that can be extended to a 4 year degree if you want. Should I be looking more at a BSc. in computer science from a university? Is there a regular secondary education "path" most people follow to get into this kind of work?

Secondly, and maybe more importantly, am I being the kid who plays Gran Turismo and decides he's going to be a race car driver? Is one course enough exposure to really judge what the programming/IT side of things is like? Probably not, but that's why I'm asking. Browsing around a few different university/tech school websites, it seems like there's more than just programming involved, but that's what piqued my interest. I enjoyed the logic and thinking behind writing good, (though admittedly simple), programs.

TLDR: I want to learn how to develop software/maybe other IT stuff. How?

supertall on

Posts

  • ege02ege02 __BANNED USERS regular
    edited November 2007
    I really enjoyed the programming classes I took but I know I'd hate to do it for a living.

    I like astronomy too. And geology. And biology.

    You get the picture.

    ege02 on
  • urahonkyurahonky Cynical Old Man Registered User regular
    edited November 2007
    I loved C++ when I took it in high school. I'm now a sophomore in college, going for a BSc in computer science. If you liked programming in C++, you'd like programming in Java and other languages. I'd keep with it. The thing about Computer Science, at least at my University, is that it requires a TON of math classes. So make sure you like math as well. :)

    urahonky on
  • DrFrylockDrFrylock Registered User regular
    edited November 2007
    No, you're not like the kid who plays Gran Turisimo and wants to be a race car driver. You're more like the kid who plays Guitar Hero and thinks that it might be fun to learn to play a real guitar. If you said that you wanted to be a video game designer, though, then you'd be the wannabe race car driver.

    You're correct that having fun in one programming class doesn't mean that you will love it as a long-term hobby or career. However, I have known plenty of would-be computer scientists for whom it only took one class to know they'd hate it badly.

    Programming, by itself, is really a vocational skill. It is very difficult, but alone it's just a tool. There's demand for this skill, and so if you become proficient at it, you can probably be employed doing it. Just as in building construction, however, there is a distinction between being an architect and being a construction worker. Knowing how to program means that you may be an adequate construction worker, but there's quite a bit more involved if you want to be an architect. That is, there's a difference between programming and designing and engineering software. Granted, the architect-construction worker analogy is a bit strained because the line is quite a bit blurrier in computing, but it's adequate.

    People with University training in computer science and software engineering do learn to program as part of their education. The purpose of this training is not to prepare you to become a programmer, however. It prepares you to learn to solve different kinds of problems using computing. This is why a decent education in CS or SE doesn't focus much on programming beyond the first year.

    Computer Science focuses on a broad spectrum of computing-related topics. Algorithms, data structures, AI, programming languages, compilers, operating systems, human-computer interaction, user interfaces, digital logic design, software engineering, and so on. Software engineering used to be primarily treated as a subspecialty of computer science, but as software has grown in importance while the need for knowledge in, e.g., AI has diminished, SE has begun to split off as a discipline. SE is focused on the organizational, managerial, and technical challenges of constructing large software-intensive systems.

    The point I'm trying to make is that computer science, software engineering, and programming are overlapping disciplines; it is not a subset relationship. One is not strictly subordinate to the others. Many well-respected computer scientists and software engineers are mediocre programmers at best. Many excellent programmers cannot design software. Many famous computer scientists have only tangential interest in software issues.

    If you're interested in learning and practicing programming as a vocational skill, then get a vocational education in it. If you're interested in learning how to use it as a tool to solve problems, however, I strongly suggest a formal course of study in computer science or software engineering at a real university.

    As to urahonky's post above, the level of math required in a CS program really varies from program to program. I'm a firm believer that the relationship between mathematics and computing, particularly in software engineering, is highly overblown. Doing math is nothing at all like programming. Furthermore, it's not just any math that's important - it's weird branches of mathematics like discrete math (combinatorics, linear algebra, Boolean algebra), group theory and category theory, that really have practical applications in computing. Trigonometry comes in handy sometimes too. Calculus, however, is nearly worthless.

    If you do decide to return to the University, pick one with a decent program at least. Here's a hint: if the official names of the classes include the name of any programming language or specific technology (e.g., "Visual Basic" or ".NET" or "J2EE"), run.

    DrFrylock on
  • HlubockyHlubocky Registered User regular
    edited November 2007
    Wow. I guess that just about nails any point I was thinking about making...

    Hlubocky on
  • Acolyte57Acolyte57 Registered User regular
    edited November 2007
    DrFrylock wrote: »
    As to urahonky's post above, the level of math required in a CS program really varies from program to program. I'm a firm believer that the relationship between mathematics and computing, particularly in software engineering, is highly overblown. Doing math is nothing at all like programming. Furthermore, it's not just any math that's important - it's weird branches of mathematics like discrete math (combinatorics, linear algebra, Boolean algebra), group theory and category theory, that really have practical applications in computing. Trigonometry comes in handy sometimes too. Calculus, however, is nearly worthless.
    Ah, if only my university agreed on that, I might still be a CompSci student :) In those two years I aced all the programming and software design courses. Failed all the big math ones.

    Acolyte57 on
    101 little bugs in the file / 101 little bugs / take one out and recompile / 102 little bugs in the file
  • zilozilo Registered User regular
    edited November 2007
    DrFrylock wrote: »
    As to urahonky's post above, the level of math required in a CS program really varies from program to program. I'm a firm believer that the relationship between mathematics and computing, particularly in software engineering, is highly overblown. Doing math is nothing at all like programming. Furthermore, it's not just any math that's important - it's weird branches of mathematics like discrete math (combinatorics, linear algebra, Boolean algebra), group theory and category theory, that really have practical applications in computing. Trigonometry comes in handy sometimes too. Calculus, however, is nearly worthless.

    I'd argue the opposite. The specific techniques gained by a math-heavy program may not be directly applicable but learning advanced mathematics trains your brain in a way that is eminently useful when designing and writing software.

    Sure, it won't help if you're just hammering out GUIs or following a design document but it certainly will if you have to do any real problem solving (which is, conservatively, seventy percent of programming). I know I wouldn't be a tenth the coder I am now if I hadn't busted my ass in math classes both in undergrad and grad school.

    zilo on
  • DrFrylockDrFrylock Registered User regular
    edited November 2007
    zilo wrote: »
    I'd argue the opposite. The specific techniques gained by a math-heavy program may not be directly applicable but learning advanced mathematics trains your brain in a way that is eminently useful when designing and writing software.

    Sure, it won't help if you're just hammering out GUIs or following a design document but it certainly will if you have to do any real problem solving (which is, conservatively, seventy percent of programming). I know I wouldn't be a tenth the coder I am now if I hadn't busted my ass in math classes both in undergrad and grad school.

    Can you elaborate? I'm genuinely curious as to what other developers think about this particular connection. I'm particularly interested to know how you feel the mental processes used in doing mathematics are related to the mental processes you use in developing software.

    DrFrylock on
  • LewishamLewisham Registered User regular
    edited November 2007
    DrFrylock wrote: »
    Can you elaborate? I'm genuinely curious as to what other developers think about this particular connection. I'm particularly interested to know how you feel the mental processes used in doing mathematics are related to the mental processes you use in developing software.

    I'm terrible at Maths, but I do OK for myself at programming. Programming isn't as much a case of mathematical prowess (although you will need it if you are designing algorithms) but just being able to look at a problem as a representation of a large set of small problems. If you can't Divide and Conquer, you can't program. As far as I am concerned, that is the most important mindset programmers need to have, otherwise you'll just get super-depressed from day to day trying to climb mountains rather than molehills. Computer Science has programming as just one element of course, and that's why Computer Science degrees come with the maths; you need to know it in order to do effective "science" (as in research and development) on a computer, but you don't really need it for the majority of computing jobs in The Real World.

    Software Engineering really doesn't involve any mathematics. It needs you to understand designs, what is good programming and what is bad programming, and the ability to effectively communicate those things. Communication is the key, and many more jobs will hire you because you can effectively communicate your ideas than code trigonometric solutions.

    Lewisham on
  • supertallsupertall Registered User regular
    edited November 2007
    Thanks for all the great advice so far. I think I'm going to have to do some more research on software engineering.

    supertall on
  • SavantSavant Simply Barbaric Registered User regular
    edited November 2007
    Software development as a whole can be a bit of a beast compared to just programming. There's no surefire or easy way to do it outside of trivial problems, although there are a lot of different methodologies that try with varying success.

    I'm a bit of a noob software engineer so I won't get into those aspects too much deeper, but my main background in college was math so I can talk about that a bit more. Math, of varying types, can be exceedingly useful in software, however not all software development requires more than basic understanding of certain aspects (like different bases like binary and hexidecimal, extended arithmetic). Algorithms tend to intersect with math, linear algebra is useful because a lot of things use matrices (especially computer graphics), prob-stat and combinatorics are fairly common applications of software, and numerical analysis can be a lifesafer if you deal with floating point a lot.

    Savant on
Sign In or Register to comment.