This post is inspired by James Hague’s Retiring Python as a Teaching Language blog post and it shows my opinion, not my employer’s. It isn’t a direct message to James Hague, his opinion is valid based on his long-term experience. This blog post is about helping newcomers in general.
I’ve gone through the process of learning programming, becoming employed, becoming a mentor and lecturer myself in the past 12 months. But this is a long topic for an other blog post.
So let’s start this. Looking at language’s and their worth, there are many debates what’s good and what’s bad. People promote languages that define the web like JS, that define low-level programming like C or just define a general-purpose language that works for most of the stuff you’ll want to write - like Ruby.
This is all a big bias war and Python gets the shortest stick because it’s labeled as a learning language and a stepping stone towards a ‘more serious’ language. This is expected due to the language’s major influence - the ABC language and Python’s author, Guido van Rossum working on the ABC system before creating Python.
But in all this mess from where should new programmers start? Looking at history, for the most part formal education, universities and colleges, favored languages like Lisp and C/C++. Nowadays Python gains a bit more popularity in USA education. Does this even matter? The same cycle of teaching and learning will repeat many more times in various languages. We will see X language becoming popular, colleges will respond fast and create a new iteration of the same material, but this time in a different language.
What I am trying to say is - learning programming isn’t about a language’s syntax or about a language’s features. You get familiar with these, but the greater thing you learn is
Thinking, Problem Solving, Patterns and Programming paradigms and most importantly, loving to program. People fail to learn programming because they lack motivation or purpose to learn it, not because a language has stopped them.
Why are we alienating newcoming people by pushing them to different languages? Instead, we could help them with whatever they code at the moment. They need an experienced person’s coding help, not an experienced person’s programming languages bias. That might matter after the newcomer has some months of experience, but in the start it’s only confusion to him/hers.
And still if we really want to help a person pick the best, best, best programming language according to our opinions, you might ask.
Then pick the language with the most:
- complete books,
- helpful people you can find,
- open-source projects you can learn from.
Is this surprising to anyone? We can all agree that if we started with the language with least information we could get, we wouldn’t be programmers nowadays.
And how should we help a person with his/her particular problem?
- Algorithm help,
- Design help,
- Coding help.
Just disregarding a person’s problem with an opinion like “Oh, it’s that X language. It’s really bad for Y thing that you’re doing, you should stop programming with it and immediately start coding in Z, cause it’s better.” - THIS IS UNHELPFUL!
Most modern programming languages can solve the same problems, but in different manners. That depends on the programming paradigms supported by that language. You can’t expect an
functional language to be the same.
After all the talk about change, you might become obsessed with changing newer and newer sources of information, disregarding the older ones who actually taught generations of successful programmers to date.
I’m talking about books like
The Pragmatic Programmer,
GoF Design Patterns,
TCP/IP Illustrated and plethora more.
These books aren’t going to get a new iteration each one or two years, but the knowledge they pass is something that is still relevant.
I don’t want to say bad things to fellow lecturers/teachers, but sometimes your opinion is hurting more than helping. When teaching people serious programming for the first time, really, really carefully pick your words. Whatever you say, will surely stick in that person’s mind for the next year, until he/she gets mentored by someone else and that person may or may not change his/her mind.
When people ask for help, give them help if you can - else don’t confuse them with your programming language bias. If you can’t help a person in the given X language than most likely you’ll only confuse him and set him back from his/her goal.
Be more helpful and less opinionated..
I could be here telling you write in X language because it’s the new and cool thing and you might agree with me or not. Unless people explicitly ask what to start programming with then our opinions aren’t worth much to them.