DEV Community

Discussion on: What computer science concepts should devs without a CS background prioritize learning?

Collapse
 
etresoft profile image
John Daniel

Stand-alone code.

At my current employer, I am one of the few people, if not the only person, with a computer science background. Yet almost everyone is a "coder". Some are writing Stata, some R, some Python, and I've heard rumors of a couple of web and db developers. They know far more math than I do and can Google the rest.

But what what they can't do is write stand-alone, automated code. One of the skills someone with a CS background must learn is how to write code that compiles and runs on someone else's machine. CS students have to submit source code that the professor will compile and run. The "but it works on my machine" refrain doesn't cut it in a CS class. Code has to run and run correctly under someone else's account, on someone else's machine, and maybe with different input data. That is a skill you can only get from a CS class, not Google, and not Coursera.

Collapse
 
josesaldana profile image
Jose Saldaña

Hi John. Could you please elaborate a bit more on this? A bit more of explanation would be very appreciated. Thanks!

Collapse
 
etresoft profile image
John Daniel

Most of the responses here are technical issues, like Big O notation or lambda calculus. Anyone can figure that stuff out on their own. I am talking about engineering issues that are important when building something. The differences between being a coder and a software engineer are not new. These engineering issues can be learned too, but someone learning on their own might never be aware of their existence to begin with.

I saw this in action at my (now former) employer. They knew about Big O notation, math of all kinds, and git. But they couldn't make a program run the same way twice, or on a different machine. There was no knowledge of UNIX, environments, dynamic loading, databases, information theory, text encoding, testing, validation, chain of reference, etc. Yet, by the only metric that mattered, securing more funding from wealthy donors, they were wildly successful.

I also see this in the Apple Developer forums. To get an app in the App Store, all you have to do is get it to launch once, for about 30 seconds, and maybe change a screen, on an Apple reviewers device. That is a challenge. Those indie developers, whether working alone or with a roomful of people just like them, don't understand the issues necessary to make an app run on someone else's device. They can figure it out eventually of course. But it is much more frustrating than having worked through those issues in a 2nd year data structures course in University.

Thread Thread
 
atanask profile image
Atanas Kostovski

I understand your point, but the question was specific to CS, not Software Engineering as a topic. But I'm sharing your opinion here - CS is not that hard to learn on your own, while I notice that self taught devs lack the Software Engineering skills and practices, and don't even know about the existence of them.

I'd guess it's like that because CS topics are very hot and trending buzz-words that you can easily hear about and google random course/book. But Software engineering topics are a bit more specific, and you have to know about them before searching for materials.