Today, it is not enough just to be technically competent to survive. Yeah, yeah, everyone says that, but I found some numbers today. According to the annual Design News salary survey, these are the skills participants found most important (from most important):
- Project management and communication/presentation skills (86%)
- Computer skills (85%)
- Team-building skills (64%)
- Language skills (43%)
- Marketing/sales skills (35%)
- Finance/accounting (31%)
Who would have guessed that the #1 most important skill is communication? (Shocker, it’s not some l33t rare proprietary system hacking skillz. Us geeks have been trained in college to work in a dark windowless basement without talking to each other that communicating our ideas effectively is just naturally un-natural, to say the least.
Delivering results on time and within budget is also an obvious, although no where in a regular computer science curriculum is this strongly emphasized. However, this shouldn’t be a problem for students that have completed their operating systems class. Remember the fundamental concepts in threading, process and memory management? It’s all about juggling multiple tasks with finite memory space and a single processor. Same thing usually applies in the real world — you will have a finite resource/budget.
I’m sure someone can write up an algorithm for their project management needs. Here’s a pseudo-code algorithm:
- Identify the “projects”, tasks that need to be worked on (deliverables)
- Prioritize each task — use appropriate metrics (e.g. urgency, due date, cost, risk, etc.)
- Execute, and don’t drop the ball! Feel free to apply threading and pipelining concepts e.g. make sure no threads get “starved”.
Other advanced concepts that you can also apply from the OS class are such as solving deadlocks (process contention), reducing overhead cost when task-switching too much, and pipeline “hiccups”.
Also, I would highly recommend applying the infamous GTD concepts. I have learned to apply the GTD toolkit and I have managed to tie up many of the loose ends in my life that were just bogging me down (too much overhead). I like to think of it as reducing the number of background processes, giving me more memory and processing power for other things!
Perhaps CS grads are also lacking in the leadership department, because students are too busy competing to out do each other in grades that they didn’t get the memo telling them that in the real world, people are supposed to work together — performance reviews/appraisals replace “grades” and the need for leadership skills become more relevant and important.
That shouldn’t be a problem either. Any competent CS grad cannot call himself a “computer scientist” if he doesn’t carry his problem-solving algorithm toolkit with him at all times. Many hackers have used these general problem solving principles to solve non-technical problems. The Hacker’s Diet is a very good example a person determined to lose weight by approaching it as an engineering problem. The key resource in this weight problem? Determination.
Rick Johnson, president of Cherry Electrical Products says:
“My experience is that all companies prefer technical people in these [management] positions. The opportunity here for an engineer to continue in engineering is to add to his/her leadership skills. All engineers are taught to solve problems. If an engineer pursues acquiring leadership skills … they will have huge opportunities in store for them in the future. Alas, most engineers just ignore this aspect of their personal development preferring instead to learning more and more about the latest technologies.
Full article at Design News.