1. Not finding help here? Sign up for a free 30min tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

How does Computer programming change?

  1. Sep 18, 2007 #1
    I love computer programming. At least the kind I've done so far. I can stay up all night trying to figure out the solution, because I enjoy it; it's not work.

    What scares me, is wondering if that love will carry forward to large scale projects, where I am just one of a hundred programmers. Or, if that love will carry forward when I have to consider time/money. Any advice?

    Also, I seem to get conflicting reports of the job market for this field. Is it good? Bad?

    Thank you,

    P.S.

    When you're just one of a hundred programmers, what are some examples of tasks your given to code?

    P.P.S.

    Do all computer programmers end up with carpal tunnel, or with proper care, can you prevent it?
     
  2. jcsd
  3. Sep 18, 2007 #2

    mgb_phys

    User Avatar
    Science Advisor
    Homework Helper

    Like any other market there is always work for the best people.


    Avoid being just one of hundreds of programmers

    I spend a lot more time thinking and reading than typing - of course I might get carpal brain!
     
  4. Sep 18, 2007 #3

    D H

    User Avatar
    Staff Emeritus
    Science Advisor

    Or carpal eye syndrome, or maybe occupational visualitis. That's when you can't see going to work.
     
  5. Sep 18, 2007 #4
    You have a choice if you want to be 1 out of a 100 programmers. If you go to a big company, your "teams" will be bigger. Even at IBM the biggest team I've seen is 7.


    My uncle is also a software engineer and he's the ONLY programmer in the company, he names his price and they pay him it. Without him the company is a goner. Sure he has huge amounts of work but he enjoys it and has 7 kids and still pulls it off.


    While working at IBM all my projects have been solo or with another programmer.

    As mgb_phys said,

    If your good, don't worry about it, also if all you have to offer is your programming skills, then you might want to worry.

    You can be an excellent programmer but if you don't have people skills you won't get far.

    Theres another Intern/co-op who shares an office with me that all the managers hate. He gives them an attitude and isn't social at all, I doubt they will ask him to come back for another internship.


    The one big thing I notice is I always take my work home, its just the kind of person I am though.
    I get project done in 3 days that should be done in 3 months (like my last project).

    If I have a programming problem I don't stop until its solved and I enjoy doing it.

    Sometimes I can't believe I get paid to do this
     
    Last edited: Sep 18, 2007
  6. Sep 18, 2007 #5
    Thank you so much,

    So what do I major in? Computer Engineering or Computer Science?
     
  7. Sep 18, 2007 #6
    Also, according to occupational handbook software engineers make a lot more than programmers. Do you start out as programmer and then become a software engineer? Or do you just focus on different things in school. Thanks again.
     
  8. Sep 18, 2007 #7
    If you want focus mainly on Software Engineering/coding, go into comp sci.

    if you want to do hardware and software go into comp eng.

    Comp Eng to me was boring, its more like EE with circuit design/processor design, low level programming/hardware description languages like VHDL/Verilog. I actually use to be a Comp Eng major up until I actually found out what they would be doing as a career.

    I'm not sure how you get the title, Software Engineer, on my job title, is Software Engineer but I do the same thing a programmer would do.

    When I think of a software engineer I think of more design, almost like a Software Architect.

    When I hear programmer I think of someone with a 2 year degree from DeVry. But I'll still refer to what I do programming and I'm basically a "programmer".

    But it doesn't really matter, it all depends on the job. If the job is looking for a "software engineer" it will list the skills it wants, if you fit those skills then you are a "software engineer".

    Its just a title on paper. They do have Software Engineering majors, but some people frown on them because it hasn't been around long enough to get much credit, also there are very few accredited SE colleges in the US.

    East cost, I can think of 2, RIT and CMU.
     
    Last edited: Sep 18, 2007
  9. Sep 19, 2007 #8
    I think there are a number of Computer Engineering courses that have a software/hardware emphasis choice, and more where Comp Sci falls under the Engineering department (mine does both, at least). I don't think the distinction matters that much to employers, more what you can do and especially how good you are at solving problems (and whether you can work methodically and be productive, but that usually comes with a few weeks on the job or a good internship).

    I believe the distinction is mostly one of experience, same thing that distinguishes a senior engineer from a tech with the ink still wet on his degree. Having graduate study in Comp Sci or related fields (Math, App Math, Phys, EE, et cetera) under your belt vs. the guy with a cert from DeVry probably doesn't hurt either.
     
  10. Sep 19, 2007 #9

    mgb_phys

    User Avatar
    Science Advisor
    Homework Helper

    Be careful that these are often marketing terms - the college uses whichever was fashionable when the course was last renamed.
    Look at the actual syllabus.

    Personally I would say do maths with a CS minor if you want to be treated better than the rest of the herd.
     
  11. Sep 19, 2007 #10
    Knowing it's not about the degree, but what you can do, is very helpful. Thank you. What should I be doing for the next four years to make sure I am a good software engineer? I have a lot of flexibility in adding classes to the required ones.
     
  12. Sep 19, 2007 #11

    mgb_phys

    User Avatar
    Science Advisor
    Homework Helper

    Learn langauges that aren't used in industry - like Lisp or Scheme, there is more to programming than just knocking out another Java app.

    Read books about software engineering, Beautiful Code, Code Complete, Programming Pearls, Prgamatic progammer (check JoelOnSoftware for a comprehensive list)

    Learn about testing, debugging, source control and other engineering tasks that don't get taught much - the best way to do this is probably to work on an open source project.
     
  13. Sep 19, 2007 #12
    Any experience you can get beyond the concepts covered in classes is good. Get into a REU or internship, so you're not totally inexperienced once you leave college. Solo projects are good, group projects are much better. Experience with pair or group programming beyond just doing class projects is important. Some programs have a "senior project" requirement, which attempts to address this (that, and giving the department a way to show off and attract new students...) but you really want to be doing more of this than just that if you can be. You're not going to learn much about breaking up a months-long group project into a series of manageable tasks in class.
     
  14. Sep 19, 2007 #13
    I would actually not recommend this, at my first interview with IBM (there was like a total of 6). All he cared about is what Computer Science courses I took, I brought up a math course, discrete math which is direct at Computer Science and he said, "Oh thats just another math class isn't it?" I don't care about Math classes, just core programming courses.


    All he wanted to know is what kind of projects I've done, what core computer science classes I took, (not the basic intro/intermediate programming), do I do any out of school projects, etc.

    The guys interviewing you are managers who haven't coded in awhile, they want to hear key words in the Software Industry, not abstract math classes.

    So when it comes down too it, I would say the one with more computer science skills rather than abstract math would be the one who gets the job (if you want to be doing Software Design/Engineer).

    If your developing algorithms perhaps math major would be better.

    Another thing I don't agree on. IBM wants Java programmers, Google asks several questions on how you would solve something in C on the interview. You don't have a chance to even write anything down, you solve the problem in your head, and say the exact syntax, if you miss a slight syntax error you don't get another question. (it sounds easy if you are writing it down).

    If IBM wants someone who is skilled in Java Network programming/Java Server Pages/Java Server Faces/Java Servlets/Portals, who is going to get the job?

    The guy who knows LISP/Scheme or the guy who knows the popular Java technologies?

    I do agree Java is so so easy to program in thats why its so popular and its cross platform. C++ has nothing over Java.
    I say if you want to really appreciate Java, Learn C, which is still used in the industry. I don't know many Software Industries that would even touch LISP/Scheme unless it was in AI or something more scientific.

    I do strongly agree here though:
    All the projects I work with use CMVC, you have to get use to checking in and out your code and doing builds that dont break other people's code. Testing is a job in itself. I know several computer science majors that went to grad school to focus on testing and are working in the testing/automation area at IBM.

    I say if you want a job, Learn what the Industry wants, if you want to stand out, be exceptional at what you do.
     
    Last edited: Sep 19, 2007
  15. Sep 19, 2007 #14

    mgb_phys

    User Avatar
    Science Advisor
    Homework Helper

    And in another office thet were interviewing a single maths PhD for a much more interesting role and were asking him, ever done any programming? Never mind you will soon pick it up.

    If you want to walk into a boring entry level Java CRUD job, then just pick the cheapest Java-school near you. In fact don't bother wasting 3/4 years in school just buy a copy of "Java in 17seconds for dummies" and learn the acronyms.
    Remember that's what IBM want this year, a few years ago they wanted C++/MFC/Crystal a few years before that they wanted Cobol/CICS/MVS.

    The OP wanted to know what to do in order to avoid being just another Java CRUD programmer among 100s.
     
  16. Sep 19, 2007 #15
    If you look at the OP, he finds PROGRAMMING, not boring but loves it.

    As do I. What you find interesting, I find boring.

    I can sit and code for hours on end and not get bored once but more excited as the program progresses. So I don't find myself being in a "CRUD" job.

    Just because you have a PhD doesn't mean you'll get hired. Infact, you have a bigger chance of not getting hired getting a Phd.

    They will be forced to pay you more and you'll be in an even more specialized area with less jobs available to you.

    He never said he loves math, or anything about going to grad school.

    As I already said,
    I say if you want a job, Learn what the Industry wants, if you want to stand out, be exceptional at what you do.


    Perhaps you don't know what it takes to be a Software Engineer, you learn what is popular, you learn a new language every year so you can stay on top.

    On a resume, you can't put, I'm a good problem solver. They filter out your resume based on key words, if you don't meet a certain number of those key words, you don't even get looked at.

    You adapt to the industry, the industry doesn't adapt to you.

    if you want to stay in research for the rest of your life, thats fine, but if you want to make $$$, start out as a Software Engineer, advance to Project Lead, then to project manager, then to development manager,etc.

    All of the managers I've talked to started out as developers and worked their way up, then later getting MBA's that the company payed for.
     
    Last edited: Sep 19, 2007
  17. Sep 19, 2007 #16

    D H

    User Avatar
    Staff Emeritus
    Science Advisor

    The Association for Computing Machinery (one of the, if not the, leading professional organizations for computer scientists, programmers, etc.) identifies five distinct degree programs. From http://www.acm.org/education/curric_vols/CC2005-March06Final.pdf:
    • Computer engineers should be able to design and implement systems that involve the integration of software and hardware devices;
    • Computer scientists should be prepared to work in a broad range of positions involving tasks from theoretical work to software development;
    • Information systems specialists should be able to analyze information requirements and business processes and be able specify and design systems that are aligned with organizational goals;
    • Information technology professionals should be able to work effectively at planning, implementation, configuration, and maintenance of an organization’s computing infrastructure; and
    • Software engineers should be able to properly perform and manage activities at every stage of the life cycle of large-scale software systems.
    What degree you pursue depends on your interests and on the availability of the degree. Almost every school offers a computer science degree; most offer computer engineering (maybe as a specialty of electrical engineering). Fewer schools offer programs in software engineering.
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?