Wow did I get slapped in the face :(

Discussion in 'Mac Programming' started by chrono1081, Aug 12, 2011.

  1. chrono1081 macrumors 604

    chrono1081

    Joined:
    Jan 26, 2008
    Location:
    Isla Nublar
    #1
    So, I'm about 10 weeks out from graduating college (a big feat since I've been to three different schools in 7 years ;) ) and I've been desperately trying to beef up my skills.*

    C++ is my strongest computer language but it seems like I can never find any books that teach more in depth about it. I've been through countless books only to finally grab the "Thinking in C++" series. It was like a complete slap in the face.

    I feel like I know nothing!

    Never before have I seen books talk about inlining functions (I knew they existed, just not how to use them). I've never seen any books utilize exception handling, and numerous other things that this series does.

    My question is if I make it through these two books (which I'm currently working at) will that give me enough knowledge to pursue entry level programming positions? I have no professional programming experience, only professional IT experience.

    I know thats kind of a broad question but I was wondering if anyone had any experience in a situation like mine : /

    Don't get me wrong, I know the main parts of C++, classes, functions, pointers, memory management, data structures like lists, queues, etc etc and have written a lot of C++ code for things like a mini game engine, small C++ games written using SDL, and numerous other things. I just feel like I don't know enough : /
     
  2. lee1210 macrumors 68040

    lee1210

    Joined:
    Jan 10, 2005
    Location:
    Dallas, TX
    #2
    You likely didn't go to school for computer programming. If you went to a University you went to learn to think and demonstrate a commitment to completing the task. If you went to trade school, they should have taught you the mechanics but 7 years seems unlikely.

    You're going to get hired as a software analyst or entry level programmer/engineer and you'll learn what they need you to know on the job. Rarely does someone know all of a language. You need to be flexible and willing to learn, not know the nuance of one language. Hell, you may not even use C++ at all. Learning something new quickly is way more valuable.

    -Lee
     
  3. AlmostThere macrumors 6502a

    #3
    Yeah, I guess you have ... but on the plus side, it is a *good thing* and it will happen again. It happens in every field to anyone who gains a deeper learning in any field. Try learning any science from school to post-grad level!

    If you want books for C++ in depth (although a little out of date, now?) go for
    Modern C++ Design by Andrei Alexandrescu
    Exceptional C++ by Herb Sutter

    Both these "slapped me in the face" (omg, I just looked them up on Amazon and it told me how many years ago I bought them ... suddenly feeling rather old!)

    You have enough skills to get an entry level level job.

    Keep applying for jobs, keep learning. Every developer was crap once, some still are, they still have work. Read forums with a pinch of salt. There are geniuses out there, they are not good benchmarks. Much of the world runs on poorly written software. It is still turning.

    Be aware of what you don't know, don't play down what you do.
     
  4. gnasher729 macrumors P6

    gnasher729

    Joined:
    Nov 25, 2005
    #4
    Bjarne Stroustrup got a job without knowing C++ :D
     
  5. pilotError macrumors 68020

    pilotError

    Joined:
    Apr 12, 2006
    Location:
    Long Island
    #5
    Every job you get will teach you something new. Some places do some pretty hard core development, others are barely a step above C. You usually pick up one or two new things along the way just seeing how others solve problems.

    You'll even have your own moments of Brilliance along the way. It's always a nice surprise when you look through code and are really impressed, then look at the comments and realize you wrote it several years ago!

    I wouldn't worry about it. Your moving in the right direction, just be familiar with things like inlining, you should know exception handling, and do yourself a favor and pick up a book on STL (Standard Template Library).

    It also wouldn't hurt to pick up a scripting language, something like python or perl.
     
  6. zimv20 macrumors 601

    zimv20

    Joined:
    Jul 18, 2002
    Location:
    toronto
    #6
    i work at a small consulting shop and am part of the hiring team. though it's nice to find people with skills in the language we use, it's not necessary, as that can always be taught.

    we look for devs who know theory, understand OO concepts, can speak intelligently about technology, and who do interesting development in their spare time.

    if i were interviewing you, i couldn't care less about your knowledge of inline syntax. i would be much more interested about your knowledge of the heap and the stack, and how you might go about solving a particular problem. speaking intelligently about the difference between an inheritance-based design and a composition-based design would be excellent for someone entry-level.

    hth.
     
  7. mydogisbox macrumors member

    Joined:
    Jan 16, 2011
    #7
    I would say you're better off than probably 80-90% of college grads in your field. From seeing your posts in this forum, I'm pretty certain you're better off than I was when I graduated.

    I just got hired for my second job and they asked me a bunch of general programming questions about OO concepts, algorithm performance characteristics and data structures like linked lists. You can find lists of common programming interview questions online. My advice would be: do your homework (i.e. prepare for the interview by prepping for common interview questions) and just be excited about programming. Excitement counts for a LOT.
     
  8. zimv20 macrumors 601

    zimv20

    Joined:
    Jul 18, 2002
    Location:
    toronto
    #8
    great advice. if a candidate shows even a small amount of knowledge about what we do, great. if they can ask intelligent questions, even better.

    if we can communicate clearly about how they would fit into the organization and how they can contribute, that's huge. often people spend energy selling us on what they can do, but don't incorporate into that what we tell them about the position. iow, listening skills are valued and noted.
     
  9. Sander, Aug 13, 2011
    Last edited: Aug 13, 2011

    Sander macrumors 6502

    Joined:
    Apr 24, 2008
    #9
    There are quite a few out there. Although rather old, I'd recommend you get the "Effective C++" series by Scott Meyers. Although some of the material presented may be stuff you already know (which is good too - this will give you the feeling you know at least something :) ), I like the way the books are structured with simple tips and guidelines, each explaining exactly why a certain pattern should be followed or a certain pitfall can be avoided.

    Then, there's "C++ Common Knowledge" by Stephen Dewhurst. The nice thing about that is that its cover texts says it's specifically intended to save you time when your coworkers come to you with C++ questions, so you can say "Oh I don't really have time right now but it's explained in chapter 7 in this book". That means you can leave it safely on your desk (as opposed to the "XYZ for Dummies" books ;) )

    If you read Alexandrescu, even after years of being productive in C++, you will feel like a child again. In the "kid in a candy store" sense. "Imperfect C++" by Wilson is often neglected but has some very nice stuff as well. And "Exceptional C++" has already been mentioned - worth its weight in US bank notes as well.

    Oh, and:

    C++ is like that. Some people consider it the major weak point of C++: The language and the standard library are huge, and it's often said you can never master all of it. You could also say that venturing into C++ means you'll have new exciting stuff to learn every day for the rest of your lifetime.
     
  10. chrono1081 thread starter macrumors 604

    chrono1081

    Joined:
    Jan 26, 2008
    Location:
    Isla Nublar
    #10
    Thanks everyone for the words of encouragement :)

    I'd love to spend all day beefing up my skills but since the school I go to hands out ridiculous amounts of work (about 100 hours worth a week) I'm not going to be able to progress as fast as I want until October 23 (my graduation date ;) )


    Thats the type of job I'm hoping for (entry level programmer). I can learn new languages easily as I have experience also in C, Objective-C, Visual Basic and x86 Assembler (I don't remember much of them but I've used them all at one time).

    I ordered Exceptional C++, it came along with my "Thinking in C++" series when I ordered it. I can't wait to get into it.

    I know Javascript. I'm no expert but I use it frequently when working with Corona and with Unity. I'd like to put it on my resume but I have to figure a way to word it so it shows I'm familiar with it, without coming off sounding like I'm an expert in it : /

    This is excellent information! Thank you. I would be able to answer all of those (or most, depending what the problems would be).

    My friend who is a programmer also said I know more than most who are fresh out of school, maybe its a mental thing with me. Thank you for the summary of questions you were asked during your interview :) I do need to go over some more abstract data structures which will be on my list.

    Thanks so much for the book recommendations! I usually get through a book a month so I will put these on my list.
     
  11. lee1210 macrumors 68040

    lee1210

    Joined:
    Jan 10, 2005
    Location:
    Dallas, TX
    #11
    Honesty is important, but don't play down your skills and experience. I have "strong in" and "familiar with". I might have had a third "some experience" with that I removed due to relevance, increased familiarity, etc. I'm not saying this is standard, I'd just as well remove particular languages, I am not a Java Programmer or a C Programmer, I'll program in whatever language I need to. I'm afraid to remove them altogether in case the keyword bot requires an entry. My point is to include all relevant info. I've never said expert because you never know who might be interviewing. If they are a real ass they might ask you about some Byzantine feature that no one uses because you said you were an expert. Say "hobbyist experience with" or "some familiarity with" or whatever you feel comfortable saying, but don't exclude technologies.

    -Lee
     
  12. chrono1081, Aug 14, 2011
    Last edited: Aug 14, 2011

    chrono1081 thread starter macrumors 604

    chrono1081

    Joined:
    Jan 26, 2008
    Location:
    Isla Nublar
    #12
    Thanks for the great advice! I am redoing my resume at the moment to reflect this. I paid to have it professionally done and wasted $300. It comes off making me sound to expert in many areas. (It doesn't technically lie, but it just doesn't feel accurate to me.). I have a HUGE problem with lying on resumes.

    When doing IT work I never had to rely on my resume that much, most of my jobs were obtained by previous co-workers recommending me due to knowing both IT and knowledge of high end software packages so I often got jobs supporting machines for digital artists and things.

    Now that I'm trying a complete career switch things are a bit different ;)

    EDIT: I just finished my new cover letter and I feel a MILLION times better about it. It more accurately reflects my skill, lists the projects I've done and explicitly states they are school projects. Sure it may not get me as many calls but I don't care. I prefer honesty.

    Now on to the resume...
     
  13. seamuskrat macrumors 6502a

    seamuskrat

    Joined:
    Feb 17, 2003
    Location:
    New Jersey USA
    #13
    Fear not. College programming majors don't actually learn much real world usefull knowledge. I was a dual major with computer science being one of them. I learned years out of date languages and development systems. I also feared I had no real world skills.

    The relaity is you learned critical thinking, problem solving, good documentation, program structure, best approaches and design, and high level concepts.

    learning the syntax of a particular language or the fine details of an IDE come with use and practice.

    An entry level job is just that - ENTRY LEVEL. If you are a code ace, it is not entry level anymore.

    You will do fine, learn on the job, get that crucial experience under your belt, and gain confidence.

    You can also seek out an internship. It may keep you destitut a few more months but it solves the chicken/egg conundrum of some entry jobs requiring experience.

    Just remember you were taught by professors who studies 10 to 20 years ago. They learned from professors who studies 20 to 30 years ago. Many professors do keep up with modern theorey, but many teach methods and foundation skills, not code syntax and hard code. Some elite schools where they write this stuff teach bleeding edge (MIT, CalTech, Stanford, etc.) but your average university will get you situated with the foundation t learn to code well. Plus, I suspect the majority of colleage computer science professors have not writen a true code project in some time. Yes, many do but the majority are theorey based and rarely get to exercise their core skills outside of a classroom.

    As a former professor (bilogical science) with a few advanced degrees I can say that professors, even at elite schools are not infallable. They are human too, and have time constrains, home issues, stress, etc. While many do try to keep up with the latest trends in journals, tradeshows symposium, etc. you just can't keep up with it all. Life is a lifetime learning process and anyone who tells you otherwise is an ignorant fool. I amnow in indusry expressly because I felt I was loosing touch with the theory and needed to apply it to the real world.

    YOu will get that irst job, learn both good and a few bad habis and move up the job ladder and in 5 years look back and ponder what the big deal was about all those college course.

    Good luck.


     
  14. chrono1081 thread starter macrumors 604

    chrono1081

    Joined:
    Jan 26, 2008
    Location:
    Isla Nublar
    #14
    Thank you guys for all the great advice!

    I polished up my resume and sent it out to a few places. I've also been brushing up on programming questions that could be asked. This will be weird if I actually manage to get out of the IT field and into development ;)

    I'm hoping hiring managers will give me a chance. One of the three schools listed on my resume is not highly thought of and I hope it doesn't hurt me. In the mean time I've been working on personal projects that show my knowledge in C++, OpenGL (which needs improvement but I'm getting there) as well as game development since thats what I originally focused on in college.

    Wish me luck! :)
     
  15. dasmb macrumors 6502

    Joined:
    Jul 12, 2007
    #15
    Don't get a job in game development. It's a horrifying industry. Low pay, high hours, bad code and most of the time you're working on a project you will hate.

    Knowing how to design, problem solve and build communicative interfaces is more important than any language. It's expected that you will pick up new languages and APIs almost daily; time spent mastering a language is rarely of high value.

    After all, let's say you become an expert at C++ syntax before you master OO. You start inlining everything and writing sections in assembler. Congratulations, your defect count is now higher, your code less readable and therefore harder to maintain, and your program still sucks because it's really quick, but factored incorrectly.

    But come on man do learn exception handling. Finish the Thinking In books and then grab Code Complete or the Pragmatic Programmer. Once you've got that, read and fully grok Clean Code, then read up on either Test Driven Development or Domain Driven Design. If you get through all of that, you'll be a better programmer than 90% of FOSS devs.

    PS: Just to underscore the point -- most modern compilers won't care if you inline or not.
     
  16. hua052011, Feb 25, 2012
    Last edited: Feb 29, 2012

    hua052011 macrumors newbie

    Joined:
    Feb 25, 2012
    #16
    Hi,

    Good ideal, pls try to keep posting. I like this topic very much and I will digged this one. Tks again.

    If you want to get more materials that related to this topic, you can visit: Compliance officer interview questions


    Best regards.
     
  17. thundersteele macrumors 68030

    Joined:
    Oct 19, 2011
    Location:
    Switzerland
    #17
    I agree with most others here - the language is secondary, and it might or might not help to be an expert in C++.

    Anyways, it might be useful to get some experience with an interactive/interpreted language like Python, Ruby, Perl, PHP, or even Java. It might be useful to know something that is not a C derivative.
     
  18. Mac_Max macrumors 6502

    Joined:
    Mar 8, 2004
    #18
    Bruce Eckel's Thinking in C++ was also the book that gave me a nice kick in the butt and massively improved my programing skills. He actually offers his books in free downloadable formats on his website. I'd love to see an updated version of Thinking in C++ that covered the latest updates in C++11 but my understanding is that he mostly works in Python these days.

    You probably will find the Going Native 2012 talks interesting:

    http://channel9.msdn.com/Events/GoingNative/GoingNative-2012

    It's hosted by Microsoft but doesn't contain much MS specific schpeel (most of it coming from Herb Sutter & Steven Lavavej since they're MS employees). Actually of interest to Mac devs is Chandler Carruth's (a Google employee) Clang talk. I found the talks Bjarne, Steven, and Chandler gave to be the most informative individual talks and the final group panel was also very interesting.
     
  19. nick9191 macrumors 68040

    Joined:
    Feb 17, 2008
    Location:
    Britain
    #19
    I'm on the short list for a graduate position working as a Java software engineer. Fairly basic Java skills is all I need, they'll teach me the rest on the job so I've been told. On my CV I didn't attempt to lie about my Java experience, I can program, I've developed Java applications before, I know most of the different concepts and how they work. I'd say I'm still below intermediate as far as SE + knowledge of Java goes.

    TL;DR, you're fine, or I'm screwed, one or the other. Probably the former, let's hope :)
     
  20. robvas macrumors 68020

    Joined:
    Mar 29, 2009
    Location:
    USA
    #20
    Write lots of code. Complete every program you start no matter how small. Write some games if that's what you are looking to get into - simple games like Asteroids and Pacman turn out not to be so simple!

    The more code you write the more experience you have which is great for interviews, and writing code all the time keeps things fresh in your head. Being able to answer a question or fix example code in an interview is a lot better than saying "I don't remember it but I used to use it!"
     
  21. Sander macrumors 6502

    Joined:
    Apr 24, 2008
    #21
    Always fun when you browse a thread with an interesting subject and get ready to post a reply, then come across a post by yourself and realize it's a resurrected thread :)

    On thing I didn't mention in my previous post and which may turn out to be worth a few extra brownie points when interviewing, especially for an entry-level job: Know a little bit about processes and things like source control tools. The problem with those is that you probably didn't need them for your hobby or educational projects, but being aware that there is such a thing as a development process and a source control system is very helpful. I found that with new hires straight out of college, the biggest stumbling block is not the matter of how to efficiently design a linked list traversal algorithm (the stuff you may traditionally be asked to write on the whiteboard during an interview) but "how do I figure out the issue tracking system", "how do I get my code checked into the repository", and "what's a scrum"...
     
  22. robvas macrumors 68020

    Joined:
    Mar 29, 2009
    Location:
    USA
    #22
    You should be using them for personal projects. Git is the popular one right now but most companies are using svn and others.
     

Share This Page