Is there currently an intended way in Exercism to teach people language specific development practices? I know there is usually some documentation on how to set up a functional development environment but I’m asking more about teaching people on how to use said environment.
Maybe it’s out of scope but I thought about how certain languages lend themselves to a certain development flow and people having a hard time getting into a language might sometimes just come from a different language background and try to do things the way they know how to develop in other languages.
For example to be happy to develop in Java you probably want to learn how to use the refactoring catalog in your IDE/editor, how to generate a constructor from fields, etc. I’d also argue that it’s quite helpful to learn how to use the debugger of your IDE/editor. Sometimes I see people writing Java and they’re so awfully slow because they don’t know their IDEs shortcut, no wonder people complain about too much boiler plate code.
If you write Ruby it’s probably nice to know about pry and pry-byebug (maybe there’s something better by now, I might be out of the loop) to poke around in the running code.
To enjoy writing Lisps it really helps to get comfortable with a paredit style package (calva paredit in VS Code). I’d also argue that REPL driven development helps a lot or that people should at least be made aware of that style of development.
The problems that I see with trying to teach development practices through Exercism that I see are that a certain development flow might be not work for everyone and that some things might be IDE/editor specific. But of course we could show/teach a range of different approaches and editors, a track wouldn’t have to prescribe the one true way to develop in language X.
Would be really interested to know how other people think about this. :)
Edit: This should probably be moved to “Exercism” instead of “Programming”, sorry.
Over on this thread I mentioned the clojure-exercism-template, which was created by PEZ when we launched v3 specifically to address the shortcomings of our editor, i.e lack of paredit and inline eval.
I’ve taken this as a bit of a challenge, and very much want to make the experience better. I’m glad you brought this up because it might make me bump up the priority a notch.
As far as I’m aware, Nextjournal’s clojure-mode is the most finely-crafted in-browser editing experience available. And it is a plug-in for Codemirror 6, so we’re in luck because afaik that’s what we’re using on the site!
Edit: I realized this is sort of tangential to what your post was about, and it might even deserve its own topic. But then again, what better way to teach language specific editing features than to put them right in their hands?
@fap Great topic. I also like these ideas about connecting Exercism things more with the real developer life.
I think of these topics like concepts without exercises or maybe instead of standard Exericsm exercises there can be some other kind of “assignment”. These could then also be placed in the concept tree at an appropriate position.
“How to write tests” is another of these topics does does not fit our classical exercise model currently.
@iHiD Nice to hear that you like the idea, will see what I can do.
@porkostomus I can see why you brought the topic up, it’s very much related. I’m personally not that interested to improve the in-browser environment as one of the selling points of Exercism for me is that I can solve the exercises locally in my editor of choice, but I can see that it’s very good for accessibility if we improve the in-browser editor experience. If we can integrate clojure-mode without much hassle then that would be really nice. :)
@iHiD Do we have numbers on how many solutions get submitted through the web editor vs the CLI?
@junedev Oh, great idea, that’s also a topic that interests me!
In my mind there are two separate topics when it comes to testing. The first one is “how to write good tests”, which is more in line of “learning how to program” in general, without being bound to a particular language. Although some languages might need different testing approaches. Not sure how universal testing principles are because I’m limited in my thinking by the languages I’m fluid in.
The second one is properly utilizing a certain test framework in a particular language. This would go into the direction of teaching a certain framework or library (some languages come with a default test framework, but other do not, so we’d have to pick one?), which I think is currently not really done on Exercism?
Or do you think teaching testing for a particular language is fine and a bit of duplication in the form of general testing principles repeated in the language tracks is fine?