Hey, Shan, this is for you ;)

Shan Reddy commented on How I Learned Linux:

I’ve landed here from Steve’s page. Great post. It was so neat, helpful, clean like a crystal. I’ve bookmarked all the links which you’ve included. That’s such a great help. Oh yeah! your blog as well and I’d be following regularly to check the updates and read more. Your writing skills are excellent. Appreciate it. Wish someday I could write as well and share my info all that I learn with the rest of the world like you.

I liked the part where you said that someone if they weren’t interested or not confident they could do it would not have read through so much. I was so happy to read that. ‘Cause for me my programming journey was very steep but once I picked up I could find the intellect in me moving much faster. And now I’m looking to learn hacking and that’s how I landed on Steve’s page and here finally from there. I’m currently on Windows but after reading this article and understanding the importance from Steve’s I’m determined to learn the whole of Linux no matter how hard/long it takes. And the other languages which Steve has mentioned in his article. I’m currently programming in Java but learning more web technologies as well.

I look forward to more great articles from you and hope to stay in touch. Cheers!!!

Thanks for your comment, Shan! You brought up a few things that I wanted to discuss not only with you, but with others in your situation.

Programming can be really tough at first glance. It depends on how you were introduced to it. I started off with HTML and CSS when I was 13 (not counting my RPG Maker XP experiments a year before that) and I think that helped make other languages seem not so intimidating. HTML is kind of the gateway drug to programming, haha.

In your case, I’d suggest that Java hasn’t made it any easier on you. Java is not a great first language. Java isn’t a spectacular language anyway; it can be very useful, and sometimes it’s the right tool for the job, but it’s not the first tool that a programmer with a varied language skill set will reach for. Python is cleanly designed, easy to read, and won’t give you fifty lines of error messages because you forgot a semicolon.

(Also, contrary to popular opinion, starting with a more difficult language is not necessarily going to make you a better programmer. It may just make you a more frustrated programmer. In other words–don’t start off with C or Lisp either, even if knowing those later on *will* make you a better programmer.)

Furthermore, you expect learning Linux to be a long, hard slog because you started off with Java and that was a long, hard slog. This is likely to MAKE learning Linux a long, hard slog. And that doesn’t help you! Don’t be so pessimistic. Programming is fun!

So, learn HTML5 and CSS, and tinker with it a while. That should keep you busy for about, oh, three weeks. Maybe more, maybe less. Then head over to learn Python. That’ll take you… mm, six weeks maybe. Maybe more, more likely less. Don’t let yourself get bored with either of these tasks–if you’re bored, then either make it interesting or move on, because if you’re bored, you aren’t working at your full efficiency.

(Bored || frustrated || mentally tired) programmers == ineffective programmers.

THEN come back to Java. Wow, it’s a lot easier, right?

It’s like this. Imagine a guy walking down a path. He comes across a boulder in the middle of the path, and thinks, “I should move this boulder so I can move on.” He could go around the boulder, but he sort of wants to try to move it because he thinks moving the boulder will make him stronger and thus be a better option than going around. So he shoves and pushes and presses all his weight and muscle against it for hours, until his muscles are extremely sore and he is hungry, thirsty and exhausted. He gives up for the night and goes home.

From here, the story splits into two parallel universes.

In Universe 1, the man goes back the next day. He pushes and pushes the boulder until, like the previous night, he’s sore and exhausted.

In Universe 1a, he gives up and goes home to watch TV and drink beer. He’s pretty happy about that but he never got to go on his hike. This is the more likely outcome from Universe 1, really.

In Universe 1b, he doesn’t give up. He goes back to the boulder every day, and while he gets stronger and stronger from trying to move it, he’s started to hate going out onto the path to push against it. One day he goes out and is finally strong enough to move the boulder, but is too fed up with just the sight of his path that he goes home to watch TV and drink beer anyway. Besides, the seasons [current technology] have changed and the mountain the path led up is five feet deep in snow.

In Universe 2, he just goes around the boulder… and finds a pickaxe. He uses it to get rid of the boulder and then goes on his hike. The hike is long and in places difficult, but at the end, he is as strong as he would have been from trying to push the boulder, and he’s enjoyed his time out in the fresh air.

You see where I’m going with this?

Yet there are a lot of teachers (and old programmers! and competenprogrammers!) who will insist that the best way to get the metaphorical boulder out of your way is to push and push until you hate the path, even if there’s a more efficient way to move it and a more enjoyable way to become strong.

Anyway, I’ve heard a lot of people struggle with this problem, so I wanted to write about it.

The bottom line is that Linux, and programming in general, won’t be as hard for you as you think it is as long as you use the right tools in the right order.

If you get told that the ONLY way to move a boulder is with a pickaxe, though, but it doesn’t work for you, try a crowbar or something instead. Not everyone’s creative brain works the same way; if they did, we’d have a billion copies of Mona Lisa and no “Starry Night”s or “The Scream”s or “Persistence of Memory”s. And sometimes you just need a break from trying a certain approach.

So, even as I give you advice to learn HTML5/CSS and Python (a set of introductory but objectively useful tools which has indeed worked for many programmers), I warn you that it may not be the right beginner’s set for you. But be warned away from anything that’s specifically meant as a teaching tool; these generally aren’t worth learning because you can’t use them for anything bigger than a 50-line toy program.

Anyway, get yourself a VirtualBox download and set up a Linux VM. I’ll warn you that BASH scripting is annoying to work with, but you should learn it at some point. You know where to go for links on learning the command line and stuff, of course 😉

Oh, and if you ever make a blog to share what you learn, send along the URL and I’ll link you on here.

Happy hacking!

Advertisements

One thought on “Hey, Shan, this is for you ;)

  1. Excellent! First of thank you for writing an article from my comment which was not only useful for me but others as well. That in itself I could see that I’ve contributed something for a newbie through an expert advice and a great writer. In fact, I’ve completed HTML5, CSS, Bootstrap and starting with JavaScript from today. Since I work a full time job (Sales guy>lot of fun and time on hands), I decided to do few courses parallel to Java out of my passion for programming (which I work at home on and in the weekends) at office so that my valuable time is not wasted. As you say ever since I’ve designed my first (oh and i forgot jQuery (basic) was the one i learned as well) webpage it’s become a lot easier understanding Java. Then I went on to purchase Swing to learn even more. Now that I’m deep in to this strategy which I’ve made for myself, I shall continue with Jave but instead of JScript I’ll start off with Python as you suggest. As i said earlier my stint with coding was very steep but after a while even when i’m working on the excels or words i could or try to think of how it’s all unfolding in the background. Which is a lot of fun and keeps me thinking, thinking, and thinking even more. I’ve also started working on my own product which I’d like to release to the public as open source (small but useful one for sales guys).

    I have to say all of this because every bit of my learning is self learning. I could never afford so much of education (only to later find out it was good because nothing ever matched my pace or interesting to meet my interests) as anyone else but I only wish everything else was much freer to people who are less affording. But, thanks to so many opensource teachers out there (surely you among one of them who’s helped me with a lot of stuff) I’m able to master most of the languages. Thankful to the World wide Web.

    Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s