J
Jeanh
The current fads in computer science, IT and software engineering
Functional Programming.
This programming paradigm, most famously used in Microsoft Excel, is taking software development by storm.
(source: You do not have permission to view the full content of this post. Log in or register now.)
The basic ideas behind Functional Programming are that:
(source: You do not have permission to view the full content of this post. Log in or register now.)
In all seriousness, here are some of the reasons our open source project uses Functional Programming.
Reactive Programming
Because functional programming is passé - Fowler hasn't bothered teaching that Cousera in a year.
DevOps
Because it got pretty hard to deploy code for about five years there.
Platform as a Service (PaaS)
Because Heroku.
MEAN Stack
Why say Mongo, Node.js, and Angular when I can use an acronym? I know there's E×ρréšš.js too, but I think they only included it so they didn't have to call this the MAN stack.
Laravel
Makes writing PHP code look (nearly) palatable.
Scala
Because you love the JVM but after forever, Java has lost the new language smell (or because functional).
Material Design
Responsive wireframes (a bit of a simplification)... It's design, but it's well into the realm of coder's lives.
Functional Programming.
This programming paradigm, most famously used in Microsoft Excel, is taking software development by storm.
(source: You do not have permission to view the full content of this post. Log in or register now.)
The basic ideas behind Functional Programming are that:
- Data should be immutable. Instead of manipulating data, you should make a new copy of it.
- Programs should be stateless. No function should care about what has happened in the past.
(source: You do not have permission to view the full content of this post. Log in or register now.)
In all seriousness, here are some of the reasons our open source project uses Functional Programming.
- It allows for parallelism and concurrency on a massive scale. This is why some of the highest performance languages are functional.
- By using abstractions to handle tasks like iteration, you reduce the amount of code you have to maintain, and thus the number of things that can go wrong.
- You shift the work from a bunch of small specific functions to a few higher order functions (functions that take other functions as inputs or output a function). This allows you to focus more on results than specific steps.
- With no stored state and only derived data, you can scale horizontally (with more cheap computers) rather than up (with more powerful computers). This makes it easier to spin up servers when traffic rises and power them down when traffic falls.
- JavaScript, the most popular language (and the one we teach), is well suited to the Functional Programming paradigm.
Reactive Programming
Because functional programming is passé - Fowler hasn't bothered teaching that Cousera in a year.
- Reactive programming is an emerging discipline which combines concurrency and event-based and asynchronous systems. It is essential for writing any kind of web-service or distributed system and is also at the core of many high-performance concurrent systems.
DevOps
Because it got pretty hard to deploy code for about five years there.
Platform as a Service (PaaS)
Because Heroku.
MEAN Stack
Why say Mongo, Node.js, and Angular when I can use an acronym? I know there's E×ρréšš.js too, but I think they only included it so they didn't have to call this the MAN stack.
Laravel
Makes writing PHP code look (nearly) palatable.
Scala
Because you love the JVM but after forever, Java has lost the new language smell (or because functional).
Material Design
Responsive wireframes (a bit of a simplification)... It's design, but it's well into the realm of coder's lives.
- Algorithms in general. Great, fun to make and think about, necessary, etc. but the collective circlejerk around them has become kind of ridiculous. They serve a good purpose, but in practice not much time or effort is actually spent writing amazing algorithms. Way overblown at the moment because coding interviews are using them so much lately after trying things like fermi problems and asking obscure language specific questions.
- JavaScript. Again, not knocking JS. I've been using it for over a decade now and it gets the job done very quickly, and it's neat to see some of the backend things you can do with it so easily now, but the obsession with it at the moment is running full pace and is pretty overblown. Reminds me of the massive Ruby bubble/hype of years past that finally seems to be settling down to reasonable levels.
- Macs for development. They're good machines, they're UNIX based, etc. but they're not that good, especially for the money (still about 3x a PC for the same specs) I've noticed a clear shift towards Macs in the past few years in IT circles that definitely wasn't there before.
- Youth in general. It's hard for me to bite the hand that feeds me on this one because I'm sure the fact that I got started very young has helped and will continue to help me, but it's overrated. Honestly I think given the right approach someone at 30 could learn a language just as quickly as someone at 18. And they have generally built up a level of organizational skills and having their shit together that can help significantly in a way that a kid still trying to figure his life out can't really compete with. I could go on about this point for quite a while, but TL;DR youth is hugely overvalued and overrated in tech at the moment.

