Live data from Hacker News

Which programming paradigm had the most impact on you as an engineer and why?

news.ycombinator.com

31–40 of 91 posts

Re: Which programming paradigm had the most impact on you as an engineer and why?

#31
Clean Architecture. I’ve only tried to implement it once, then I realized I was over engineering. But I still use it as a template to design softwares, but I implement something more crude.

Laravel’s use of conventions and facade. It was quite nice to see how a carefully designed developer experience can improve productivity. For most app, the code basically write itself.

The versatility of common lisp.

Re: Which programming paradigm had the most impact on you as an engineer and why?

#32
Functional programming combined with the process dependency tree of Erlang.

Up until a point functional programming with PHP or Python were always littered with small state time bombs which could change at any point in time. Only after thinking about state explicitly in Erlang based programming, was it clear how the state enclosed in OOPS is a total digression from reasoning about state and behavior separately.

Python, Erlang and then Clojure

Re: Which programming paradigm had the most impact on you as an engineer and why?

#33
Ruby's pry.

Just dropping `binding.pry` anywhere in the code, run it and then get a full REPL with all the variables and instrospect everything with `ls`. This is why I am still coming back to Ruby and writing everything like it. In most other languages you spend a lot of time actually trying to find a way to debug properly. Happy to hear recommendations how other languages are doing it. (I know that there are debuggers :P )

Re: Which programming paradigm had the most impact on you as an engineer and why?

#35
Actor Model.

Go down the rabbit hole of the actor model & eventual consistency, it will make you a better developer. After reading everything you can on the topic, there are a couple of frameworks that implement it (Orleans Framework & Akka & others). I think it will make a comeback as it is a natural fit for multicore cpu's/gpu's.

It is also fairly easy to create, persist and resume state machines, which can help a ton for complex workflows. It also forces you to think in a bottom-up approach instead of a top-down approach like most languages/frameworks.

Another interesting thing to dig into is "code calisthenics" and "tiny types".

Re: Which programming paradigm had the most impact on you as an engineer and why?

#36
post #16

Pure functions. It totally changed my game when I realised that state was "evil" and that it should be treated like the dirty little possum that it is. The whole functional programming paradigm made a big change for me. Coming from the 90s you know, we were fed Object Oriented paradigm down the throat up to mid-2000s. If you didn't do OO on your resume, no point applying. Then slowly the whole industry started lookin…

> I'm not sure what the "next" thing is, but we seem to start to have this whole UI thing finally under control. Except tailwind, anyone in their right mind needs to see what a clusterf that is.

> composition over inheritance

I agree here, so I view the use of utility classes (like Tailwind) as the composition approach and the traditional CSS approach of using complex cascading rules as the inheritance approach. It took a while for people to see that big inheritance trees don't scale well in OOP languages. I'm seeing the same thing repeat with CSS here where people cling to the old way because it's what people have been told is best practice.

Re: Which programming paradigm had the most impact on you as an engineer and why?

#37
First pure functional programming (not just functional programming) and then type driven development with a typesystem that supports dependent types.

In combination they are a huge productivity boost that you can't really imagine without having tried it. I still remember the days where I wrote tests over tests and ran the system to check if it works. But "if it compiles it works" is just a sooo much smoother workflow.

Re: Which programming paradigm had the most impact on you as an engineer and why?

#38
For me the biggest impact I've seen in my every day programming is creating a list of utility functions like lodash or underscore.js for both Js and Php.

I have these 2 huge files with hundreds and thousands of small unit tested functions that do everything under the sun like sorting a js hash by key, to making ajax requests, to all the things I've needed to do over the years. This has reduced my time to code by so much I can't even begin to describe and also I feel confident of not making silly mistakes since the functions are tested and reused many time. Thanks to tree shaking in js it also means I do not increase the bundle size.

On other thing that has helped me a lot with programming is learning zen css and zen html, i.e. div.test>span>b type stuff. Such macros really help a lot to avoid mistakes and help speed up things.

Re: Which programming paradigm had the most impact on you as an engineer and why?

#39
It's interesting to see how many people in this thread have had negative experiences with OOP. As much as I don't do OOP that much anymore, I think it had a positive impact in me. But like every popular practice, there is a lot of bad patterns you have to navigate through.

Things like depending on interfaces as opposed to concrete implementations; or prefer message passing over direct data access are practices that I learned in OOP that I still value. The "Small Talk crowd" from the first team I worked in and influential authors in the topic (specially Sandi Metz) still have a dear place in my heart for how they improved the way I view software design.

Re: Which programming paradigm had the most impact on you as an engineer and why?

#40
The imperative paradigm. Because most or all of my code is imperative. Of course most of my code is also object oriented but it's more of an add-on and in practice classes function more like modules. I don't think much about inheritance and polymorphism.
Post reply on HN