I guess I’m really using this blog now to channel my frustration. I should post some more programming techniques or tips on here, and not use this as a place to rant about anything that comes to my mind. Well here we are again.

Teaching Programming

When you work on a programming project, and people like what you create, there tend to be people showing up, who look up to you and want to be able to do the same. Some ask for advice, some want to join the project, others try to replicate your work and some ask you if you can teach them how to program.

What these people sometimes don’t realize is that programming is finally just a tool. It’s a very sophisticated way of telling a digital machine what you want to do. And it’s up to the user of that tool to decide how to use it. When you ask people to teach you programming, you might as well ask them how to use a hammer. Once you get what it can do, you have hundreds of possibilities. But you need to decide what to do for yourself.

You can solve math problems with it, create computer games, render advanced graphics, simulate the world or run a logistics system. Of course, you can’t do that from the very start, but if you realize this, you might get there at some point. When you really engage with this philosophy, experience will come all by itself.

Programming is a very iterative process. You do something, think about it, correct it, add to it, improve it, change it or delete it time after time. Everything you’ll look up how it works, will give you a basic idea of what it does. Don’t be afraid of copying&pasting small sequences of code you find online into your (private) projects. What you need to pay attention to there is the following:

Prefer to use code that you understand. If there are multiple solutions, choose the simple one that does what you need. Think twice about using a full class someone else wrote. You research that stuff to find out how it’s done in the language you’re using, not to download a system that does it for you. You need to make your design decisions yourself. Also: Copyright.

When people try to teach programming, it mostly boils down to: do stuff, loop stuff, switch stuff, now get creative with it. I can not emphasize this enough: Yes, you need to know the basics of how it works, but then you need to use your imagination.

Building a community

I don’t know that much about this part. But the overall idea I get is that when you do stuff you like, people might come around and like it too. That is what famous people on YouTube always tell aspiring YouTubers, and the exact same thing applies to programming. When programming is an art, this is attracting an audience. Whatever you do, somewhere are people that will like it. But the important part is that it’s your creativity creating the thing they like.

This is what gets people to stay with your project. The opportunity to participate in something unique, supporting new ideas, getting something that was unknown before. You have to offer something. Do not simply do the same that others did. Don’t just say “I have a community here now”. A community cannot be created, it needs to evolve.

Then you need to worry about how to keep this community together and handled in a sane way. When you are more of a techie/twitter person, you’ll probably use IRC channels, if you are more of a designer, you’ll probably go for forums somewhere. Peoples characters are diverse, and you’ll always find sane but crazy people that will happily rank up to moderator status.

And I think the final thing to say here, is that you should be honest with your community. People might rage about your decisions or behaviors, but in most cases, people will understand you, and support you in what you do. These are the people you are looking for.

Noobishness

Finally, let’s talk noobs. It’s a topic a community like LU with largely minor people in its audience face a lot. It’s always good to be nice to people, but It occurs to me, that there are two basic rules, that may limit your patience.

  1. Don’t think for them. When you have a programming project, people need some understanding on how to make it work. If it’s complicated, you should have tutorials for it, but there is a level of detail you should not push over. “Download the zip file, extract it and run abc.exe” should need no further explanation.
  2. Don’t bother with stupidity. When  you explain something to someone and they can’t follow your reasoning at all, stop. I don’t mean that you should tell everybody off who doesn’t understand you the first time, but sometimes people simply can’t understand your point. Just leave them be in that case.

You shouldn’t let someone down though. Try to be honest about your values and limitations, and stick to it. LexManos of Minecraft is a good example. He might be very harsh at times, but he keeps things in order.

This is enough for now, I hope my next post will be more useful and less rambly.

Have a nice day