|
background:
For my major as a mechanical engineer I have to take some sort of intro to a programming class. I opted to choose C++. I never had any experience with programming at all prior to this.
After taking the class...it was an experience. It was a lot of work It was very frustrating It was hard
But it was a worthwhile experience.
I did enjoy it and I can't help but feel I should consider this career more than being a mech. engineer... However I only took a simple intro class...
So, I ask the programmers and the aspiring software engineers in the teamliquid community if I should consider pursuing the career and some word of wisdoms on what I should expect in this field.
tl;dr Is it too late to begin my quest to educate myself in this field...
edit: I am somewhat torn between java and c++ but leaning more toward c++ (idk if this is the more useful program for general coding) since i have some basic knowledge about it.
   
|
Are you still in school? Take some more classes on it lol.
IDK anything about your possible career in the field though, I'm just another MechE :p.
|
it's never too late.
the best programmers imo are self-taught, so if you truly enjoy then just go for it.
|
On November 10 2011 14:58 Megaliskuu wrote: Take some more classes on it lol.
I know but I just want to know more about the field just to satisfy my curiosity.
|
It's never too late for anything, but you should learn more about it, perhaps look up some stuff online and try to do some self-learning and see if you still find the more advanced concepts enjoyable and interesting.
I did the mistake of "thinking" I'd enjoy programming before I actually knew anything about it (with the exception of some basic stuff I looked up myself) and went on to do a university course in games programming. Turns out I didn't enjoy it as much I thought I would, and while I did manage to get through it all and am graduating in a month, I definitely don't think that I have too much of a passion for programming and might've been better off doing something else... I think.
|
On November 10 2011 15:16 ChronoCat wrote: It's never too late for anything, but you should learn more about it, perhaps look up some stuff online and try to do some self-learning and see if you still find the more advanced concepts enjoyable and interesting.
I did the mistake of "thinking" I'd enjoy programming before I actually knew anything about it (with the exception of some basic stuff I looked up myself) and went on to do a university course in games programming. Turns out I didn't enjoy it as much I thought I would, and while I did manage to get through it all and am graduating in a month, I definitely don't think that I have too much of a passion for programming and might've been better off doing something else... Kind of. Yea that is what i figured.
I have already started looking at some resources online. I am afraid of running into that trap where I think I like it but then later down the road regret it.
By posting this thread I am hoping someone can give me some resources and helpful advice and some quick info.
|
I started off as a ChemE major, and had the same thing happen as you. I took my intro programming class with no prior programming experience and really enjoyed it.
I dont know if this is an option for you (how far along in school and what your requirements are), but what I did was the following semester take my required ChemE courses along with the next Computer Science course.
After that semester I liked the programming courses much more and switched over. I'm really glad I did. Still a junior in college atm, going through the interview process and such... had an internship last summer and trying for another!
Happy to answer any questions you may have as to switching into CS (it will be a bit of an uphill battle, some people have been doing this forever).
its never too late to give it a shot, but don't jump in head-first without trying out a few other courses first.
|
Programming can be a lot of fun, but it will also be incredibly frustrating. There is a lot of banging your head against a problem until it finally caves. If you do get into it, be aware that you will be required to retrain yourself every few years to keep current with the latest languages and technologies. If that's not something that appeals to you, then I'd advise against it. Personally I enjoy it, it stops me getting bored and complacent.
It's also not something that you have to decide right away. Programming is largely something that you can learn on your own, there are some very good books and online resources. I would advise picking up a decent book on the language of your choice, and working through it. Then write a couple small programs on your own, because you'll hit issues that you never thought of. If its something you are still enjoying, then you can look into changing your major.
I'm not sure what the case is in the US, but in Australia, a CompSci degree is basically worthless. Doesn't teach you anything you need to know. It would be worth talking to some programmers to see what they recommend, and possibly some recruiters to see what potential employers are expecting.
|
Like how would i begin trying to teach myself?
Like just buy a c++ book and read it through? After i get the basics down, what happens? Like is there more advanced codes to learn? How do I know I have grown to be somewhat proficient?
|
On November 10 2011 15:22 heroyi wrote: Like how would i begin trying to teach myself?
Like just buy a c++ book and read it through? After i get the basics down, what happens? Like is there more advanced codes to learn? How do I know I have grown to be somewhat proficient?
Honestly the best way to teach yourself is to come up with a project that sounds simple and try and make it work. I worked with a friend on a simple android app. It taught me a TON about a lot of different things, and it helped me learn a lot. I spent a majority of my time on google figuring out how i could do things. But it helped me learn a lot on my own. I bought a simple Android programming book to get me started, but after that it was me and google to learn things. And my friend and I actually got really far on it before other things got in the way.
|
ok so you just went with the whole google shit out?
I feel like that isnt the best way to learn considering there will be holes in your knowledge.
And is c++ a popular program code to use?
Btw what do you mean by the language changes? Like new codes, an improvement?
|
On November 10 2011 15:29 heroyi wrote: ok so you just went with the whole google shit out?
I feel like that isnt the best way to learn considering there will be holes in your knowledge.
And is c++ a popular program code to use?
C++ and Java are both great languages to learn. Some places use one, some use the other. Eventually knowing both will be very helpful. But as a first language, either is fine.
Yes, there will be holes, but the classes you can take in school if you do decide to go that route will fill in the holes.
IMO a project is the best way to determine if its for you though, while giving you a broader knowledge and more fulfilling way to learn things. To me, just reading textbooks on languages is very dry and would turn me off of a subject.
To address your edit, yes the languages are constantly evolving. In fact, someone was just on our campus today speaking about the new version of C++ (C++ 11). Plus, there are so many different languages out there for so many different applications that there will always be a new one to learn and try to master.
|
|
On November 10 2011 15:35 Inori wrote: That said, to anyone that asks me "So is a degree in CS useless?", I answer - no, and I am planning to get it. BS is useless, but MS/Ph.D isn't. And you will need that degree if you'll want to work at something advanced (like NASA projects).
I would really love to know your definition of "useless" here.
|
On November 10 2011 15:35 Inori wrote: Programming will be one of the most wanted professions for the next 15-20 years at least, so it's never late.
As for how to learn it - I'm a self-taught programmer. Starting was hard, but once I got my first job, I never stopped improving (still am). Is it doable or not only depends on you as a person. Are you lazy or not. Do you like to learn new things or not. Etc. How to start - find good books on the language of your choice.
That said, to anyone that asks me "So is a degree in CS useless?", I answer - no, and I am planning to get it. BS is useless?, but MS/Ph.D isn't. And you will need that degree if you'll want to work at something advanced (like NASA projects).
P.S. On the Java vs C++ - just try each for a day and pick one. Honestly once you get past certain level it won't really matter much. Learn the concepts, not implementation. So once i reach a certain profession level with one program then can those transfer to other languages (discipline, similar code tasks etc...)
I am curious if others agree with this.
Anyway I am a lazy person but I have found out that is only when I do stuff that I don't care about. If I do like something (inspired), like many others, than I would happily sit on my ass for 7+ hours straight and do whatever it is that I enjoy doing.
Again, I dont want to get stuck with this path (I am running out of time to switch to a new major) if I dont enjoy it..
edit: BS in this is useless?? From my understanding, if you have the required skill people will hire you happily. I feel like this is one of the few majors where people will overlook many academic "flaws" if you can impress people with your projects and skills.
|
So learning a language isn't really a big deal. I wouldn't worry about language choice, as long as you choose C++, Java, Python, or C# (with maybe a few other possibilities, but that's off the top of my head) at first. They're all C-based languages with Object-Oriented Programming features, so they'll cover a large majority of "standard" programming. Basically, don't worry, just pick whatever you like, or you're comfortable with, and once you learn that, it'll be a piece of cake switching between the C style languages.
Here's a reference site for C++: http://cplusplus.com/ And another for Java: http://download.oracle.com/javase/1,5.0/docs/api/
Trust me when I say the Internet has all you need to learn how to program. In fact, most programming books are not really too useful for teaching you how to actually get down and code (in my experience). They're great for concepts, algorithms, and explanations of why you're doing what you're doing, but personally, I learn best by running and modifying example code, writing my own code, etc.
If you have the option to, take more classes, definitely. Great way to have a guided look at programming, but keep in mind programming and code itself comes alongside the computer science. How the software functions as a result of the chosen computer architecture is important to understand if you want to ever program professionally.
And yeah, Google is HUGE for coding. When you're working on a project, you don't want to take a thirty minute break and read a chapter on what you want to do, you want to be able to look up the function call you need and implement it quickly. Again, in my experience, books are excellent for concepts--so they're great for teaching you coding style, why code works whatever way it does, how to set up your projects, etc.
Honestly, there's not much advice I can give you that's really too useful. Just study more and program more and you'll get it. Learning the programming languages is really only the start though. That would be like learning how to speak English--you still can't necessarily write an essay at that point, but you get the words.
|
On November 10 2011 15:44 DeckOneBell wrote:So learning a language isn't really a big deal. I wouldn't worry about language choice, as long as you choose C++, Java, Python, or C# (with maybe a few other possibilities, but that's off the top of my head) at first. They're all C-based languages with Object-Oriented Programming features, so they'll cover a large majority of "standard" programming. Basically, don't worry, just pick whatever you like, or you're comfortable with, and once you learn that, it'll be a piece of cake switching between the C style languages. Here's a reference site for C++: http://cplusplus.com/And another for Java: http://download.oracle.com/javase/1,5.0/docs/api/Trust me when I say the Internet has all you need to learn how to program. In fact, most programming books are not really too useful for teaching you how to actually get down and code (in my experience). They're great for concepts, algorithms, and explanations of why you're doing what you're doing, but personally, I learn best by running and modifying example code, writing my own code, etc. If you have the option to, take more classes, definitely. Great way to have a guided look at programming, but keep in mind programming and code itself comes alongside the computer science. How the software functions as a result of the chosen computer architecture is important to understand if you want to ever program professionally. And yeah, Google is HUGE for coding. When you're working on a project, you don't want to take a thirty minute break and read a chapter on what you want to do, you want to be able to look up the function call you need and implement it quickly. Again, in my experience, books are excellent for concepts--so they're great for teaching you coding style, why code works whatever way it does, how to set up your projects, etc. Honestly, there's not much advice I can give you that's really too useful. Just study more and program more and you'll get it. Learning the programming languages is really only the start though. That would be like learning how to speak English--you still can't necessarily write an essay at that point, but you get the words. So you advise that I should just try to know as many codes as possible. And when my mind has memorized "simple and popular standard codes" THEN I should go and understand the codes itself. I understand that you must understand what every letter, every code, what works, how it works is vital in order to write programs with little frustration and have great results at the same time.
Also what do you mean by writing your own codes? Like I never understood that concept. How would you even do that? I always figured that there are a bunch of premade codes and you just put them in a pattern (how you arrange the "premade " codes) is how you write programs...
|
|
On November 10 2011 15:54 Inori wrote:Show nested quote +On November 10 2011 15:42 heroyi wrote:On November 10 2011 15:35 Inori wrote: Programming will be one of the most wanted professions for the next 15-20 years at least, so it's never late.
As for how to learn it - I'm a self-taught programmer. Starting was hard, but once I got my first job, I never stopped improving (still am). Is it doable or not only depends on you as a person. Are you lazy or not. Do you like to learn new things or not. Etc. How to start - find good books on the language of your choice.
That said, to anyone that asks me "So is a degree in CS useless?", I answer - no, and I am planning to get it. BS is useless?, but MS/Ph.D isn't. And you will need that degree if you'll want to work at something advanced (like NASA projects).
P.S. On the Java vs C++ - just try each for a day and pick one. Honestly once you get past certain level it won't really matter much. Learn the concepts, not implementation. So once i reach a certain profession level with one program then can those transfer to other languages (discipline, similar code tasks etc...) I am curious if others agree with this. Anyway I am a lazy person but I have found out that is only when I do stuff that I don't care about. If I do like something (inspired), like many others, than I would happily sit on my ass for 7+ hours straight and do whatever it is that I enjoy doing. Again, I dont want to get stuck with this path (I am running out of time to switch to a new major) if I dont enjoy it.. edit: BS in this is useless?? From my understanding, if you have the required skill people will hire you happily. I feel like this is one of the few majors where people will overlook many academic "flaws" if you can impress people with your projects and skills. Just try it and you will see if it fits you. You're better off being sorry for something you tried and failed, than something you never tried. As for BS = useless. I don't know, maybe US education system is a lot better, but from my experience there's not a course in BS that you study yourself on the internet. For most IT companies, experience > BS (maybe even MS).
Yeah, in the US a BS is enough for almost every company (that I've talked to at least). A lot of them even say they MS and BS grads compete for the same jobs.
To go with your that last part though, you are still right about that. They care WAY more about your experience than your degree. At least in my experience.
|
Hey man, I had to learn a programming language for engineering as well. I didn't have an option and had to do C, which was a huge drag. I scraped by and finished that course, then resolved to never program again.
Then I graduated and realized that having some background in programming is useful for many engineering-oriented careers. My advice would be that if you really like programming so much, then keep taking courses in university. Talk to your guidance department or an academic advisor about taking a minor in programming, or even do a double major. I did something similar with economics because I had a crisis of faith, but realized that engineering will open more doors for me than economics will.
Keep this separate from my advice. In my opinion, mechanical engineering is a stronger career option than a degree in computer science is. If you don't like engineering than that's a different matter entirely and I think you've answered your own question.
The advice I'm giving differs from some of the other advice because I have graduated, I have a BSc and a BA and I have career experience in an engineering field. A BSc in engineering (BSCE in Canada) is not useless because you receive training as an engineer and can pursue your P.Eng afterwards. If you were taking a BSc in computer science, then I would recommend a Masters/Doctorate, but you are likely to find a job in engineering quickly.
Edit: I thought someone was talking about a BSc in engineering instead of computer science. I am aware of this now, but my opinion still holds
I can't comment on the success of people with degrees in computer science, but many of my friends do contract work and really enjoy. I prefer the stability of a salaried position, and you're more likely to find that in engineering in my experience. But if you have a degree in computer science AND in mechanical engineering, then you increase your options exponentially because more and more engineering firms are looking to hire engineers who can program so they don't need to hire someone to design a project and then a separate guy to turn it into a program.
So bottom line, my advice is to stick out engineering and talk to your school about pursuing a minor. You can take more programming courses this year, and if you like it then apply for entrance into a minor in computer science. If you really like that then take an extra year and go for a double major. It's more common than you might think!
Best of luck!
|
Go Java. Unless you specifically want to work with C++ (which there is not much market for these days, aside from games of course).
Java/Web/C# have the greatest market these days, however, if you learn C++, C# and Java will become simple.
|
I read that c++ is still important
But if c++ will help me learn other languages at a faster rate than I suppose I am down.
I don't understand with all these allegations about programming being not that strong in the job field and etc..
From my understanding, if you are good, you can easily make 110k salary right out of college (with a BS. It could be with a MS though)
|
|
On November 10 2011 16:07 Inori wrote:Show nested quote +On November 10 2011 15:58 SgtSquiglz wrote:On November 10 2011 15:54 Inori wrote:On November 10 2011 15:42 heroyi wrote:On November 10 2011 15:35 Inori wrote: Programming will be one of the most wanted professions for the next 15-20 years at least, so it's never late.
As for how to learn it - I'm a self-taught programmer. Starting was hard, but once I got my first job, I never stopped improving (still am). Is it doable or not only depends on you as a person. Are you lazy or not. Do you like to learn new things or not. Etc. How to start - find good books on the language of your choice.
That said, to anyone that asks me "So is a degree in CS useless?", I answer - no, and I am planning to get it. BS is useless?, but MS/Ph.D isn't. And you will need that degree if you'll want to work at something advanced (like NASA projects).
P.S. On the Java vs C++ - just try each for a day and pick one. Honestly once you get past certain level it won't really matter much. Learn the concepts, not implementation. So once i reach a certain profession level with one program then can those transfer to other languages (discipline, similar code tasks etc...) I am curious if others agree with this. Anyway I am a lazy person but I have found out that is only when I do stuff that I don't care about. If I do like something (inspired), like many others, than I would happily sit on my ass for 7+ hours straight and do whatever it is that I enjoy doing. Again, I dont want to get stuck with this path (I am running out of time to switch to a new major) if I dont enjoy it.. edit: BS in this is useless?? From my understanding, if you have the required skill people will hire you happily. I feel like this is one of the few majors where people will overlook many academic "flaws" if you can impress people with your projects and skills. Just try it and you will see if it fits you. You're better off being sorry for something you tried and failed, than something you never tried. As for BS = useless. I don't know, maybe US education system is a lot better, but from my experience there's not a course in BS that you study yourself on the internet. For most IT companies, experience > BS (maybe even MS). Yeah, in the US a BS is enough for almost every company (that I've talked to at least). A lot of them even say they MS and BS grads compete for the same jobs. To go with your that last part though, you are still right about that. They care WAY more about your experience than your degree. At least in my experience. My point was that one should either self-study or go straight for MS/Ph.D.
Hm, i guess that's debatable then. I'm honestly not sure the overall value of the BS degree in some companies' minds. Though my school's career fair and connections with some companies is well worth that degree for me IMO.
|
From what I've seen in the US, BS/MS compete for the same jobs, and with the current economy some companies will actually prefer a BS since they don't have to pay you as much. I've got a BS in CS, I never saw the point of actually going for the MS unless I was planning on doing PhD, but I could be off on that.
Any degree in the US is going to put you in a better position to be hired over someone who is self-taught if they have the same amount of experience as you, experience trumps all anyway.
|
While an intro C++ class might be interesting, eventually you get deep enough into this shit that the language becomes an afterthought to the task, and then you start to get hung up on practical issues like "what are you trying to achieve with your software." If you enjoy writing code for its own sake then software engineering may be good for you.
Software engineering is a lot of hard work though, because (1) it is competitive, and (2) you need to learn a wide set of skills in terms of languages & platforms in addition to specializing. Most companies are looking to higher someone who has deep experience in one aspect of the software design process (UI, UX, front-end, back-end, systems, security, etc.).
Computer engineers & computer scientists generally just use languages as a tool to get things done and therefore are usually more well-rounded, but again you have specialization & a lot of experience goes into it.
You need to find something you are passionate about. There are plenty of boring things you can do with C++. There are also cool things, but it's just a tool for your practical objectives.
|
Getting a PhD in comp sci is not going to interest employers unless you're a ninja hacker as a result of it or your research is directly impressive to the company (most big software companies have R&D divisions that combine academic pursuit with product development/discovery).
Your masters will give you a leg up in hiring, probably ~20k more in starting salary.
Also, a top-tier CS school's BS is worth a lower tier's MS, give or take a few k.
The best way to cover your bets is to do some ninja hacking (open source contribution is good) and get some real experience and notoriety.
|
C/C++ is critical if you're going into systems engineering or old-school software dev (a lot is done on the web these days). Java is also popular for all sorts of engineering, although many lament its overuse in big software for relatively simple tasks in other languages. C/C++ is fast & commonplace, but a real headache when things get big & complicated (as they always do). Java is safe safe safe, but wordy wordy wordy (you'll type so much useless code).
Otherwise the languages you will need to have proficiency in depend on the position & nature of the company/project.
Most young companies today acknowledge that there are a lot of languages out there, and adhere to the "right tool for the job" principle. Hot stuff these days: Python in a lot of backends, a lot of everything. Python is pretty nice. Ruby in places you wouldn't expect it. Very esoteric, but rewarding if you can get into it. Erlang/OCaml/Haskell in finance/algo trading. Weird languages that help math-minded people write weird code. Javascript anywhere a website is involved, and other places as well. Extremely important, and extremely unpopular by most.
|
I'd recommend starting a minor in programming if you are really interested.
|
On November 10 2011 17:26 mmp wrote: While an intro C++ class might be interesting, eventually you get deep enough into this shit that the language becomes an afterthought to the task, and then you start to get hung up on practical issues like "what are you trying to achieve with your software." If you enjoy writing code for its own sake then software engineering may be good for you.
Software engineering is a lot of hard work though, because (1) it is competitive, and (2) you need to learn a wide set of skills in terms of languages & platforms in addition to specializing. Most companies are looking to higher someone who has deep experience in one aspect of the software design process (UI, UX, front-end, back-end, systems, security, etc.).
Computer engineers & computer scientists generally just use languages as a tool to get things done and therefore are usually more well-rounded, but again you have specialization & a lot of experience goes into it.
You need to find something you are passionate about. There are plenty of boring things you can do with C++. There are also cool things, but it's just a tool for your practical objectives. sigh
just more and more things I need to go learn...
I have absolutely no idea what some of those are...I mean I guess i want to do security lol So i can be leet ninja hacker XD
|
On November 10 2011 15:29 heroyi wrote: ok so you just went with the whole google shit out?
I feel like that isnt the best way to learn considering there will be holes in your knowledge.
And is c++ a popular program code to use?
Btw what do you mean by the language changes? Like new codes, an improvement?
C++ is quite popular. It basically is required for everything which goes beyond a "lets write a small application!". Sure there are some exceptions, but it's overall a very common language. Also if you know one language - you basically know all (as long as they're form the same family, and the big ones (c++, java, c#, python) all are).
And yes "googling the shit out" is basically how you program. Or more precisely: looking through APIs, you will not write everything yourself. Programming is a neverending learning experience. You will always have holes. And if you need to fill that hole you learn it  The biggest problem when learning to program is: You normally chose a project which you want to work on (something which interests you). You encounter new problems, learn to solve them, and then after 2 month or so you say "Ok... what I did 6 weeks ago works, but now I know a way cooler/better way to solve that problem. My old code is crap - I should rewrite it". DO NOT FOLLOW THAT INSTINCT! It's the worst thing you can ever do, because you will NEVER finish said project if you use the "I now know a better way to solve it - let me fix that"-approach Only the next time (next project) when you encounter the same problem, dont copy & paste that old code but write it better 
I'm a CS student (university - not FH (Fachhochschule - college?), so we're more theorie-focused) - and programming isnt that important. Sure, we have to program something in some courses (the big ones) but in multiple other courses there is 0 programming required. It's more about the concepts and especially the math behind it.
|
Take these words to heart, young padawan.
Don't think about getting a BS or MS. Don't think about Computer Science. Doing these things means you are not programming at this moment. Spend your time writing code instead, it's more fun.
You don't "learn" a programming language. It's not like "Oh, I see. Now I guess I know C++." or "Now I know Java, yay!". You learn to write programs, and the language is your tool. You can be more or less proficient with your tools. If you like metaphors, imagine construction. Humans build boats, towers, computers, houses, bunkers, cars. These are all different constructions. They require different designs and physics to work. These probably require tools that can resolve these issues. You wouldn't build a car using a jackhammer. You wouldn't color a house using spray paint.
There are different things to program, and there are different tools for the job. Java and C++ are often recommended because they are general-purpose tools that can do most things acceptably well. But they're also ugly as hell. My opinion on which one you should learn? Both.
If you don't already know programming, you probably don't know the kinds of things you'd like to build. So go find out. If you want a firefox plugin, you should write one. Don't know how? You should find out how. Don't just plunge into CS like so many others thinking "yeah code sounds kinda fun". Just start writing code. It isn't actually hard. What's hard is integrating code with colleagues and building stable, scalable applications. Is that what you want to do? Then go to CS. If you have no idea what you want to do, make some cool, neat, fun utility stuff. Hang out on github and share code, read code. Have fun, because code is fun. (If you don't like coding, but code anyway, you'll end up creating abominations, like Rasmus Lerdorf has done with PHP. What ever you do, don't fall into the PHP trap, it's an extremely ugly language.)
I personally believe programming is going to become less of a profession and more of a requisite skill for any type of work. Then we'll have experts who do things like design new languages, kernel optimization, and the stuff that keeps CS rolling. But not knowing how to write a simple program should be like not speaking English internationally. I've worked as a programmer but I don't always feel like a programmer. I just learned to write programs, because I think the computer is the greatest technological discovery in the history of the mankind.
I'm not going to give you any language recommendations, but I think you should read abot these languages, and see if they sound fun: - Clojure - Ruby - Haskell - Python - Perl - Scala - Erlang - Scheme - Javascript Don't let your noobness scare you from picking a language. Just try until something works and take pride in every single bug-free line.
If one of them sounds interesting, start writing stuff in it. Oh! Also: http://www.projecteuler.net . Fun programming challenges.
Even if it turns out you hate programming, or you can't work as a programmer for some other reason, you should learn it. Everybody should.
|
|
|
|