DEV Community

loading...
Cover image for A field without fundamentals?

A field without fundamentals?

Dustin King
Python. Webdev. Music. Also, other stuff.
・2 min read

I saw a post a little while ago asking: what are the fundamentals every developer should learn. I couldn't think of a good reply at the time (and now I can't find the post). I could think of a lot of things that it would help most people to know, and thought of saying something about how the human and business side of it is often more influential than the software side. I thought of listing some computer science concepts.

But are these really fundamental to the development of software? People without formal CS education can succeed just fine in software development. People sometimes develop software for personal use, without a business case in mind. And computers might one day develop software for their own use, without humans being involved.

There are some things that are nearly universal. For example (as one commenter to the post I mentioned suggested), virtually every piece of software you interact with, and every language you use, is either written in C, written in something that was written in C, or interpreted by something that was written in C, etc. C seems to have hit a sweet spot in terms of low-level control and portability. However, it's possible to develop software in assembler or machine code, and one could imagine an alternative ecosystem that built on top of that in a way that didn't include a C-like language.

Most languages have control flow, but one could also consider creating complex Excel spreadsheets to be a form of programming. One could imagine an alternative ecosystem based on Excel-like objects, with no concept of "the statement currently being executed".

More specialized kinds of software development might have fundamentals. If you're a web developer, the nature of the web is probably fundamental to what you do: HTTP, pages, CSS, the DOM. On the other hand, someone could come up with an abstraction that makes those things irrelevant for the average developer.

Is abstraction fundamental? Most of the things I've listed so far are examples of building abstractions upon a lower level architecture. However, it's possible to write programs without creating new abstractions.

What about principles of software engineering? Design, testing, and getting clear on requirements certainly help you write better software. Breaking things down into small, shippable pieces, à la Agile certainly help keep a project on track. But sometimes people develop software without knowing any of those things, and sometimes it goes fine.

I'm definitely not saying you should throw out everything you know. There are absolutely concepts that are important to either the history or the current state of software development. I'm just not sure that it truly has fundamentals in the same way that, say, physics does. What do you think?

I hope you've enjoyed this dose of nihilism. Here's a Weird Al song.

Discussion (6)

Collapse
speculative profile image
Jeffrey Tao

I'll challenge this by asking another question: what field does have fundamental things you must learn in order to do everything? Mathematics? Science? I'm not sure that those things have principles that you must learn in order to do everything. Certainly their sub-disciplines have fundamental things that you should learn. Software is the same way :)

Aside from that, development is a practice/application, not just a field of study. Are there fundamentals in this sense to, say, carpentry?

Collapse
bernaridho profile image
Bernaridho Hutabarat

Mathematics has principles. Physics has principles. Software is not the same with mathematics and physics. You are ignorant or just making excuses.

Collapse
briankephart profile image
Brian Kephart

And what about quantum computing? Even binary isn't safe! 😳

Collapse
riparello profile image
Vic Ripa

I appreciate the work on Carlo Pescio on the physics of software, physicsofsoftware.com (far from being complete, but seems to me like a step in the right direction).

Collapse
bernaridho profile image
Bernaridho Hutabarat

See nusa.blog . No I don't enjoy (your) nihilism. Nihilism rottens Western civilization.

Collapse
cathodion profile image
Dustin King Author

See nusa.blog .

Why?

No I don't enjoy (your) nihilism.

Well, sorry.

Nihilism rottens Western civilization.

I disagree, but a discussion of existentialism and such might stray a little too far off topic.