Clojure in a working from home company.
I'm happy to see that some experts are starting reading my blog. This is why I started this in first place.
Now I would like to raise a question for anyone that is reading.
In normal company is easier to check how people work, help them improve in the way code is written and help them improve as programmers by making in-company seminars and things like that.
Working in a remote company I have the feeling that this is very hard to accomplish. This is why, even though my love for clojure became bigger every day, I feel that static compilation is great when you work on a remote company. For example the biggest problems we have are on our front end, build on groovy. Groovy really is great for front end and thanks to its DSL is also great for database querying.Its dynamic nature help a lot when you need to customize it for clients.
The real issue is that it isn't compiled, this cause often problems because people don't test their code (actually they don't ever navigate in pages they created sometime).
This is why I was investigating on a full stack of technologies that are statically compiled (Scala has also a way to create front-end in a static way, and its Objects can be even more restrictive than Java).
I will start this projects using Angular Js and Clojure-Scala-Java to see which one will be easier for people to mantain and read also from a remote location. What do you think about this? I really would like to listen from people that works every day with Clojure / Scala if they feel that these languages can help also in a distributed 'work' environment.
Working in a remote company I have the feeling that this is very hard to accomplish. This is why, even though my love for clojure became bigger every day, I feel that static compilation is great when you work on a remote company. For example the biggest problems we have are on our front end, build on groovy. Groovy really is great for front end and thanks to its DSL is also great for database querying.Its dynamic nature help a lot when you need to customize it for clients.
The real issue is that it isn't compiled, this cause often problems because people don't test their code (actually they don't ever navigate in pages they created sometime).
This is why I was investigating on a full stack of technologies that are statically compiled (Scala has also a way to create front-end in a static way, and its Objects can be even more restrictive than Java).
I will start this projects using Angular Js and Clojure-Scala-Java to see which one will be easier for people to mantain and read also from a remote location. What do you think about this? I really would like to listen from people that works every day with Clojure / Scala if they feel that these languages can help also in a distributed 'work' environment.
It really depends how on-board everyone else is with the technology. If you're the lead and it's kind of your own pet project, and you don't have excitement or buy-in, then you're right--it'll end up being a careless free-for-all mess. People may even intentionally sabotage it because they don't want to deal in a language that's being forced on them. You'd be best off with a totally boring-but-understood stack of Java or C#.
ReplyDeleteIf however people are excited about the language and technology then the team will be willing to find ways to make the technology work well in the project. Make sure this is the case before proceeding.
A side note, I'd avoid angular. I'm currently on a huge reimplementation to kill angular in a current project. It's really great for prototyping and draws you in, but as soon as you get to something with bigger datasets, the performance is totally unacceptable. We're going back to old-school DOM-generation-on-the-server. React is supposed to be fast and was something we considered for the refactor, but after failing once we wanted to play it safe this time.
Hi Dax,what do you mean by huge datasets? Aren't you paginating it on server side? Thanks
DeleteWe tried various approaches. The only things that got remotely acceptable performance ended up being hackier than just generating the HTML server-side. And I must admit it's nice not to have to deal with JS so much anymore -- plain Clojure HTML generation is much easier to test in a REPL than angular's million layers of abstraction.
DeleteI've worked in the past few months on a project using Angular for the frontend and a Scala + Play backend (mostly RESTful endpoints and some Java code for Open ID authentication).
ReplyDeleteIt works fine and there's nothing special about the endpoints, they could be replaced with a Clojure + Liberator backend and it should work right away.
Actually what I plan to try now is using ClojureScript instead of Angular for the frontend, which be much nicer to work with because you have core.async to deal with all the async calls which get very cumbersome in Angular (lots of nested callbacks or promises).
I think that the only advantage that Angular has is that it might be more popular so designers in your team would like it and you'll find some examples/answers when you run into issues, but after doing a fair amount of ClojureScript with Reagent, I like the latter much better.
Hello Denis, I will check it, this project will be for tests so I think I will also try that.Thanks
Delete