What are jobs like with a computer science/computer engineering degree? As well as other tech jobs.
I'm a junior in high school. I am part of my schools tech academy and I hope to find a career in tech when I get older. I want to major in computer sciences or computer engineering. I'm interested in video games,baseball and cars. I just really don't know what the jobs are like in these majors. I always get recommended to go to internships, but what else can I do? What are tips and ways to get ahead in these fields? What are things I can do now to prepare myself? What are specific jobs in these careers?If you have one of these jobs, do you like it?
computer-science computer-software computer-engineering computer-programming computer-security computer-hardware computer
The job markets have been—and are expected to continue to be—excellent for both types of computer engineers. Both can lead to very interesting and rewarding careers. You should choose according to your preference.
Computer engineers build hardware while computer scientists generally do not. However, computer scientists certainly know enough about hardware to analyze computer system operations and to interact with hardware engineers.
Computer scientists know more about underlying theory of computation, programming languages, and operating systems. While computer engineers often work as programmers, most system level programs such as programming languages and operating systems are designed by computer scientists. However, computer engineers usually write the programs for computer-based systems.
Computer engineers work for computer companies such as Intel, HP, and Texas Instruments, and also in industries that build or use computer-based systems, such as telecommunications, automotive, aerospace, etc. Many computer engineers also get jobs as programmers. While they have less programming experience than computer science graduates, their understanding of hardware gives them an advantage in dealing with overall systems.
Dinesh recommends the following next steps:
I think I may have an unusual perspective on this that may be of help. I can't know what everybody thinks, so I'll give it shot anyway. When I was first recruited by a major R&D company, the prevailing wisdom was that all engineers/scientists were intended to be interchangeable. In a positive way. We were all considered to be "really smart" in our fields and we should be able to join any project and do any part of it. This, as you might expect, is a bit of a fantasy, but it helped us all get pretty familiar with all the phases of projects. I started as a programmer or developer. I did what smart folks said they needed done. They designed, I coded or built hardware. Later, we all wrote requirements and later system architecture documents. I was eventually given the "weird" problems that clients had -- both businesses and other tech firms -- and allowed to define the problem and the solution by learning more about those other firms and clients. Eventually I gained skill in 1) defining problems, 2) defining solutions, 3) finding options, 4) deciding on an implentation design and architecture, 5) coding or building solutions, 6) testing and verifying the solution or product, 7) interfacing with the client for ongoing support, 8) managing teams to do all those things, 9) exploratory investigation for future products and solutions and even 10) traveling around the country giving presentations on our technology and solutions.
The bottom line here is that tech jobs are many and varied. The great thing about this is that you'll eventually find some subset of those 10 things that you really, really like and are good at. So instead of a "food", you should think of tech jobs as a "menu" you can find something delicious you'll enjoy.
So just to clarify terms up front, computer science is primarily about software (though it can touch on hardware aspects, e.g., quantum computing), while computer engineering is more about hardware (though you can do nothing but [embedded] software with such a degree--generally tied very closely to a particular type of hardware). There's a gray area there, but those are the definitions I'll assume.
I currently work as a software engineer, which is what computer science graduates tend to end up doing. I've been doing it for around 15 years now, and I like it a lot. (I also worked in the semiconductor industry for a while, and there were probably computer engineers there--certainly there were people who designed chips--but I worked with software people: video codecs, board-support packages [the lowest-level software to make a chip usable by customers], and in my case, embedded Linux and VxWorks. I wasn't as fond of that, though it had its good parts, too.)
For the more hardware-oriented folks, Raspberry Pi is probably the most popular embedded platform in the world (not counting mobile phones, which give you almost no ability to modify the hardware), and it's both cheap ($35 to $50, I think) and has a huge community of enthusiasts doing all sorts of interesting things with the platform.
And once you get to college, internships are an outstanding way to get your foot in the door, as you've already heard. But working on projects like those above can be just as good; it shows you're self-motivated, interested, able to work with the community (hopefully :-) ), and already have some experience with the engineering/development process: writing code, getting it reviewed, submitting it, etc.
As to specific jobs, there are countless Internet and software-only companies, of course (Silicon Valley is composed of almost nothing but), but almost every medium to large company these days has a lot of data and a need to manage it, slice and dice it, derive business insights from it, etc. On the transportation front, both gas and electric vehicles and (electric) drones are not only full of electronics (and the software that runs on it) but increasingly robotics in the form of self-driving (or self-navigating), autonomous vehicles. Tesla's "autopilot" woes notwithstanding, this is unquestionably the wave of the future, but it's also quite complex (probably obvious :-) ) and will require a great deal of refinement, debugging, and associated support infrastructure in the future. And then there are the scientific fields (physics/astrophysics, genomics, etc.) that will soon be generating terabytes or petabytes of data every day; while these fields may not pay particularly well, they have a huge need for big-data analysis and machine learning capabilities, and in some respects people working there will be at the forefront of engineering (and science), which can be its own reward.