DEV Community

Cover image for The Many Worlds of Programming

The Many Worlds of Programming

Josh Hadik on February 12, 2019

I remember when I first started learning Elixir. It was a little over a year and a half ago. At the time, I was living happily in the world of Obj...
Collapse
 
balkac profile image
Kral Balkizar

Nice post, but I think it should be called "Many worlds of Software Engineering" or something like that, as not all of these worlds are about programming primarly :) Website idea is definitelly good idea, looking forward ;)

Collapse
 
joshhadik profile image
Josh Hadik

Yeah I agree. When I came up with the title I was planning a list more focused on the differences between OOP, FP, Low Level and stuff like that, but as I wrote it the list expanded to something more broad than I originally anticipated.

I wonder if there's an even broader term, maybe "Many Worlds of Development" that could also cover certain aspects of design (UX, UI, Data Driven, etc.) and stuff like that.

Collapse
 
jonathansimonney profile image
Jonathan SIMONNEY

Thank you very much for the article.

Most likely gonna be false, but I think the IOS world could be expended to a more general mobile development world (or if you want to keep IOS as a world, maybe create a galaxy) , with android development (kotlin and java, for what I know), and hybrid technologies (nearing from the modern frontend and SPA on this one, but anyway. ). The hybrid technologies could include nativeScript, react-native and flutter (sorry for those I didn't quote...).

Have a nice day.

Collapse
 
joshhadik profile image
Josh Hadik

Android was definitely one of the "worlds" I knew was missing from this list, I'm just not confident enough with Android development to write anything useful about it. I think I'll add a "Missing Worlds" section to the end to hopefully encourage the community to help me out.

I also really like the idea of organizing the worlds into separate galaxies, could apply to way more than just mobile development, and I like the idea of splitting the "mobile" galaxy into iOS, android, and hybrids (maybe call it "Progressive Web Apps?")

Collapse
 
andrewharpin profile image
Andrew Harpin

Hard real-time, it's an extension of low level programming, but distinct in that in general it has timing, safety and security requirements religiously applied.

E.g. Aerospace, Automotive, Industrial control systems

Collapse
 
joshhadik profile image
Josh Hadik

I like this.

Would you be willing to write up a quick description of it (nothing to crazy, just a couple sentences) along with a list of five or six key components so I can add it to the list?

Collapse
 
andrewharpin profile image
Andrew Harpin

The fundamental requirement of hard real time is achieving some specific task, in a specific amount of time.

Sometimes this is a repetitive periodic action. E.g. 1ms.

Or a deadline action, event x has happened, complete action y before time z.

All the timings will have a tight tolerance e.g. 1% or 3% of the target time.

This is typically used in control systems or monitoring systems.

Safety is due to the element being controlled. Usually with legal or industry standards to be applied.

Security due to malicious action on those safety systems.

Collapse
 
laurieontech profile image
Laurie

Architecture! Design patterns, interdependencies, coordination. And I agree with Kral, many worlds of software engineering seems most appropriate.

Collapse
 
joshhadik profile image
Josh Hadik

Love this!

Just added it to the list. Any changes or additions you'd make to the description / key components?

Collapse
 
laurieontech profile image
Laurie

Looks good. I always think architecture has some elements of security. Mainly around understanding what is allowed to interact with what and securing those pieces. However, that's probably a section in itself!

Thread Thread
 
joshhadik profile image
Josh Hadik

Yeah security is a tricky one, it's mixed in with literally every other world but somehow also a world of it's own! But I think it's important enough to architecture to deserve a spot on the list.

Collapse
 
lewiscowles1986 profile image
Lewis Cowles • Edited

I mean. You need to visit tooling & ops when programming but I'm glad you're refining domain concepts. Wait for years 5 & 10 πŸ˜‰

Oh btw control-flow is what makes OOP & FP (more broadly non-linear Dev) possible.

Collapse
 
amandachalfant profile image
Amanda Chalfant

This is great! I’d love to also think of how these worlds are connected - what links exist between OOP, testing, DevOps, etc. Each of these β€œworlds” cannot exist without some or all of the others!

Collapse
 
joshhadik profile image
Josh Hadik

Yes, I agree with this! not only are they interconnected, but some of them change drastically depending on the others (testing techniques vary between FP and OOP, DevOps depends on what you're developing and how you're deploying, etc.)

Collapse
 
muaathabusaad profile image
Muaath

What a great idea , really appreciate it,
I would suggest that to have a graph representation to describe each one of them