Learn how to build Discourse plugins by helping me

(Angus McLeod) #1

If anyone wants to learn more about building Discourse plugins or just about Ruby on Rails and Ember.js, here’s a standing offer.

I can train you, providing detailed personal direction on

  • how to code;
  • how Discourse works;
  • how to think about your users; and
  • how to think about product design

in exchange for you working on tasks on the current task list for any of my plugins.

Why pay $5k for a General Assembly course when you can get personal coaching for free, and get the chance to work on code actually being used in real-life production environments? :slight_smile:

For example you could tackle any of the items on the continually growing list for the Events Plugin. If you want to tackle one of my plugins that I haven’t defined a tasklist for yet, just tell me (I will be going through each plugin and defining a list of to dos soon).

To qualify for this offer, there are two simple requirements:

  • You need a minimum level of proficiency with Rails and Javascript. Specifically you need to have read and (mostly) understood “the basics” I laid out here. I will give you a little test when we start to check this threshold is met.

  • You need to commit to it for at least a few hours per week, for at least 4 months.

I’m offering 2 ‘places’ in this ‘mentoring’ program to start. If I receive more than 2 expressions of interest (assuming I receive any :slight_smile: ), I’ll select the 2 I think best fulfil the above two requirements and are the keenest.

This offer would work well for anyone relatively new to web development, or if you want to learn more about Discourse itself, with a view to building plugins of your own. A big benefit of learning how to code, or about Discourse, in this way is that you’ll be contributing to open source projects used by a wide variety of users.

I been working with @Sudaraka in this fashion for the past few months on a new User Map feature for the Locations Plugin, and it’s gone well (@Sudaraka if you have anything you want to add about the experience please feel free). Version 1 of the feature is complete and merged into master and we’re currently testing it with @yanokwa, @lognaturel and @erlend_sh. This experience has shown that ‘remote mentoring’ of this sort can work well.

The reason I’m offering this is simple. I have a number of plugins I want to keep improving and strengthening (really need to write some more tests!). Keeping this up over the long term is not realistic. I can do it for some time to come, but not forever. Teaching takes time as well, but it is more sustainable over the longer term.

Just to be super clear, there is no money involved in this in any way. It’s a simple exchange of my time for your learning. There is also no expectation that you will continue to work on any of my plugins once you feel you’ve learn’t enough.

If you’re interested you can respond here or pm me.

Learn how to work with Discourse by helping me
(Jeff Atwood) #2

This is very cool, should it be in marketplace as well? OK to cross-post a bit and link back.

(Erlend Sogge Heggen) #3

(Ryan Erwin) #4

I’m interested. I started doing web development with Perl back in '98 and developed quite activity until about 2003… in the mean time I moved into management and later sales and distribution management. I managed a decent sized rails project from 2006 - 2008 and got my hands into some of it. Then I moved into sales management. Also learned Chinese (written and spoken) during that time.

I’ve always enjoyed tech stuff so in the last two years I’ve been writing more code again. I’m sadly still faster in Perl than anything else, but that whole ecosystem is dead, lots of broken modules, few updates, so getting to be impractical for even the simplest of tasks…

I’ve been working through the exercises in Elegant JavaScript. Rails has gotten a lot more complicated compared to where it was, but it’s interesting to catch up on all that’s changed.

(Sudaraka Jayathilaka) #5

For several months I have been working with @Angus in the project he mentioned above. But Angus was not just mentoring. Every time he tried to make me understand the concepts involved without just answering my questions. He ensured I was following all the best practices in coding rather than just writing some piece of code which works. I learned how should I think when I am solving a issue in my code. I think this is a great opportunity for anyone who loves Discourse development like myself. :blush:


That’s an awesome offer and I’d love to join but I’m far from the most qualified, I’ve mostly focused on how to glue existing software together with tiny bits of custom code and dabbled a little in a few other programming languages like C++, perl and Python. Pretty much zero Ruby and JS experience.

But I’m very interested in learning more, I’ll start reading the guides and maybe I can join at a later stage!

(Angus McLeod) #7

Thanks to everyone who has expressed interest so far!

I’ve decided I’ll take expressions of interest until the end of the work week, i.e. end of Friday wherever you live.

For those who have expressed interest, I have given them a small problem and given till the end of the week (i.e. the end of Sunday wherever you live) to work on it.

For those who, like @ssvenn, are wondering whether they’re ready, the problem I’ve set is set out below. If you think you could tackle this, PM me to let me know you’re interested in the offer.

The test is to work on this request for the Locations Plugin.

There’s a big hint about where to look for the ‘answer’ in the request itself.

You can make a PR to the Locations Plugin, or just link me to a Github repo where you’ve worked on a solution.

I’m not expecting you to complete the task perfectly. I’m more looking at how you approach it.

(Brendan Schlagel) #8

Hey Angus, this is awesome, thanks for posting! Both a generous offer, and a creative way to sustain development efforts on a whole slate of great plugins…seems like a total win win.

I’m tentatively interested, need to take some time tonight to go through your post on Discourse development basics, and figure out if I’d have the time for this. Will send you a PM by tomorrow if I think I’m up for it :slight_smile:

(Nichalas Petranek) #9

Angus, I’m in the same boat as @bts.

I really don’t have any development experience but would absolutely love learning and im definitely interested in the opportunity. I’ll send you a pm tomorrow evening once ive read your basics. Although without having done any reading, i already have an idea of where i would start tackling the problem youve outlined here:

I’ll pm you my thoughts on this shortly

(Angus McLeod) #10

Thanks to everyone who has expressed interest, the response has been great and I appreciate it.

I’m not taking any further expressions of interest.

For those who have expressed interest, you have until the end of Sunday to complete the exercise (as some have already).

(Angus McLeod) #11

Thanks again to everyone who expressed interest and turned in solutions to the problem.

I’ve chosen the first two participants in my ‘program’, @ryanerwin and @Ellibereth.

We’ll be learning about Rails, Ember and Discourse while working away on various items on my plugin to do lists for the next 4 months.

I’ll be putting out another call in around 4 months time, i.e. the middle of August, so if you’re interested in the next round, study up on the basics till then.

Locations Plugin
(Eingang) #12

I just wanted to say that this is an awesome offer and a great example of thinking outside of the box. It has a lot of potential, I think, to snowball, like the old 80s Faberge Organics commercial: you train two people, they train two people, and they train two people, and so on, and so on.

You missed a benefit. As an experienced higher education teacher, I can tell you that teaching and mentoring others is an excellent way to improve your own understanding and practices. From someone else’s questions, you’re often forced to think about things, especially why you do things the way you do, in ways you wouldn’t normally. The act of explaining something helps clarify your own understanding of topics. Finally, looking at how someone else tackles a problem can provide you with new techniques or better understand the pitfalls and benefits of particular approaches.

Lots of win here! If I commit to transitioning my existing community to Discourse, I’ll definitely be watching this thread for future opportunities. Even if I don’t, I appreciate your efforts to be a positive, constructive force in the community, helping to build community knowledge, resources, and tools.

(Ryan Erwin) #13

For anyone on this topic that was interested in improving their plugin developing ability, I thought that a “newby discourse dev” category might be a useful tool. If you think so too, chime in: