A Career In Computer Science & More
About three years ago, I was looking for a way to create games. I tried to use game creation packages such as Game Maker and other tools to create games, but they didn’t really seem to cut it, well not for me at least. So, one day, while surfing the Internet, I came upon a site called CProgramming (www.cprogramming.com). It seemed like I could make games with it, so I started learning my first programming language – C++.
It was probably a mistake, because at that time I probably didn’t realize how difficult a language C++ was. But I continued on and learned more about C++ every day. I didn’t really understand how to put all the pieces together until a few months had passed, though. Then I finally understood what I had to do, and then I basically started making games.
The projects weren’t really that great at first, but I continued on, and they gradually improved. Two years later, I stopped C++ due to lack of time, but I tried not to forget about it. I was hoping that one day I would return and start creating games again. So there was a period of about one year, when I didn’t really do any programming or make any games.
Recently though, I’ve picked up again. For the last five months, I’ve been learning about web design and scripting. Starting from May to November (today) I’ve learned many things, from HTML and CSS to PHP and SQL. At the moment I’m learning about PHP and SQL, and it’s actually a lot of fun!
But I want to know where I should go now. I have sufficient knowledge (to fit my needs) in HTML, CSS, and javascript. I’m thinking that after I learn enough (again, to fit my needs) PHP and SQL, I can take a break from web design and scripting and start programming desktop applications in C++ again.
I’m not really completely sure about this, though. I’m not really sure what kind of career that I want yet. As far as I can see at the moment, it can range from web design, to game programming, to software engineering. For me, any future computer career should be a fun one. But there are some things that I’m still worried about.
I heard that there are problems with outsourcing, especially in the software / computer industry. I heard that people are losing their jobs because companies are outsourcing programming jobs to areas such as India and China. I really would like a career in computers, but I want to have a steady and consistent job, meaning that one day I won’t lose my job because my company is planning to outsource their workers.
Oh and about C++, I’m going to start creating windowed applications soon. I might start making games again, but I’m still thinking about that. I also have some questions; please try to answer them if you can.
Are there any jobs that do not outsource, or do basically all jobs at the moment (including ones that are outside the field of computer science) are being outsourced, as well?
Is it a good idea to jump on the Microsoft bandwagon? I know that some people hate Microsoft products while others like them. And I’m really not sure about which side to choose from.
Is DirectX a good API? How is the learning curve? Are other API’s such as OpenGL or SDL worth learning, and if so, why?
Is the Win32 API worth learning? I believe that it is only portable towards Windows operating systems, but since the majority of people use Windows for gaming, should I just learn the Win32 API instead of others like Qt or wxWidgets?
I’m not exactly sure about what kind of career in computer science that I want yet, but so far my choices are web design, web scripting (PHP, SQL, etc), software engineering, and game programming. I’m planning on learning HTML, CSS, and JS for web design. I’ll use PHP and SQL (and I might also learn how to use Apache and Linux as well) for web scripting. And C++ and my choice of an API will be used for software engineering or game programming, depending on what I learn. Can you give me your opinions or some information about those three careers? What are they like?
Thanks, I’ll be looking forward to hearing your replies!
I don't know much about outsourcing, but I do know that when it comes to making games professionally, good, reliable programmers are worth their weight in gold (and games programmers tend to weight a lot ;) up till 3am eating cold pizza will do that). If you get working for a good games development house it's quite unlikely that you'll lose you job due to outsourcing. Also it's a lot of fun, though admittedly it's also a LOT of work so be prepared to spend some very late nights in the office :p
Quote:I heard that there are problems with outsourcing, especially in the software / computer industry. I heard that people are losing their jobs because companies are outsourcing programming jobs to areas such as India and China.
Job markets are just that - markets. If someone is willing to work for less, and employer is satisfied with the results, they will go with lowest bidder. Where they are located is secondary. Pick up something random from your desk. Look at the label. What does the "Made in ..." say?
Today you are competing for a job in global market. Regardless of what you choose to work in.
Quote:but I want to have a steady and consistent job, meaning that one day I won’t lose my job because my company is planning to outsource their workers.
Become an undertaker. It's about as close to job security as you can get.
Quote:Is it a good idea to jump on the Microsoft bandwagon? I know that some people hate Microsoft products while others like them. And I’m really not sure about which side to choose from.
Sure, why not. Just remember - live by the sword, die by the sword. If you tie yourself to anything specific, the moment that changes, you're completely obsolete. How much demand is there for Windows 98 administrators?
Quote:I’m not exactly sure about what kind of career in computer science that I want yet, but so far my choices are web design, web scripting (PHP, SQL, etc), software engineering, and game programming. I’m planning on learning HTML, CSS, and JS for web design. I’ll use PHP and SQL (and I might also learn how to use Apache and Linux as well) for web scripting. And C++ and my choice of an API will be used for software engineering or game programming, depending on what I learn. Can you give me your opinions or some information about those three careers? What are they like?
They are all specific products with limited life span.
How exactly does "computer science" fit into this? All of the above are products, languages and technologies. If you're trying to become an architect, you need to learn how to build houses. Studying hammers, nuts, planks and bolts won't bring you any further to that goal.
Programming today is incredibly accessible and has next to no barrier to entry. Topics related to CS are still taught at universities.
Quote:good, reliable programmers are worth their weight in gold (and games programmers tend to weight a lot ;) up till 3am eating cold pizza will do that).
Anyone worth their weight in gold should be able to say that they work 9-5, 5 days a week, since they can deliver what is asked of them in that time. On the hour.
Quote:Original post by Antheus
Anyone worth their weight in gold should be able to say that they work 9-5, 5 days a week, since they can deliver what is asked of them in that time. On the hour.
That's not necessarily true. The best programmers in the world are still going to have to answer to project managers who may not be of the same calibre. A good programmer will be aware of the limits of technology, manpower, and time frames, but if their observations fall on deaf ears then the project will fail, regardless of the individuals skill.
Quote:Original post by Winegums
That's not necessarily true. The best programmers in the world are still going to have to answer to project managers who may not be of the same calibre. A good programmer will be aware of the limits of technology, manpower, and time frames, but if their observations fall on deaf ears then the project will fail, regardless of the individuals skill.
Then why would they stay at a place like that, when they can move to something better? If they are worth their weight in gold, won't there be someone else willing to hire them for their skill, and give them the power to utilize it?
Quote:
Then why would they stay at a place like that, when they can move to something better? If they are worth their weight in gold, won't there be someone else willing to hire them for their skill, and give them the power to utilize it?
It could be due to complacency or something else (daily commute, salary, benefits, etc).
The cost-benefit analysis of your employment cuts both ways -- The employer is compelled to pay (where pay includes benefits, perks, conveniences, etc) the least amount possible for sufficient work; likewise, the employee is compelled to accept whatever treatment (long hours, inferior management, etc) they are able to justify by the pay.
Everyone sets their own bar. Personally, I aim for a standard 40 hour work week, but I'm willing to put in 10 extra hours of crunch once in awhile for maybe 2 or 3 weeks at most -- although bonus pay would increase my tolerance for lengthier spans. I refuse to work anyplace that believes 50+ hours is a standard working week or that goes to 60-70 hours during crunch, its just not worth it, IMO, even if the pay were scaled to match... My free time is important to me.
Everyone sets their own bar. Personally, I aim for a standard 40 hour work week, but I'm willing to put in 10 extra hours of crunch once in awhile for maybe 2 or 3 weeks at most -- although bonus pay would increase my tolerance for lengthier spans. I refuse to work anyplace that believes 50+ hours is a standard working week or that goes to 60-70 hours during crunch, its just not worth it, IMO, even if the pay were scaled to match... My free time is important to me.
Just because you're working lates does not mean it's against your will. If your making a game and your team needs to work late to meet a deadline, if you love your work, your team and your company then you'd want to work late and help out.
When we were in crunch we all wanted to be there doing our part, sure we might moan every now and then but we wouldn't be in the job if we didn't want to be there.
When we were in crunch we all wanted to be there doing our part, sure we might moan every now and then but we wouldn't be in the job if we didn't want to be there.
As far as outsourcing, I wouldn't worry about it too much.
Yes, jobs are being exported, but these aren't necessarily skilled jobs. Mostly, it's basic, reinvent the wheel sort of thing.
A lot of work will be mostly, or completely domestic. Defense contracting for example. There is a huge need for computer scientists in defense contracting. You can be sure you won't be outsourced since classified work obviously needs to stay on home soil.
That's one route to go, but many fields will stay mostly domestic.
To really advance in CS, I'd advise that you drop trying to learn specifically games, web design, or application programming. Instead, focus on learning CS fundamentals and techniques. For example, take a class (or Wikipedia) about data structures, algorithms, etc. This will give you the foundation that is CS. After that, picking up a language to implement the concepts should be trivial (relatively).
Yes, jobs are being exported, but these aren't necessarily skilled jobs. Mostly, it's basic, reinvent the wheel sort of thing.
A lot of work will be mostly, or completely domestic. Defense contracting for example. There is a huge need for computer scientists in defense contracting. You can be sure you won't be outsourced since classified work obviously needs to stay on home soil.
That's one route to go, but many fields will stay mostly domestic.
To really advance in CS, I'd advise that you drop trying to learn specifically games, web design, or application programming. Instead, focus on learning CS fundamentals and techniques. For example, take a class (or Wikipedia) about data structures, algorithms, etc. This will give you the foundation that is CS. After that, picking up a language to implement the concepts should be trivial (relatively).
Alright, so the outsourcing problem isn't really as serious as it seems. From your replies, I'm guessing that in the future the demand for jobs in computer science will increase, but the more advanced jobs (instead of those reinvent the wheel ones) will stay in the United States while the others are outsourced to areas such as India and China.
At the moment I'm not really sure whether I should jump on the Microsoft bandwagon or not. I'm aware of the fact that Microsoft is a large company and it (along with Windows and their products) probably won't die out for quite a while. What I'm worried about is that one day a new operating system will probably take over Windows, and then my skills will become obsolete.
It's kind of hard to think that if a new OS comes out and it's better than Windows, people won't switch to it. If that is the case, I don't really think that people will stick to Windows and allow their files to be destroyed by viruses, malware, etc. Anyway, that's just what I'm worried about. Also I know that other operating systems like Linux can easily outperform Windows and are much less hardware demanding.
Back to the subject though, I'm not sure exactly how I should approach learning computer science. I know that learning purely from books or classes just won't cut it; a hands on experience is probably the best way to approach learning about computers and technology. That's what I'm trying to do, I'm trying to learn mostly by creating my own projects and programs, and less by reading books and taking classes.
I'm not sure if this is exactly the best method to use though. But like someone mentioned, learning to program by reading books is like learning to become an expert painter by studying paintbrushes. So, I'm basically yielding to the hands-on method, though I'm not completely sure that this is the best way to approach computer science or programming though.
So, should I continue learning programming languages?
Also should I learn how a computer works? For example, how networking or TCP/IP works, or how a computer works in general? I know that learning this kind of stuff may be important in some computer careers, but most likely not programming (please correct me if I'm wrong).
What I enjoy doing is programming and learning about computers in general. When I mention computers in general, I'm talking about learning how computers work and also programming languages as well. For me, learning how to use certain softwares and not how to program is boring.
So, anyone got any more suggestions?
At the moment I'm not really sure whether I should jump on the Microsoft bandwagon or not. I'm aware of the fact that Microsoft is a large company and it (along with Windows and their products) probably won't die out for quite a while. What I'm worried about is that one day a new operating system will probably take over Windows, and then my skills will become obsolete.
It's kind of hard to think that if a new OS comes out and it's better than Windows, people won't switch to it. If that is the case, I don't really think that people will stick to Windows and allow their files to be destroyed by viruses, malware, etc. Anyway, that's just what I'm worried about. Also I know that other operating systems like Linux can easily outperform Windows and are much less hardware demanding.
Back to the subject though, I'm not sure exactly how I should approach learning computer science. I know that learning purely from books or classes just won't cut it; a hands on experience is probably the best way to approach learning about computers and technology. That's what I'm trying to do, I'm trying to learn mostly by creating my own projects and programs, and less by reading books and taking classes.
I'm not sure if this is exactly the best method to use though. But like someone mentioned, learning to program by reading books is like learning to become an expert painter by studying paintbrushes. So, I'm basically yielding to the hands-on method, though I'm not completely sure that this is the best way to approach computer science or programming though.
So, should I continue learning programming languages?
Also should I learn how a computer works? For example, how networking or TCP/IP works, or how a computer works in general? I know that learning this kind of stuff may be important in some computer careers, but most likely not programming (please correct me if I'm wrong).
What I enjoy doing is programming and learning about computers in general. When I mention computers in general, I'm talking about learning how computers work and also programming languages as well. For me, learning how to use certain softwares and not how to program is boring.
So, anyone got any more suggestions?
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement