6 ms·
I'd be interested in a few real world examples of these cases where you are able to apply the CS knowledge in your day job. Would you mind sharing one or two?
by m90 8y ago
I'd be interested in a few real world examples of these cases where you are able to apply the CS knowledge in your day job. Would you mind sharing one or two?
- Royalaid 8y agoI can contribute some. Mostly it comes when you attack problems and conceptualize your solution to that problem, it does not come when looking for a library or digging through the API. Almost all of the problems you will encounter in your day to day work will be something with an already known solution or use a well known and researched pattern. Knowing the common language and use cases for data structures is probably the one I lean on the most. Seeing the general shape and feel of a problem that needs a graph style solution or being aware that looping through a nested array is bad but that there are easy off the shelf solutions built into most languages to that problem is important. How else would I know that at the root objects in js, dicts in Python, maps in Java, C#, and Clojure are all backed by the samething and have similar properties or that those properties shape how you interact effectively and efficiently with those things? Additionally it opens the world of acidemia to you by teaching you the conventions and tools you need to read and make sense of comp sci papers which let you stay at the cutting edge of your field if you want to, imagine being a machine learning engineer before Google made this huge push in ML, I tried when I first started college to grasp the ML stuff but most of it was beyond stuck in papers behind lots of calculus that I didn't have the time or desire to learn. My CS pushed me through Calc 1 and 2 so if I wanted to I could just brush up on that and push into ML. It's hard to explain for a lot of people because in reality you can go it alone and do fine but it always be the case that your whole career you didn't get a CS education so you might have holes in your knowledge that you had no idea about. Additionally it lowers barriers to careers and gives you an incredible opportunity to build a social network of interesting people who in general will go on to do big things and you can leverage that social network for even more career gains. I haven't even touched on the social aspects of college which you can dip into if you want or the fact that it gives you an opportunity to learn how to live on your own all of which are important but directly connected to CS but rather college as a whole. TL;DR You don't know what you don't know but college helps you get those tools and teaches you s whole bunch of lessons along the way, but you can go it alone of you want.
- xor1 8y agoThe most brilliant and successful engineers I know don't have degrees, and they accumulated their vast CS knowledge on their own. They all dropped out of college within the first two years and started working at 19-20. Two of them now run their own software consulting businesses, one is a lead at Netflix, and one is a lead at Google. They're all a bit older than me, in their early 30s now. The younger ones -- one just started at FB with a 240k+ base (he's only 23), and the last one is at Dropbox. The main factors I think people should take into account for whether or not a CS degree is worth it: Do you believe that you absolutely need the degree to break in to a programming career, if you're someone who just wants a good job and doesn't know where to start (like I once was, and like many of my friends who are just starting off with learning are now)? Or are you interested in a specific programming field that has a hard CS/Math degree/knowledge requirement? Is the combination of tuition/fees and opportunity cost significant to you? If you are responsible for paying your own way and taking out loans, compare spending ~4 years in college and having -$40k and no work experience, vs. working for ~4 years, having $40k+ in the bank (possibly much more), accumulated possessions/assets, credit history, etc. This is not nearly as significant if your finances are being handled by someone else, and/or you don't have to worry about money at all because you have access to wealth anyways (mainly through trusts, planned inheritance, a partner, or your family). Do you believe that you need to the environment, structure, and pace provided by college/university to actually learn CS, and that you're incapable of doing so on your own? I want to note that there's nothing wrong with feeling that way. It's just something to take into consideration. If you need to be completely immersed in it to actually retain the knowledge, then it's the right choice. If not, and you're someone who can learn everything on their own, then consider if being in a CS program would actually hamper your rate of learning, as you're forced to match the slower pace of others.
- mattlondon 8y ago> Do you believe that you need to the environment, structure, and pace provided by college/university to actually learn CS, and that you're incapable of doing so on your own? For me, it was not a case of not being able to do it on my own, it was not knowing what I should know. You could probably spend years becoming an expert on C# or Java or C++ or Go or whatever just by coding in it at your own pace (or at a job) and slowly learning by osmosis/experience/mistakes along the way etc. That's fine. But would you learn the useful theory along the way as well? And if you did, would you bother if someone hadn't created a nice structured syllabus for you? I know that I almost certainly would not had I just stuck to churning out fairly clunky (as I know it was now) code without the formal education in it. As you said, I am sure some people dont need this though, and somehow just have limitless time or already somehow know exactly what they should learn next, when, and in what order and never need to ask any experienced people any questions to clear up misunderstandings or have their knowledge checked. Lucky them.
- dominotw 8y agoLearning about b-trees, storage layers of databases comes in hand when you have to push your database to its optimum performance. Similarly understanding storage classes for data and indexes, for example when to btree vs lsm trees. If you are using lsm trees when and how it should be optimized. And ofcourse, in interviews :D.
- scarface74 8y agoYou don’t really need a degree for that. You can learn that from a book. As far as interviews, the last three jobs I had. 1. We need you to design a fault tolerant system with no single points of failure. Write out your design on the board. 2. What is your 90 day plan to build a software development department to achieve these initiatives. 3. Here are some issues with our AWS infrastructure and challenges we are having delivering features. How can you help solve them. Yes, I’m supposedly a hands on developer, but at a certain point in your career, you’re not asked to write a merge sort on the board.
- lazarljubenovic 8y ago> You can learn that from a book. And I did read it from a book, when someone from University introduced me to the book and explained it to me in short firstly so I can grasp it more easily on my own. I'd never pick a book about B trees on my own (booooring, let's learn LatestFramework.js). My University professors were mostly a complete disaster but at least the materials we had were good enough. Who wanted to learn had access to knowledge, and for motivation -- at least the grades. I can't see myself on my own even finding a book about theory and then going through it for 4 months, getting into nitty gritty details just for the kick of it. There's no obvious benefit at the time of learning it. By the time you can see the benefit on your own, it could be too late.
- scarface74 8y agoAnd I did read it from a book, when someone from University introduced me to the book and explained it to me in short firstly so I can grasp it more easily on my own. If you had to depend on a teacher to expose you to the books you should read, what about the rest of your career? I'd never pick a book about B trees on my own (booooring, let's learn LatestFramework.js). No, but if I needed to know about how to optimize MySQL, I would do research on - how to optimize MySQL. My University professors were mostly a complete disaster but at least the materials we had were good enough. Who wanted to learn had access to knowledge, and for motivation -- at least the grades. I doubt that there is a dirth of knowledge between the free information you can get and paid courses online. I can't see myself on my own even finding a book about theory and then going through it for 4 months, getting into nitty gritty details just for the kick of it. There's no obvious benefit at the time of learning it. By the time you can see the benefit on your own, it could be too late. There was no obvious benefit from me learning 65C02 assembly language and BASIC in the 6th grade. But I did it anyway. There was no benefit from me spending hours on the comp.lang Usenet groups in college. For any software developer though, there is an obvious benefit from having a deep understanding in marketable technologies - competitiveness in the job market.
- kluck 8y agoI would argue it is not about the little facts, such as specific sorting algorithms, but its more about learning how to approach a CS task, how to abstract and how to reason about code. The colleagues I know that were not as lucky and could not study CS, often they just hit a "wall" when they would have to argue about a certain SW architecture for example or when they were presented with an abstract problem, such as implementing some generic behaviour. And learning how to do this is a process that continues after the study, but it is important to get a basis. It is hard to really be specific here but if you do not have a good foundation of knowledge in a field, you will sooner or later (if you are not self-delusional of your abilities) regret it.
- cellularmitosis 8y agoWe were storing HTML blobs in a database, and we needed to run through all of them and manipulate some tags. A coworker argued that we should use regex. I was able to turn that into a teaching moment about the Chomsky hierarchy, and how (simple) regex can't be used to parse languages which feature arbitrary levels of nesting.