19

I just started a new job a couple months ago at a small company where I am currently leading all development efforts present and future. I personally have years of experience in software design and development from mostly Java but also a .NET perspective. I picked up .NET later in my career with great ease and required literally no training to hit the ground running, and on top of that it helped me to truly grasp and appreciate the universality of many best practices and common themes by seeing two different perspectives to solving the same problem.

My boss has a startup company on the side, and without divulging too much information, he had a need of a moderately sophisticated web application that integrates into Google Maps to build routes.

He contracted out the web application to which they overpromised, majorly underdelivered, and ran over the deadline, he is currently in a fight to try and recover at least some of the money he invested. He has the source code for the site as it is right now but has a laundry list of things he would like fixed and added before he goes live with it.

He asked me if I would like to do this on the side for some extra cash but the problem is that the site was written in Python using Django, which I have no experience in whatsoever. I told him that I am really not the best person for this because I know virtually nothing about Python or Django and would have to learn it from scratch. I feel it wouldn't be fair for me to bill him hourly for my time if I am using that time learning a language and platform.

Based on the summary of my experience level how difficult or how much time would you guess it would take for me to pick this up? If you think its a waste of time could anybody recommend a suggestion for where to find experienced Python web developers? Money is a concern for him right now so he doesn't have the biggest budget anymore.

6
  • 10
    Why ask? Do you think it's going to be hard because .Net made you stupid? It's just code. How hard can it be?
    – S.Lott
    Commented May 19, 2011 at 11:31
  • 1
    @S.Lott, It is not a matter of being capable or not, I just don't want to take a job I am unqualified for when the person paying me has a limited budget and is my direct manager for my PRIMARY source of income. I certainly wouldn't want to stick it to him.
    – maple_shaft
    Commented May 19, 2011 at 11:43
  • 1
    Aren't you really going to have to try doing a piece of it and see if it works? No one here can put a value on your time.
    – JeffO
    Commented May 19, 2011 at 12:01
  • 2
    I think you're doing yourself a disservice. I suspect that given his recent experience, your manager would rather have someone who he can trust to tell him the truth, even if the truth is "I'm not familiar with that framework but I'm willing to have a go". You should at least be able to tell him if the source he's recovered is even worth anything.
    – Benjol
    Commented May 19, 2011 at 12:10
  • 2
    @Benjol, "You should at least be able to tell him if the source he's recovered is even worth anything" And that is exactly what I am afraid of. Just because I could figure out a Django Hello World tutorial in a couple hours doesn't mean that I have the experience and knowledge to make accurate estimates or even judge on the quality of the code. For all I know, spaghetti code and 8,000 line functions are the way things are supposed to be done in Python.
    – maple_shaft
    Commented May 19, 2011 at 12:22

5 Answers 5

15

Python is about as easy to learn as a language could be, which is one of the main selling points of the language. As someone that is very experienced in OO languages, you are in a great position to start. The only fundamental differences between Python and Java/C# are

  1. Duck-typing / lack of type safety.
  2. First class functions.

I understand why you feel that you are not the best man for the job, and you may not make as much progress in your first week as others. On the other hand, your boss trusts you, and he's just been burned by some untrustworthy folks that knew Python better than you.

If you are worried about abusing your bosses trust, offer to give him N hours pro bono. (You decide what N is.) At the end of that time you can decide if you are worth the hourly rate. In the worst case, you will have a much better sense of Python/Django at the end of that time.

5
  • Thats an interesting thought to give him some free time for both our benefits. Maybe I am just afraid of a committment?
    – maple_shaft
    Commented May 19, 2011 at 12:09
  • If these are fundamental differences, then C# dev knowing JavaScript should have much difficulty at all... am I correct? Commented Aug 17, 2011 at 13:11
  • 3
    C# has first class functions just most devs dont use them #justsaying
    – sa93
    Commented Aug 17, 2011 at 13:14
  • @Morawski Yes, if you know one of Java, C#, or C++ AND one of Perl, Ruby, or JavaScript, then learning Python is a breeze. Commented Aug 17, 2011 at 14:24
  • What @sa93 said. Also (damn, me and my off topic comments..), I'm not really the Microsoft-fan type (in fact I'm much more of a Pythonistas), but it's rather impressive how many functional features they've been adding through the various releases. C# 5.0 has become quite a usable language (compared to other related languages *cough*java*cough*VB*cough* ) Commented Apr 6, 2013 at 18:12
