Like most of these types of articles, it seems to me, to be biased towards a certain genre of development. I don't know how often I encounter a lot of the stuff the author seems to consider "fundamentals."
I have spent a good part of my life doing things like device control, and direct, native, user interface. These can get mui hairy.
It's difficult to talk to a lot of folks about these, as everyone is focused on "the Big Picture," to quote Peter O'Toole.
Device control, in particular, has a lot of aspects that are unique, and not particularly applicable to many other disciplines. With the advent of some of the new communication techs, like Bluetooth, and advanced serial buses (like USB and Thunderbolt), we're starting to see a bit of cross-pollination with communications (another discipline that many software developers never need to worry about).
UI has always been best served (not exclusive, but best), as native. This means that each platform tends to have a specific framework.
Learning frameworks, SDKs, and APIs has always (for me) been the most time-consuming part of adapting to a platform or system.
I strongly agree. I’ll take any article describing what “every” developer should do with a pinch of salt. A lot of developers are out there day in, day out, doing CRUD-y or UI-y work and have no need to set aside time to read a lengthy paper about LISP. Not that the paper is bad or not worthy, but the range of “developer” is vast these days.
I guess I’m talking about myself here too. I have no Computer Science training and can’t say I’ve ever felt like I need it. I could take the time to read an academic paper about the next 700 programming languages or I could read an introduction to iOS development with Swift. I know which one is most likely to help my career.
I've also been a developer for almost 10 years without any Computer Science training (aside from my college diploma). I've also felt the same way about not needing any further formal education up until a certain point.
That point is now, and it's partially out of boredom. I've worked with many languages, frameworks, libraries, patterns, and they're all starting to look the same. I've become a master of tools, able to reach for the right tool given a specific scenario, but I'm starting to find I'm lacking a sense of curiosity and depth.
Maybe without a strong foundational knowledge, we'll only ever be users of the tools, and never creators. I feel like I need to start giving back at some point in my career. Maybe it's time to start working on foundations.
> I have no Computer Science training and can’t say I’ve ever felt like I need it.
Did a CS degree (92-95); Database design + SQL has been the only thing properly relevant to my career* (and then only the theory side because the practical was Oracle embedded Pascal...)
Not relevant: Prolog, SML, electronic design, 68000 assembly, Pascal, processor design, compiler design, etc.
* some of them have been relevant in personal fun projects though
I too have spent a lot of time in the direct access mines. Everything has been just a bit too specific to write papers about, it's mostly a question of digging registers out of reluctantly provided datasheets. Fortunately I get to do it in C# now.
I've started a job recently where device control using C# seems to be a big part, but was not aware of that during the interview process and I'm now looking to learn more. Are there any keywords, topics, books, etc. that you would recommended I search for with regards to device control? Thank you.
I have spent a good part of my life doing things like device control, and direct, native, user interface. These can get mui hairy.
It's difficult to talk to a lot of folks about these, as everyone is focused on "the Big Picture," to quote Peter O'Toole.
Device control, in particular, has a lot of aspects that are unique, and not particularly applicable to many other disciplines. With the advent of some of the new communication techs, like Bluetooth, and advanced serial buses (like USB and Thunderbolt), we're starting to see a bit of cross-pollination with communications (another discipline that many software developers never need to worry about).
UI has always been best served (not exclusive, but best), as native. This means that each platform tends to have a specific framework.
Learning frameworks, SDKs, and APIs has always (for me) been the most time-consuming part of adapting to a platform or system.
But that's just me. YMMV.