> must practice persuasively and clearly communicating their ideas to non-programmers If you’re a CS major, panicking over this sort of “technical skills aren’t enough, you have to be a persuasive public speaker and effectively do management’s job for them”, people have been saying this since at least I started coding 30 years ago, and I don’t see any evidence that it’s actually true any more than it was back then -…
Technical ability isn't relevant in ~90% of "CS" jobs. Everyone can do the basics, and you don't need more than the basics to do 90% of "CS" jobs. You will be left behind by coworkers who can communicate, and you will be confused about why, if you can't communicate well. Specifically, if you can't take an idea you have and convince others it's the right idea.
What every computer science major should know (2011)
161–170 of 187 posts
Re: What every computer science major should know (2011)
#162I come from a CS background and learned a lot from studying CS, it definitely gave me a strong foundation and changed the way I view and understand computing. I learned most of the topics mentioned in this document while in school, and although they are all valid, they are not enough for real world needs. ~90% of CS undergraduates will end working as or with engineers, and in 2019 here are the skills that are indispe…
> 10) understand that “good enough” sometimes is all you need (still try to fix it later :) ) This is something most CS grads don't really grasp immediately, but in the real World business and time constraints normally trump perfection. Technical debt is fine as long as it's fully understood and managed properly.
Early in my career good enough meant it worked correctly with no thought put into how that functionality is going to age.
I would do things like find a function that did most of what I need, add a bool parameter to trigger a new mode (usually giving it a default value), add some comments, commit, ship! Ten years later that function has four more mode parameters and it's a mess.
These days I'm better at doing one more pass to break things apart or change the interface to accommodate new functionality. I also try to never have bool parameters that triggers a different mode and almost never give parameters default values.
Re: What every computer science major should know (2011)
#163These kind of lists are always hilariously overstuffed, like a big comfortable rhetorical couch. It's not all that hard to make up a giant list of 8-10 years worth of material, which if anyone took seriously would also lead to a monoculture i.e. we didn't have any time to do anything aside from computer science and this giant-ass list of requirements like "physics up to electromagnetism". I'd say I was close to hitti…
Advice about career paths should always be personalized to each individual. I'm someone who has not had a traditional CS education, I am totally self taught and I don't have many certs at all, actually, I had taken a few courses and not taken the tests, and for all of those courses, the only reason I had taken them is that my employers paid for them.
I've had over 13 different jobs in the past 20 years and that's helped me to really figure out how the IT world works. I primarily work as a Gov contractor on the East coast, and rarely had a job I could not grow into provided I had basic knowledge of development, customer service, and project management. I am not a genius by any standard, but I have accomplished a lot over my career that has made me worth the money they pay me. People used to tell me to not "hop around" and that there would be unemployment eventually after doing that, but IT changed the traditional rules of employment. I am lucky to have been where I was in history because now there is a serious lack of supply for people who do what I do (Full Stack Dev, Dev Management, Cloud Architecture, Technical Project Management, Application architecture). I have also greatly benefited salary-wise within the past 4 years as I move into more management roles, and the only time I get substantial raises is when I switch jobs, not when I stay with an employer for an annual bonus. Actually, my salary growth year over year has been about +$20k on average for the past 5 years as the East coast begins to climb to West Coast standards, so I don't need to move to Cali and deal with Earth Quakes :P.
I started out learning the Internet and simple HTML in college (around 1995) when the Internet was just going public... That positioning probably helped me a lot. My first CS job out of school was making CD-Roms based on early JS, HTML, and graphics (pre-CSS) for a software development company that was making a tool which would later be killed off by message board software like PHP BB. I worked around real developers and learned their habits, and it made development in C less intimidating to me, back then development seemed like rocket science. The Dot Com boom (even citing it's collapse) convinced me that IT was a new industry I could stick with... It was really an amazing time. I interviewed with MTV, Microsoft, The Motley Fool, and turned them all down because they were offering lower salaries than small IT companies nearer to my home.
I graduated through many different companies as a web developer as sites got more complex, I embraced Google-Fu, which helped me to solve some really complex challenges, Learning concepts like Waterfall, Scrum, Rup, and Agile helped me to work my way into management.
I will agree though, maintaining personal (portfolio) web sites was what got me into the door ahead of my competition most times where no one knew me, it was shocking how so many people even now that I interview for jobs don't have any portfolio links in their resumes, or even a profile on linked in. If you're a developer, it's an easy way to bypass a code test on an interview to just be able to explain how you set up your personal portfolio. I used to have to back out of interviews that sent me code tests because they were never related to what actual company jobs were like anyway, and the tests were often geared towards people who were CS degree holders.
There is no substantial personalized advice someone can give you online that will be properly suited to your needs in a general format. The advice that works better is based on the process you follow rather than the programming language or specific decisions you should make career-wise. I've seen big companies and ideas grow and fail, like IBM and Adobe Flash... That is always guaranteed.
For people embarking on their career journey, I suggest that they take notice of the successful people around them and invite someone they really respect out to lunch and pay the bill (to compensate them for their time and so that you aren't remembered as a "mental burden" by them). Talk with that person intently, and tell them your ideas and goals (you should be able to trust them at that level of course, so choose wisely). Ask them for their take and listen intently without shooting their ideas, advice, or methods down, and then take all you learn from those conversations and design your own path in your mind, and follow it. If a path doesn't work, be sure to pivot to a new path before you're invested too far/deep... If a path that you're on does work, follow it for as long as it works, but also diversify your efforts, time IS money, never put all of your eggs in one basket. Eventually you'll succeed in time if you take note of what works, mirror that in your actions, and learn to negotiate money and your career properly. That's what has worked for me thus far.
Re: What every computer science major should know (2011)
#164These kind of lists are always hilariously overstuffed, like a big comfortable rhetorical couch. It's not all that hard to make up a giant list of 8-10 years worth of material, which if anyone took seriously would also lead to a monoculture i.e. we didn't have any time to do anything aside from computer science and this giant-ass list of requirements like "physics up to electromagnetism". I'd say I was close to hitti…
> And, perhaps, in a class of 100 people, why should everyone come out with the same laundry list? I fully agree with this point. People here argue that minimum for scientist should be cut down to something that fits into strictly vocational degree that scores them a well paying job. Every scientist in any STEM field I know knows "the minimum" that is larger than what fits into masters degree in their field. Someone…
Re: What every computer science major should know (2011)
#165As a manager, I'll tell you what is more important than almost any of these technical skills (although they are important): 1) The ability to communicate what needs to be done, and how it is to be done, _before_ diving into the work. I work with tons of people who, sure, can get the work done, but I have little to no visibility about what they're going to do and when they think it will be done. I'm never going to be…
I think those two abilities which you cite are developed ONLY with experience in solving real-world work problems. These are not skills which can be taught in a school. They have to be learned through work, through mentorship and through the experience of failures and successes. Internships certainly help, but it takes years. It's OK if hires fresh out of school aren't able to do these things. These need to be cultiv…
Re: What every computer science major should know (2011)
#166Re: What every computer science major should know (2011)
#167Earlier quoted context omitted.
Technical ability isn't relevant in ~90% of "CS" jobs. Everyone can do the basics, and you don't need more than the basics to do 90% of "CS" jobs. You will be left behind by coworkers who can communicate, and you will be confused about why, if you can't communicate well. Specifically, if you can't take an idea you have and convince others it's the right idea.
I agree, but I'd describe those as "corporate IT" jobs, not as "CS" jobs. A degree in CS really isn't suited to later being embedded in a large corporation's IT division. To fit in there, a computer scientist would first need a lobotomy.
I don't want to drag us down the rabbit hole that is the current state of software education, however.
Re: What every computer science major should know (2011)
#168I come from a CS background and learned a lot from studying CS, it definitely gave me a strong foundation and changed the way I view and understand computing. I learned most of the topics mentioned in this document while in school, and although they are all valid, they are not enough for real world needs. ~90% of CS undergraduates will end working as or with engineers, and in 2019 here are the skills that are indispe…
> 6) communication skills
I would argue these are the only two things in your list that should be included in a Computer Science degree.
There's a limited amount of time to cram everything into a CS degree, and it should focus on the science, not the practice. The science is harder to learn than the practice. All of the practice items are picked up on your first job out of college.
Re: What every computer science major should know (2011)
#169These kind of lists are always hilariously overstuffed, like a big comfortable rhetorical couch. It's not all that hard to make up a giant list of 8-10 years worth of material, which if anyone took seriously would also lead to a monoculture i.e. we didn't have any time to do anything aside from computer science and this giant-ass list of requirements like "physics up to electromagnetism". I'd say I was close to hitti…
Agreed. Advice about career paths should always be personalized to each individual. I'm someone who has not had a traditional CS education, I am totally self taught and I don't have many certs at all, actually, I had taken a few courses and not taken the tests, and for all of those courses, the only reason I had taken them is that my employers paid for them. I've had over 13 different jobs in the past 20 years and th…
Re: What every computer science major should know (2011)
#170Earlier quoted context omitted.
I would say there's plenty wrong with this list, but this one is, ironically, mostly true but malphrased. A better way to put it would be: "don't be content with being so bad at communication that it gets in the way of your ability to make your (technical) point". If you know something about how _not_ to communicate (badly), you can allow your technical expertise to be more influential when technical decisions are ma…
You seem to be saying that unless someone's communication skills are WAY below average, they can slide by unnoticed. I can't agree. In my experience, 90% of developers have poor communication skills and it hurts them every time they write or speak publicly (or document their code). Not just developers, of course. It's a rare person who knows how to tell a tech tale that isn't a confusion of disconnected factoids, or…