8

As an embedded C programmer who ended up working on a Python/Django web app as a skunk-works project I can testify that the basics are easy to pick up.

Python generally is very straightforward to get to grips with. I've personally not found the python documentation itself very useful - it always seems more like an aide memoir for someone who already knows python - but the web is full of useful examples. You might want to try The Python Challenge one evening and see how you get on.

I would thoroughly recommend Django. It does a very good job of abstracting database access and provides enough utility that I've also subsequently used it for web projects with no database component. Generally if you think of something you want to achieve there will be a method with an obvious name already provided. The documentation is also very good.

Django is very simple to install so I would strongly suggest that you just give it a go and see how you get on. A couple of evenings playing with Python and Django should give you enough confidence to decide whether you would be happy undertaking the work required.

0
4

The Python/Django paradigm is certainly different to .NET or Java stacks. If you're comfortable with several programming paradigms (and by this I mean functional vs OO and static vs dynamic) then you'll probably be able to pull this off. As per @EricWilson, Python isn't too difficult to learn (just be prepared to go ballistic about the indentation == scope thing ;p).

It's the old adage that "Smart and gets stuff done" beats "x amount of familiarity with a language".

If you have a good understanding of the underlying web stack (HTTP, request/response cycles etc) and the 3rd party APIs (Google), then it will be a little easier as well.

You'll also need help for those WTF moments. Make sure that you're joined at the hip to a community of Python/Django devs, whether that be your local user group, an online forum or a little site called StackExchange :)

Oh, just thought of something else. Make yourself take the litmus test. In an evening or a weekend afternoon, download and install Python and Django and see how easily you grok the tutorials. A basic test I give myself is building a CRUD screen for a dummy domain object. If I can't do that (and there's no shame in it BTW) then I'm not the right person or the stack sucks ;)

Lastly I'd be careful with the $ side of things here. If you've always wanted to pick this tech stack up then perhaps you're both doing each other a favour, otherwise it smells a little like your manager relying on your goodwill to get stuff fixed om the cheap at the expense of your valuable time.

1
  • "otherwise it smells a little like your manager relying on your goodwill to get stuff fixed om the cheap at the expense of your valuable time" I don't begrudge him of that, we all have our own best interests at heart, especially since I am under no obligation to help him in anyway. If I make that choice and regret it then I only have myself to blame.
    – maple_shaft
    Commented May 19, 2011 at 12:13
1

I can't comment on the value of Django, but I think learning Python could be a good investment of your time. Not just for this project though...

As as a java developer, I find Jython invaluable, and I wish I had known about IronPython when I was developing with C# (I went C# > Java rather than Java to C#).

The fact that you have the whole java library available to your Jython script is excellent, and I have frequently use Jython unit tests to test POJO classes using Mock objects.

We even provide a Jython console in our application so that users can script their own routines, with full access to both the java libraries and our own. It's so nice being able to show users how do write simple scripts and have them automate all sorts of things themselves without having to do all of that automation for them.

Sure, Jython isn't perfect - it lags (2.5) somewhat behind CPython (3.2) and even IronPython (2.7), but that just makes it contemporary with Guido's book. *8')

0

I spent a week or two picking up the basics of Python and Django (I eventually decided to go with Rails for other reasons) after doing only C# work. It was a little difficult to grok at first but Django is relatively straightforward; the hardest part I found was figuring out exactly how to write the necessary code in Python. Django itself is pretty simple; I haven't touched it in over a year but I could probably still do something trivial. It gets a little more complicated with using generic objects and some more involved templates and views, though.

One thing I found that was strange to wrap my head around is the idea that all your Django models are in the models.py file; I'm sure you could create different files and import all of them (I didn't try this, however) but that alone felt "wrong" being used to C# where its very bad to have multiple classes in the same file unless one is some kind of private class only used by the other class. The rest of it wasn't too difficult at all, although if you aren't that familiar with MVC (or MTV in Django parlance) that's a small learning curve in itself.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.