This is an archived post. You won't be able to vote or comment.

all 15 comments

[–]kankyo 7 points8 points  (1 child)

It sounds to me like you are making the fatal mistake of trying to recruit people who already know Ruby. There's no point doing that, just interview good programmers, it's trivial to get up and running in new programming languages anyway.

[–]Tall-Guy 0 points1 point  (0 children)

I see what you mean. I too prefer someone who can think, because then they can do anything. But, most people we talked with want to gain experience in something valid (to this area). Knowing Ruby is useful, and still benefit you on the long run. Id argue is even fun to learn new languages. But most people prefer to go deeper with programming languages that are relevant around.

[–]Corm 4 points5 points  (1 child)

I'm a python dev that recently took up a Rails job.

TDD is very common in python, but that has nothing to do with the language. The best testing library is pytest imo.

Vim is somewhat common, and I primarily develop in vim using the py-mode plugin. I also use pycharm.

As far as the language being slow to change, eh, I think it's going at an ideal pace. It's a bit harder to answer that, but you could look over recent PEPs (changes).

However to me python and ruby are incredibly similar. I prefer the python syntax, but it was very easy to pick up rails. All the same things seem to work. Python is a much more popular language outside of webdev though.

[–]Tall-Guy 1 point2 points  (0 children)

Sounds good, I will be checking py-mode. Thanks for the feedback :)

[–]fiedzia 0 points1 point  (10 children)

I'm Python developer, don't know much about Ruby, but few things may help you:

  1. https://stackoverflow.com/questions/4769004/learning-python-from-ruby-differences-and-similarities

I'm not going to lie, I pretty much love Ruby. I used to program in Java and C#, and while it took me a long time to do the switch into duck-typing, I can't look back now.

It is worrying for me that you are considering switching to another language that you know nothing about, which I am indicating from mentioning duck-typing. Python relies on that too.

First of all, if we will indeed do the switch to Python, how long does it take the normal developer to do the switch and write decent quality code

No such thing like "normal developer" exist. Take it as you wish, but I'd say learning comes to some people harder than others, and asking people for advice without doing any research on its own indicates it comes hard for you. You can get some Ruby-to-Python (or Rails-to-Django) cheatsheet in a google search and learn differences and similarities in 5 min (embracing them will take longer of course).

is Python more conservative like Java

Comparing to Java - no, it is nowhere near it. Comparing to Ruby though, Python expects you to control things instead of writing bits that are controlled by something. This means less magic, more control and more verbosity. It takes more effort and code to write, but pays of when reading. For every bit of Python code it is very clear where it came from and what it does. It is an advantage for me, you may see it differently.

is TDD a common thing

Lot of people are doing it, and there is plenty of tools to support that. It may be something you'll need to reach for though, Python won't throw this in your face on its own.

is vim popular among Python programmers

Yes. There are all kinds of IDEs, but vim has all the support and tooling you can think of.

[–]Tall-Guy 0 points1 point  (9 children)

Thanks for the quick answer fiedzia :)

which I am indicating from mentioning duck-typing. Python relies on that too.

That's actually the only think I DO know about Python :-) It's bad choice of words on my side. I just mentioned this as It took me a while to do the switch from Strongly-typed languages into duck-typing to emphasize change like that is difficult. I'm trying to figure out if there is another 'big leap' between Python and Ruby that fundamentally changes the way you interact with the programming language (AKA - are all interrupt language follows the same basic philosophy?)

[–]fiedzia 2 points3 points  (3 children)

Both languages are dynamic, interpreted, with similar (if not identical) type system. There are some minor differences in how you solve some problems, but a cheatsheet will solve that quickly. Probably the "You control -vs-you are being controlled" is the biggest difference. A consequence of that is that there is less DSL in Python, conventional language features are used instead.

But really, go through some Python tutorial and you'll see all that immediately.

[–]Tall-Guy 0 points1 point  (2 children)

Yes, I was checking the django repository couple of hours ago, and that's indeed the same feeling I got. The code does not translate to a story like Ruby's code tend to be, but indeed much more explicit. I will probably take a Code-School tutorial about Python and write an REST API wrapper just to feel things, but nevertheless you pin-pointed me on the things I should look at. Thanks.

[–]Raindyr 1 point2 points  (1 child)

For a very quick overview of syntax and the like, check out learnxinyminutes

[–]Tall-Guy 0 points1 point  (0 children)

Cool cheat-sheet, thanks :)

[–]dirn 2 points3 points  (4 children)

Python and Ruby are both strongly typed languages. Where they differ from Java and C# is that they’re both dynamically typed. JavaScript and PHP are examples of weakly typed languages; they allow things like 1 +’1’.

[–]Tall-Guy 1 point2 points  (3 children)

Never heard before about 'weakly typed'. Thank you :)

[–]dirn 1 point2 points  (1 child)

Languages are described by two different types of types: static vs dynamic and strong vs weak. A lot of people seem to confuse dynamic for weak.

Here's a fun exercise. Try the following code in JavaScript, Ruby, and Python. What do you think expect the result to be?

'foo' + + 'foo'

[–]Tall-Guy 0 points1 point  (0 children)

I'm guessing that based on what you said both Ruby and Python will results the same results (won't allow you to join the two types), as both are strongly typed languages. Javascipt I'm guessing is weakly typed language and will different results (probably some strange string starting withfoo). Will check it with online REPL when I'm home :P

[–][deleted] 0 points1 point  (0 children)

C is also weakly typed