Life within the industry.....

Discussion in 'Mac Programming' started by NRose8989, May 24, 2009.

  1. NRose8989 macrumors 6502a

    Feb 6, 2008
    This may be in the wrong spot because it's not a technical question, so bear with me.

    A little back ground... I'm currently a junior in college majoring in computer science.

    I just got done with a assignment written in C (C99) and basically I haven't gotten a lot of sleep the past couple days and my brain feels like mush, So here I am on catching up on MacRumors.....

    I was wondering what the opinions were from people who are working within the industry (meaning programmers), what is life like after college? Do you find yourself with strict deadlines and cramming to get something done? How did your college experience compare to your real world job?

    Not that it's going to make me change my major because I love programming. I just want to know what is like out in the real world....
  2. sushi Moderator emeritus


    Jul 19, 2002
    I think that you will get a variety of answers to this.

    Overall it seems like programming related jobs have gone to more of the 9-5 mentality over time. That is comparing from the 70's until now.

    It does depend on where you work and the type of programming that you do. Places like Apple and Microsoft still have the 24/7 culture in them where you can program until you drop. Sleep in your cubical. Smell. Fun stuff.

    Aerospace, for example, is a completely different beast. Software safety and reliability are keen so the development process is somewhat different.

    I've friends who are EEs that develop Assembly language projects for running power stations, generators, emergency systems, and the like. Programmers in these areas generally need engineering degrees due to the application.

    What area are you looking at going into? Off the top of my head I can think of these:
    • OS.
    • Network.
    • Vertical applications.
    • Embedded systems.
    • Control systems.
    • Consumer applications.
    • Games.
    • Financial.
    • Measurement systems.
    • Data analysis and mining.
    • Quality management.
    • Quality control.
    • Database development, management and maintenance.
    • Navigation systems.
    • Communication systems.

    Each industry will have it's own particulars and environment.
  3. lee1210 macrumors 68040


    Jan 10, 2005
    Dallas, TX
    I'm not a mod, but I find this pretty on-topic. There have been a number of threads relating to pursuing programming from academic and professional standpoints.

    May I ask where you're studying? I still have an interest in what goes on in academia 5 years out, so it's just out of curiosity that I ask.

    Assuming you're on a 2 long-term per year schedule, you're probably finishing out your junior year this month or next. If your experience is anything like mine, the last year has been filled with these sorts of programming jags. You've probably had to because you do 10-20% of the project over the first week or so thinking you've done 40-50%, then end up doing the last 80-90% in the last few days. A lot of us do this. Hopefully you are still young and you can do this without much in terms of ill effects. =) Your senior year isn't going to be better/easier/less work. Quite the contrary. So brace yourself, and try to institute some serious time management next year.

    My last semester I had OS and compilers. Both were very heavy on programming. I did a poor job of time management, and always worked on compilers projects first. I got As on the tests in both, but terrible grades on the OS projects, because they suffered from lack of time spent because I prioritized the compilers projects. I got an A in compilers and barely squeaked a C in OS (anything less and I would have failed, and hence not graduated).

    If you're in the US, this should be a long weekend for you, so hopefully you can get some sleep and recover a bit before going back into the fray. Hopefully you don't have new projects you should be working on, but chances are you do.

    Not as good as life before and during university. There are a lot of responsibilities (I worked during school, but it is not the same at all). You don't have access to the wealth and concentration of smart people like you do during uni. I work with some brilliant people, but there's maybe 6-10 amongst a company of ~100 that I can hold an intelligent technical discussion with. At uni there were some students that were there because they thought they could make a buck programming, but they were easy to spot. Otherwise my peers in (and out) of the CS program were smart and driven, and were great to spend time talking to, whether or not it was about what we were studying.
    On top of that, having access to professors that were world-class in their field and grad students that were acting as TAs that had a real passion for what they did was great. I wish that I had taken advantage of it more. I wish I had spent more time during profs' office hours just talking to them. That was one downfall of working my way through school, there just wasn't as much time to do things like that. In any event... you still have a year left... if professors or outside folk give talks, go. If a prof has office hours, go. When you graduate, you'll suddenly find that you don't have as ready access to people that are doing cutting edge research in AI/Systems Design/OS/etc. Don't stick to the CS department, either. Hopefully you had to take a few EE classes, so you might have access to some of them. Hopefully you had to take some philosophy/ethics classes, so you have access to some folks in there. I had some of the best discussions/debates of my academic career not in a CS course, but in a Computer Ethics course in the Philosophy department.
    That being said, I still program all the time, and still devote time to reading about new technologies, learning about new languages and language design, etc. and I am still passionate about it, so it's not all bad.

    Yes. I don't think businesses could survive without deadlines. Code is very rarely done in the eyes of the programmer. It could always be refined. It could always be re-done with some cool, new, whiz-bang technology. It could always use more testing and more bug-fixing. But if it was in the hands of the programmer, it would never ship, or would ship 10 years later than competitors. Are some of the deadlines unreasonable and perhaps borderline insane? Absolutely. For the better part of last summer, myself and half a dozen of my colleagues (from development, product management, QA, etc.) were basically locked in a room to get a particular phase of a project completed due to looming deadlines. It wasn't fun, it wasn't easy, it was not good for morale, but we got things done. That is not normal working conditions, though, and I would not stay long if that was a protracted situation.

    Dissimilar in almost every way. I didn't learn to program in school at all. I learned how to solve problems, think about things, break things down, etc. I learned enough of a few languages to get projects done. I did not really learn how to program and debug. There were not "how to write C" or "how to write Java", etc. courses. It was expected that if a project had to be done in Java, if you didn't know it you learned it. If it was haskell, learn it. There would be resources provided, and occasionally a TA would have mercy and hold some sessions outside of class reviewing a language if a large contingent of the class was unfamiliar with it. A professor never said to me "this is how you write a for loop" or "this is the criteria you should use to decide if a member variable should be private".

    When i graduated I was a terrible programmer. I got a job as a software analyst, which where I work meant "you fix the code that's broken in production". I had to quickly teach myself C (I knew some, but not a lot), Fortran, Perl, SQL, Javascript, bash scripting, etc. Not once have I wished that I was taught these things at university, though. It seems like a huge waste of time. Understanding the concepts, and spending time exploring that, and how to write algorithms, implement existing algorithms, optimizing for execution time vs. memory, etc. was a much better way to spend the short time I had there. Learning a programming language is figuring out the syntax. That should not be that tough. Learning a particular API and the "zen" of it might take a bit more, but hopefully the author(s) documented it well enough that you can figure it out.

    Another thing you learn quickly in industry is that all of the things you think people should do is not at all what you'll run into. A dirty secret no one really tells you is that you're going to adopt old code written by fools that had no business writing code. Whether or not they have a CS degree is irrelevant. They seem to have an active hatred for those that will have to maintain the code. You will have to develop skills for reading, understanding, and debugging code that is not your own, and markedly terrible. This is also a crash course in what not to do. Hopefully you will see things that make your eyes bleed and it will leave an impression on you so you will never repeat such things.

    Something else you'll find yourself doing is cursing the author of a chunk of code to no end. "How could they be so stupid? I'm going to look through the source control logs, and find the person that wrote this and beat them severely about the head. A-ha, here's the revision! Now who committed this?". You will find that it was you. If you do not have this experience, chances are your skills are not progressing and there is a problem. If I ever look at code I wrote 2 years ago and don't think I could write it better now, it was either completely trivial or I have been doing something wrong for the last 2 years, because my skills are stagnating or declining.

    That is great to hear. If you did not, you'd have a painful career to look forward to. I've worked with people who love programming, and would do it "anyway" if it wasn't their job, and I've worked with "do it to put food on the table" types that revile programming. The latter are miserable all the time that they are programming, and would rather be in meetings, etc. than actually at a machine writing code. It is not a good existence, and that kind of attitude is detrimental to everyone on a team. I'm not saying that everyone that works a programming job must constantly be writing code outside of the office, etc. but being passionate about whatever job you do goes a long way.

    Keep at it. Get sleep when you have the chance (not at the cost of being an anti-social hermit, but strike a balance).

    Good luck.


    P.S. It took me 1.5 years to be promoted from Software Analyst to a Support Engineer position, and another year to be moved to development as a Software Engineer, and another year or so to be made the lead architect for one of our products. I mention this because I don't want you to be discouraged by thinking that you'll be stuck strictly debugging other people's code forever. There's still plenty of that in development, but there's plenty of new code to be written, architectural design decisions to make and implement, etc. too.
  4. Chirone macrumors 6502

    Mar 2, 2009
    i have to agree with everything lee said

    our university didn't teach us to program, they taught us to learn
    in my final honours year i ended up having to learn how to use c#, phython, SOAR, CLIPS, and DirectX, as well as non-programing related things like XSI, and LaTeX.
    all within 6 months....

    at work i have to learn objective C and get used to Apple, and learn how to use all the Apple things like Core Data and Core Graphics (hence why i post a lot of questions about them here...)
    it's definitely never a trivial thing, and the best part is... there's a pretty tight deadline and no one has ever seen this stuff before, so we're all lost on it together

    during uni/college (whatever you want to call it) you get your assignments and (hopefully) no one keeps throwing on new things to add or newly discovered bugs that have arisen from poorly implemented legacy code where everything was hacked together and if some little part changes the whole thing falls to its knees

    the worst part about uni/college is that you can spend weeks of sleepless nights and the only penalty you could get for not doing the work is failing the course (and having lost all that money you paid to take it)
    at work if you fail too much then BAM, you've just lost more than a course work load of money ;)
  5. jpyc7 macrumors 6502

    Mar 8, 2009
    Denver, CO
    My work experience has been mostly software engineering, although I did not take that many CS classes. My degree is in Electrical Engineering.

    I've worked for a Dept of Defense gov't contractor (doing both software and hardware), the Dept of Defense as a govt employee, internet service providers, and network equipment vendors.

    Deadline pressure has varied quite a bit and I think it just depends on circumstances of your employer. I think you'll get better at managing expectations and your own time.

    You'll have to do a lot of self-education after college. Like I said, I didn't take that many CS classes but I think one thing is that during university you don't realize what is important or possibly missing from your education. I graduated before there was a lot of object-oriented focus as well as design pattern theory. So I learned more stuff on my own after college and/or with help of my coworkers. What you'll have to learn will probably depend on your actual job.

    In college, I probably had 2 to 3 lab sessions devoted to debugging, but I didn't realize its importance. In the work environment, you'll be doing a lot of that. So learn those debugging skills (bisecting code, using all the features of debuggers, logging, code review).

    If you can, I would recommend working in Silicon Valley, at least for a while. That's where you'll find a high concentration of smart people who you can learn from. There's a small chance you can become rich too, but nowadays you can do iPhone or Android programming.
  6. NRose8989 thread starter macrumors 6502a

    Feb 6, 2008
    To answer some of Lee's questions, I'm going to school in Washington state. School hasn't really changed since you were there I guess. My classes usually consist of 2/3 theory (i.e. time complexity etc.) and the other third, depending on the class, will teach the some of the language as far as things going on in the background. The homework though is all about problem solving. Usually if the class is struggling to overcome a problem then the instructors may throw us a little hint but other than that, were on our own.

    Thanks everyone for the insight, I really can't wait to graduate, I've spent way to much time here in school.
  7. lee1210 macrumors 68040


    Jan 10, 2005
    Dallas, TX
    You will think you did not spend nearly enough time in another few years. While projects and things can be devastating to your sleep schedule, the rest of the experience definitely makes up for it. You may be "ready" to be done, but don't take your last year for granted.


Share This Page