Work as a C++ programmer
1 28 Aug 2018 22:06 by u/skruf
So after I found a company in April that does C++ (among other languages) programming, I got summer work at them. There I did some one-man-army research and made a few sample projects from the task I was given. I have no experience to show other than a shitty IRC client and some mediocre ordering system (a web page). Been tinkering around in the past 15-20 years with mainly C++ and passed the company's code interview last week. They hired me for until end of the year, and now I'm a week in with a team working with some C++ code.
Here's the thing. I've got no education in computer science (no bachelor), though I have a wide knowledge with information tech and many depths in computers; PC's specifically... I've never worked as a programmer, but I've experimented and read a whole lot about the subject.
So, how much is expected from a programmer? I mean, there are obviously different levels of complexity in a code, but how can I define productivity in such a job? I do have projects in which I've done planning, execution and completion for, but what I probably really need to ask is what do I even need to know? I tried to search the web and found some lists on wikipedia about topics... but I don't think using wikipedia as a single source of reading makes much sense.
Maybe running for a bachelor's degree wouldn't hurt, but until then I guess I have some catching up to do, as you can tell.
What the fuck have I got myself into...
20 comments
0 u/DeliciousOnions 28 Aug 2018 22:13
Don't buy into college at this point, just get some certifications if you're looking for shiny gold stars to put on your resume.
Programming is a very unique field and so it's hard to give a straight answer here - expectations may differ completely from company to company. There are different ways to organize programming teams and they have very different job duties, don't think that there is 'one' answer here.
That said: if you do good work, do your work on time, and get along with others you'll do fine.
If you make it into this company it shouldn't be hard to just ask, "what are the expectations for me and how can I present that to others."
But seriously dude, calm down. If you can pass their code exam and you've written a client that's solid, you've already got the skills you need. The rest is just working on your professional demeanor.
0 u/elcob32 28 Aug 2018 23:02
Seconded. I have been working as a programmer for 20 years (was literally my after school job in high school). I went to college long enough to realize they were a good 5 years behind the industry when it came to technology.
If you passed the companies entry interview you should be fine. Just pay close attention and learn as much as you can for the first few months, after that you can probably coast comfortably.
0 u/DinoRider 29 Aug 2018 03:11
I second this too.
One thing you may not realize is that it is normal in computer programming to learn specific languages and technologies on your own. The other programmers around you who have degrees sometimes have more knowledge of fundamentals and how things work under the hood, but they probably learned their practical C++ skills on their own or on the job just like you.
0 u/AnthraxAlex 28 Aug 2018 22:17
Theres lots of different types of programming. C++ will probably be more applicable in engineering type jobs where your dealing with writing software for hardware devices and maybe as a game dev although most of that is probably done in c# now in most shops or whatever the current mobile app platforms use. Id start learning python if your going into scientific programming or javascript if you want to do front end web dev type stuff.
0 u/germinator 28 Aug 2018 22:37
There are already some great comments here, but I will add a little more. I have worked with many new programmers, the ones who are college educated are not always the best. Some schools teach a lot of theory but don't really teach the pupil to design/engineer/program.
I can recommend three books that can help you be a better programmer, even if it is just opening your eyes to other ideas in programming.
Check out:
0 u/Salbuchi_2019 28 Aug 2018 23:37
You need to assess where you're standing. Did you lie in the interview? About what? Did you claim you're familiar with a technology you barely know about?
If they don't expect years of experience in any particular tool you might be ok just by not fucking up. If it's a big company brush up on your Indian English!
0 u/Gumbatron 28 Aug 2018 23:41
Wouldn't worry about a formal degree. I have a degree in Computer Science, but rarely ever use anything I learnt at uni in the real world (have worked as a professional developer for over a decade).
I suppose programming is as much a craft as a science, you learn far more by just doing, and talking to experienced people. If you're lucky, you'll run into some good experienced coders who can help you learn things faster (i.e. you don't need to make the same painful mistakes as everyone else).
If you are wondering what your employer expects of you, maybe just ask them. They know you don't have any formal programming training, but they still hired you, so obviously they have some confidence in your ability to code. I'd recommend learning about aspects of programming that interest you, no point learning about something that you don't like, then ending up getting a job doing the thing that you don't like :-).
0 u/watts2db 28 Aug 2018 23:57
be flexible and ready to respond to the needs/goals of the team
0 u/carlip 29 Aug 2018 00:20
from what i've always understood when they hire on a new person, depending on the product, the recruit will spend 3-6 months just learning the structure. i dont think they will really expect too much even in your first month. just keep your ears open.
0 u/vastrightwing 29 Aug 2018 00:32
You manage the boss. Never get into the trap of estimating tasks in terms of time. Say instead I think it's a 21 point task. I think in terms of agile. He'll think you know something. Make simple deliverables. Fake it until you make it.
0 u/Master_Foo 29 Aug 2018 03:24
Technically, nobody cares about your CS degree, they care if you can produce results. Nobody has ever asked for my degree. The only time it was ever useful was to get a green card in Japan.
So, if you even slightly suspect you might want to spend a couple of years in another country, a 4 year degree is going to be a requirement.
That being said, let's say you are a homeboy and hate sushi. Whatever the reason, you never want to leave the country. College is still a good option for STEM. Why? Because you'll have professors throwing high paying jobs at you left and right. Recruiters don't bother with the classifieds, they know every CS professor at every college in every state. Each semester they are going to be calling your professor and ask him to send them his top 5 guys. If you are one of those top 5 guys, you are going to get hired.
Out of the gate, you will be making enough money to pay off your student loans in a couple of years. No big deal.
If you try getting hired without a degree, you'll be searching for a long time and the pay wont be super great to start. The better long term solution is college. It gives you a more aggressive head start. Head hunters should be contacting you, not you begging the head hunters to notice you.
Think of college as an intellectually stimulating vacation and when you are done with that vacation you come back to the real world making much, much more money than you were making before the vacation.
0 u/Morbo 29 Aug 2018 04:39
Use this opportunity to grow. If you can learn a lot about pushing memory around in C++, you can pretty much land good C++ jobs any time you want. Programming in C++ is more about thinking about how to do things efficiently. Other languages accept a lot of slop but C++ will teach you to tighten things up. Once you have the basics of moving memory around you will have a better grasp at programming than most other programmers working in higher level languages.Take this time to learn the tricks the more seasoned programmers you work with know. If they have any grey beards around, definitely pick their brains as much as you can. The world need more good programmers with old school skills. You can get there if you apply yourself. As for the degree, learn the ins-and-outs of C++ well and you won't ever need a piece of paper to prop you up. You can do it. Just open your mind and code like mad to get the feel of it.
0 u/notenoughstuff 29 Aug 2018 06:15
Were you brutally honest about your qualifications and experience as well as lack of experience in different regards at the job interview? If so, it is alright, they chose to hire you and knew who they were hiring, just focus on improving and doing a good and responsible job. In my opinion, it is OK to say that you don't know a given topic, but you can learn about it if necessary, maybe in your free time - though that does depend on country, culture and company. If you weren't honest... well, I do not believe in "faking it until you make it", but it is your life and your responsibility, and things can be very complex. But still.
Reg. learning, I would recommend the other books mentioned in this thread, as well as Bjarne Stroustrup's http://www.stroustrup.com/programming.html , it is not just about the language but also about professional programming. Apart from that, build things in your own time, read code and topics online, and read forums like this and /r/programming - I know, reddit, but it still has value, at least for now.
But you should be aware that C++ is one of the harder, older and cruftier languages and are sometimes used in fairly challenging domains (though not always). Given that you want to work with C++, I guess you want to become a hardcore developer and/or work in embedded or HPC or similar (or game engines?). C++ is also somewhat weird - ensure that you learn at least two other somewhat different languages.
0 u/sguevar 29 Aug 2018 12:49
I work in Tech Support and I also don't have a bachelor's degree on Computer sciences. All I have is what've learned in my past years researching by myself. And I am always looking to know more.
Keep that instinct of yours to research and learn. You can learn by yourself or from others but a degree will not guarantee you will do a good job.
I have dealt with many IT's that are incompetent... both from the US and from India. Specially women. They are really annoying to deal with in the IT field.
You will be fine, keep learning!
0 u/psimonster 29 Aug 2018 23:36
https://teachyourselfcs.com/
0 u/skruf [OP] 01 Sep 2018 07:35
I just got very good feedback from one of the top coders, and it seems that things may go in my favor. I guess I am stressed because this is a line of work I've got no control over, yet... although work routines are falling in place now and I can be more relaxed.
Anyway, Thanks a lot for great answers from all of you! Each post have something nice. Will follow up on the books and web pages. I'm actually scouting for some material about theories around programming or computer science (such as algorithms and data structures).
0 u/Wowbagger 01 Sep 2018 19:03
Recommended reading: Grokking Algorithms Manga Guide to Databases (if you're into that sort of thing it's a good soft introduction) Design Patterns by Gang of Four Note: definitely don't worry about absorbing ALL of the ideas at once. Breadth first will do. Software engineering is a journey not a destination. It's common to run into new types of challenges even when you've been in their game a while.
0 u/the_art_collector 14 Sep 2018 05:42
My case is similar to yours where I practiced as a long time before getting into the field, although I started when I was very young. I got a CS degree on top of that, and I'd say it was totally worth the money since it filled in many gaps, and this kind of information can take months or years to absorb, anyway. But if you are disciplined and good at retaining information on your own, it might not make a big difference. Note that even after the same number of years of self-practice and a degree, I was barely hireable and spent a few years sparsely employed.
Programming is kind of a life-long journey, and it's not for everyone. It's really competitive in the developed world thanks to the global internet, tons of mature code written by still-working skilled developers, and shitty insourcing/outsourcing policies. The outcome of years of hard work can be billions of dollars or homelessness. It all depends on you, what you ultimately want, and where you are willing to live. Programmers are hard to evaluate worth-wise - I've received offers almost $100k apart right next to each other. In general if you are willing to sacrifice a few years of your life committing to projects on GitHub, you will probably be rather employable and not run into any issues concerning your credibility and value. My first "job" came from submitting a PR. And you'll find this is one of the reasons why so many companies have open source projects. One secret in this industry is that the truly skilled programmers often don't even waste time on a resume - they are that good. So it's a bit like fishing. Think sports - companies know the right superstar can be the difference between winning and losing.
Productivity is making your project bring in money/value. If you accidentally fuck up a database from a cloud provider, and a backup takes a day or longer to get running, that might cost the company more than what they consider you worth in a year. Same goes for working at a SJW company and getting caught (((saying the wrong thing))). There's all kinds of opportunities in this industry, but many of them are like doing time in the salt mines. Boredom. Disillusion. It can really wear on someone and in some cases drive them insane.
But if you have the right ideas and get them implemented, your suffering can end overnight.
0 u/Apokil 20 Sep 2018 13:59
What about Python? I think it is more prospective these days...
0 u/fedevela 20 Oct 2018 11:33
I expect my programmers to write code not for a machine, but for the next programmer that will read the code after them.