Functional programming as defined in its purest form would be ( as some others defined here ), akin to "mathematical functions as the form of abstraction". In the context of computer programming, Haskell would be the epitome of this. That being said, elements of functional programming are already available and making more head-way into imperative languages creating a hybrid imperative/functional style which I think is great. Some elements of functional programming that provide huge benefits are hard to argue against:
1. high-order functions ( as inputs or outputs ) e.g. map, reduce, filter, etc. Direct benefit is a significant reduction of code and the ability to chain operations together and compose them.
2. immutability. Direct benefit here would obviously be minimizing shared state thus reducing bugs
3. side effects: minimizing and pushing side-effects to "edges" of an application. and/or designing programs such that side effects can be mocked out. e.g. building up a Http request that can later on be executed, thus facilitating unit-testing.
4. type checking: Converting runtime errors into compile time errors ( to some degree ). again, by offloading work to the compiler, you can catch errors much earlier on.
The biggest problem w/ FP ( as I have evidenced ) is that while these things are great, when taken too far for the sake of pure FP itself, can create complex code. so there has to be a balancing act involved.
A lot of skepticism and resistance here. @tonyspiro, all the best at this. I do follow what you're doing and see the benefit of this in comparison to and also regardless of WordPress. At some point most things will be operating via APIs, and via hassle free SaaS services anyway. I, for one would not want to deal with installs, updates of any kind. It sounds like you've got some good traction that can hopefully continue. I will though acknowledge a few concerns:
1. A proper import / export tool for risk management
2. A slightly more refined message / call to action
3. Why the JS centric name/brand? Can it be used outside of NodeJS based tech stacks?
4. The price poice does seem high for small teams. You mentioned that this is normal for SaaS for some companies you listed. However, until you're established, it sounds a bit high. Can you perhaps go for a discount for the first X amount to time to entice potential customers?
A lot of these hacker- rank like coding tests often require some extensive preparation. I've used codility (I think that was the one ), and it actually mentioned that ideally it requires at least 2-3 weeks of preparation or more.
So much this^^! Like everyone here is saying, interviewing itself is a skill, and part of that skill is how the interviewer communicates and takes part in the problem (or lack there of ). Every point you mentioned is an issue I've seen as well.
It's quite frustrating, I've submitted my portfolio of open source projects on GitHub for interviews. I specifically told the recruiters, HR personnel, hiring managers and some of the developers that the projects contain a large enough body of work to see examples of my code. These projects are quite comprehensive and not one person looked at them or mentioned them during the interviews.
Unfortunately, people in general rarely try to first understand what the candidate offers. It's more often ONLY about whether candidates uunderstand the exact way the company uses certain technology.
Of those three (Kotlin, Scala, Groovy), Kotlin is by far the most pragmatic. Scala is nice, more powerful, but has a high cost when it comes to learning curve, complexity, and the library ecosystem. I'm not sure of the state of Groovy at this point after it got transferred to the apache foundation. Kotlin on the other hand strikes a nice balance in many areas.
Career sabotage, IP theft?! That's terrible. If it was a regular job it may be easy to leave or find another one, but doing a degree, especially a PhD, is a serious commitment and a lifestyle change. Outside of this, the bullying behavior is common enough across everywhere ... put a person with serious ego and control issues in a power position and they will end up a tyrant.
I used xamarin a few years ago for a moderately sized iOS app. It got me about 95% there. That last few percent was brutal, the app kept crashing after coming back from the contact chooser. Couldn't find a way around it, even with latest xamarin version, hot fixes. Was very unfortunate. I'm pretty skeptical of frameworks that abstract away a whole system. Hopefully, xamarin is a lot more stable and powerful these days.
This lessons were very informative and nicely structured. Having these type of short, concept focused lessons are perfect for serving as introductory material.
1. high-order functions ( as inputs or outputs ) e.g. map, reduce, filter, etc. Direct benefit is a significant reduction of code and the ability to chain operations together and compose them.
2. immutability. Direct benefit here would obviously be minimizing shared state thus reducing bugs
3. side effects: minimizing and pushing side-effects to "edges" of an application. and/or designing programs such that side effects can be mocked out. e.g. building up a Http request that can later on be executed, thus facilitating unit-testing.
4. type checking: Converting runtime errors into compile time errors ( to some degree ). again, by offloading work to the compiler, you can catch errors much earlier on.
The biggest problem w/ FP ( as I have evidenced ) is that while these things are great, when taken too far for the sake of pure FP itself, can create complex code. so there has to be a balancing act involved.