PASSION. I think being passionate is the ultimate prerequisite that you need to posses to have a great career in computer science. When you have this trait with you, you will never think of your job as "just a job" but a hobby that you will cherish & enjoy. :)
An interest in computer science, hard work, self-motivation, patience, networking...
There are many routes into computer science related fields. Not all require degrees but a degree certainly helps when applying for jobs. A portfolio of past projects is nice too. It shows you can get work done and produce an actual product. Above all I'd say "networking" is probably the most important thing to work on. There are lots of highly educated individuals out there that still struggle to get jobs while others get more work than they can handle simply because they're good at marketing themselves and building relationships.
I answered a very similar question here if you'd like further commentary: https://www.careervillage.org/questions/159403/what-does-it-take-to-become-a-software-engineer
These are the top three personal characteristics I would recommend:
1) The ability to learn: Technology changes so fast that you will always be in learning mode. If you are not, you will be left behind. Expect to have to learn on your own time, in your own way, at your own direction. But don't chase everything. Pick a few areas and focus on those (also don't pick just one).
2) Communication: It used to be said that people that went into IT where not good with other people. In today's world, you have to be able to connect with your customers. You need to be able to understand the people that you serve so that you can deliver what they need. You also have to be able to communicate complex ideas to non-technical partners. Additionally, you need to be able to share ideas among technical peers. All of this depends on your ability to form an idea and express yourself. Don't worry if this seems more challenging than the technical side. There are plenty of resources out there and realizing this is important puts you much further down the road to success than you think.
3) Integrity and the Golden Rule: I would put this on any list. The personal quality to do the right thing, regardless of whether someone is watching, or if there is a reward. The right thing to do is not always easy to determine when it comes to technology, however being honest, transparent, owning your actions, and supporting your teammates is always straight forward. This won't be taught to you in school, and society will show you many examples of just the opposite, but success will always be there for you by some measure if you can follow this advise.
Glenn recommends the following next steps:
Moving into future there would be a lot of focus on Artificial Intelligence & Machine learning and there has been incredible development happening.
Hi Isaac, in my humble opinion I would say only patient and passion to keep learning everyday, because you know that technology is changing constantly and a simple semicolon could make a difference in your code ;)
- A very solid programming knowledge.
- The approach towards learning new programming concepts is vital, and there is no substitute for practice.
Computer Science careers can span across multiple industries - everything from retail, travel, transport, media, entertainment, logistics - in fact pretty much everything has an element of technology/computers/software that make them potential career options. From my own background, I can think of the following being relevant/important if you're considering a career in computer science:
- A degree in Computer Science/Math/Engineering is helpful (but not always required). It helps with thinking/approaching problems in a structured manner.
- If you have degrees in other disciplines, think of how you can apply/use technology in those areas.
- A working knowledge of computers/software. Programming/coding skills are very helpful.
- A learning/growing mindset - this is an area that is continuously evolving. You have to constantly be prepared to learn new things and evolve.
The only prerequisite that I ever see is a desire to constantly learn. Many of the programming languages and even some of the concepts that are taught today will be obsolete in the near future. As such, the industry is constantly having to change and adapt. This can be a ton of fun and rewarding if you enjoy learning new things.
Computer science is a really vast field built using abstractions on top of abstractions. For example, when you are writing a program in a high level programming language like Java, you are doing that on top of many abstractions like the java virtual machine, operating system, the hardware being used on the physical device etc. These abstractions make it easy for you to do without being overwhelmed by complexity.
Although it is not required to go to the level of hardware, it is a really important to have at least a high level understanding of these layers. As you set out to begin a career in computer science, put in effort to understand these systems from the beginning. It will be so much easier to understand and reason about systems as you progress though your career and this knowledge has great compounding effects.
When I started my career in computer science, I used to just have the minimal understanding required to just get the job done. What eventually happened is that all my knowledge was superficial and whenever I started something new, I had to start from the beginning. I realized that many of the things that I was working on would have been really easy to learn when if I have a really good knowledge of the fundamentals.
So, I would conclude by saying that having the curiosity and the passion to learn about different systems and their historical context will set you up for a great career in computer science.
2. Learning and unlearning
3. Attention to detail
4. Passion towards computers and software systems