
Ask HN: Should I Learn Python? - vicks711
Hi,
I am reinventing myself to be a web and app programmer at the ripe old age of 36. I am done with CSS and HTML.<p>I now have to learn a scripting language. Which one should I choose between Ruby, Python, and PHP?<p>Thanks
======
egor83
When I was choosing between Python and Ruby a couple of years ago, I chose
Python.

To me it seems to be more universal - Ruby is (IMO) mostly used for web
development, and Python is also rather widely used in other areas - in
sciences (via NumPy/SciPy), sysadmin work and for various scripting purposes
(in gaming, for instance).

By now I also got some experience with Django, and was also picking up
Javascript recently. Can't comment on the amount of work available in Python
compared to Ruby, just don't know the Ruby market, but for Python/Django
there's quite enough freelance work via elance/odesk. Not sure if you'd get to
$2-3k per month right away, but that's sure doable once you get some
experience.

On the other hand, you have the advantage of being able to look for clients
locally, and I only worked remotely - living in Russia now. Seems local rates
in Australia (and other first world countries) are higher than in online
market.

Seconding the importance of Javascript. I picked it up months after I started
with Python, but starting with it earlier would've been a good idea for sure.

Again, most freelance work involves at least some frontend part, and if you're
familiar with HTML/CSS/JS, even without Python, there's always something to
do. Also there are quite some offers for Google Apps work, scripting
GMail/GDocs/GCal - that's Javascript again.

Disagree on PHP requirement - didn't touch it yet, don't want to, have enough
work (and some more people to talk to when I have time).

Feel free to drop me an email - egor.ryabkov at gmail - if you'd like to chat.
Best of luck!

~~~
vicks711
Thanks Egor! This is where I stand now. 1\. Working knowledge of CSS and HTML
2\. Aptitude for programming.

This is what I am going to do

1\. Learn JavaScript and then jQuery. I am aiming at becoming comfortable with
JS and jQuery in 3 months. 2\. After 2 months I will start creating and
selling simple templates (like e-mail templates and HTML website templates) on
Themeforest.com. In 3 months I will start developing templates based on
Twitter BootStrap 3\. I will continue to polish my front end web dev skills
from month # 4 to month # 6. 4\. If my templates start generating a revenue of
$600+ from month # 6 onwards I will be a very happy man. 600 bucks will take
care of my family's monthly expenses.

5\. If this financial goal is met I will learn Python. At this stage I will
also start spending more time programming 7-8 hours a day and will gradually
come out of my freelance writing (pays a measly $3-$10 and hour) and Internet
marketing gigs.

Thanks for sharing your contact.

~~~
egor83
Wait, when you spoke of $2-3k/month, did you mean active or passive income?
Because I was speaking of active one - as in, you directly exchange your time
for money.

Can't comment on your plan wrt template selling, but it seems you might start
earning money faster if you get right to freelancing; though it's up to you,
of course.

Speaking of timeline - in my opinion, it might be more optimal to target real-
life tasks and not some deadlines: that is, instead of saying "I'll spend 3
months learning JS and then will start creating templates" you might just do
the tutorial, maybe make a couple small projects to get comfortable a bit.
Then pick some task - like a template, or just browse freelance sites, pick a
job you like and use it as a target - start doing it and then see whether your
skills are up to it or not. If not, learn more until you get there.

And speaking of money - from what I saw on elance, $10/hr is about minimum for
Python/JS, that'll get you people who can barely speak English. Around $15 is
not impossible for a person with a bit of experience, and from then on...
well, that's a whole different story here, about marketing, client network,
connections, self-promotion etc etc. Though, again, for the first couple of
jobs there your main goal should be not getting high rates, but actually
winning these jobs and creating some reputation.

So to sum it up - why exclude yourself from development freelancing for 6+
months? And relying on templates sales looks a bit risky to me, direct
freelance will get you income faster. Though passive income sure is great, so
in the end it's for you to decide.

Oh, and seconding jQuery. It's great.

------
throwaway420
Additionally, is Python 2 or 3 currently a better choice for new Python
developers that want to potentially release a new project?

I've noticed that some of the highly recommended Python libraries are still
not Python 3 compatible. This makes the choice a bit harder to judge from
somebody who isn't experienced with the direction of the ecosystem.

~~~
ragatskynet
For newcomers I always suggest learning Python 2 first mostly because it is
easier to find libraries and/or resources for Python 2. Also, I found it very
easy to learn Python 3's differences after knowing the previous version.

------
tagabek
I was able to pick up Python pretty effortlessly (coming from a zero
programming experience background) through Udacity's search engine course. If
you're coming from little or no experience, you can easily pick up on Python.
Like everything else, it just takes time to get used to.

If you happen to go the Python route, here are a few resources that helped me:

Udacity's Search Engine Course <https://www.udacity.com/course/cs101>

Google's AppEngine (for Python development)
<https://developers.google.com/appengine/>

Django - Web Framework for Python <https://www.djangoproject.com/>

------
cwisecarver
This could be biased as it's the route I took.

I'd get familiar with all three. I'd start with PHP. It's ease of deployment
will delay the sysadmin stuff that you'll end up learning anyway. Then I'd go
to Ruby. Trying PHP first will make you appreciate Ruby and Python more.

