|
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!
|
|
|
|