When I'm interviewing people, experience in a number of languages is something
I look for. A good programmer is a good programmer. Seeing and understanding
the ways that different languages have implemented similar concepts makes you
form an opinion and see that there are better ways to skin that cat.

~~~
vicks711
I appreciate what you are saying. I have seen great programmers who can learn
and start serious programming in a new language within a month.

------
networked
The choice between Ruby and Python is something of a matter of taste. For what
it's worth, Ruby on Rails appears to be more popular than Python's Django
(though a quick search didn't give me any current numbers). In present day web
development there is really no getting away from PHP, so you should learn it
whether you choose Python or Ruby; same goes for JavaScript.

To make it easier to answer your question you should provide more background
on your past programming and general computer experience.

~~~
27182818284
Your comment is spot on. I'm a Django fan, but there are more jobs asking for
RoR experience and way more asking for PHP and even .NET experience. The PHP
and .NET tend to be less "sexy" jobs, but nonetheless are salaried jobs with
benefits so they might be very ideal depending on where a person is at in
their life.

Replying to your comment in addition to upvoting felt necessary because it
often seems like on Hacker News that less than 1% use anything other than the
latest tech. That is not true.

------
RaphiePS
Do you know JavaScript yet? That's essential for front-end development, and if
you get pretty good at it you can use it serverside with Node.js

~~~
vicks711
I have not learnt JavaScript yet. I can spending only 3-4 hours every day
learning how to program. Will it be a better idea to learn JavaScript before
picking up server side scripting.

Since I can do server side with Node.js do you think it is a good idea to
learn only JS for the time being?

Since I have to support my family I cannot spend more than 5 hours a day.

Thanks

~~~
balac
Javascript is essential for any web developer no matter what server side
technology they use. I would highly recommend learning Javascript first.

~~~
vicks711
Thanks for the input. I have started learning JS. I am going through JS guide
on developer.mozilla.org.

------
lifeisstillgood
reinventing yourself and wanting to be a fulltime employee? Or reinventing
yourself with the aim of freelancing, or even running a consultancy.

I would say that there is (at 5 hours a day with a family) a fairly long
learning curve to get to the point where you have learnt enough
python/javascript then built something with it to prove your chops and then
got a FT job.

You _might_ be able to learn enough in 3-6 months to have someone take a
chance on a 36 yearold junior programmer. But we are an ageist sexist
industry.

So, if you are done with CSS / HTML but do not feel a burning need to program
(you would have felt it by now), then yes I suggest you learn to program,
always good, but instead try finding a decent programmer whom you enjoy
working with (I would guess you have met some) - and then set up a side
project of freelancing yourself and him/her to local businesses or SF
startups.

Maybe start with local businesses, build up the working rapport. (Try charging
retainers!)

If you just want a change, maybe running a side business that might one day
become a FT operation is it.

~~~
vicks711
Thanks for the advice. I do plan to work as a freelancer and with local
businesses. I also want to create some cool website templates and sell them on
themeforest.net etc.

Do you think making 2000-3000 bucks a month feasible by selling themes? I
saved wisely during my financial services days and if I can reach $2000 per
month figure then I will focus 100% on programming.

Once again thanks for the advice.

~~~
lifeisstillgood
2K on themes - I have no idea but I suspect not - its a competitive
marketplace.

I think you _can_ make 2000 USD a month by creating tools for your local
businesses.

Here is my suggestion: go buy a list of businesses in your area for about 200
USD. You will get something like 5000 businesses for that in suburban area.

Split them into industry, and find their websites (most likely provided as the
email addresses). Visit each site in an industry and work out which ones are
just brochures and whoch ones actually take money online (customer signin, has
visa paypal on page)

Now you have two groups. The brochure-ware group you can approach with
examples from the other group saying "your competitors are doing this online -
want me to help?"

The second group you can approach with "Do you know how many customers visited
your site - and I can improve this"

(bonus points for actually dividing this group into those who have google
analytics and those who dont)

No one pays for cool themes anymore (well 20 bucks is not really paying).
People will pay through the nose if you up their sales.

Try looking at www.kalzumeus.com for an intro.

~~~
vicks711
Sounds like a good idea. I will do this for 3 months and measure my
performance.

I agree with your point that it is easier to charge money when the problem
being solved is business critical.

~~~
lifeisstillgood
post your results here in three months :-)

~~~
vicks711
Will do that! If it works I will buy you a beer!

------
mtdewcmu
I can't speak directly to Ruby or Python, because I haven't used them.

But, you can't go wrong with PHP for web programming. Look at the number of
people using it.

------
vicks711
Hi,

Thanks for your inputs. I really appreciate you guys taking out time. This is
what I am planning to do.

1\. Learn JavaScript and then jQuery. I am aiming at becoming comfortable with
JS and jQuery in 3 months.

2\. After 2 months I will start creating and selling simple templates (like
e-mail templates and HTML website templates) on Themeforest.com. In 3 months I
will start developing templates based on Twitter BootStrap

3\. I will continue to polish my front end web dev skills from month # 4 to
month # 6.

4\. If my templates start generating a revenue of $600+ from month # 6 onwards
I will be a very happy man. 600 bucks will take care of my family's monthly
expenses.

5\. If this financial goal is met I will learn Python. At this stage I will
also start spending more time programming 7-8 hours a day and will gradually
come out of my freelance writing (pays a measly $3-$10 and hour) and Internet
marketing gigs.

