[Tutor] What all technologies should a python developer know?

wolfrage8765 at gmail.com wolfrage8765 at gmail.com
Wed Jul 17 17:09:33 CEST 2013


On Wed, Jul 17, 2013 at 8:42 AM, Dave Angel <davea at davea.name> wrote:
> On 07/17/2013 08:00 AM, Tim Golden wrote:
>>
>> On 17/07/2013 12:13, Karan Goel wrote:
>>>
>>> So I want to be good at python (web) development. What all technologies
>>> do I need to know? Git. Linux. Django. webapp2. Heroku?
>>> What else? How proficient should I be in each?
>>
>>
>>
>> You don't *need* any of those specifically. It would make sense to be
>> competent with:
>>
>> * Some version control system (possibly git)
>>
>> * The O/S on which your apps are developed and/or deployed (possibly
>> Linux)
>>
>> * Some web framework that fits your need (possibly Django)
>>
>> (Very optionally):
>>
>> * Some PaaS for deployment (possibly Heroku)
>>
>>
>> But the main points are to understand how the web works, both the older
>> (CGI-derived server-refresh) world and newer (Single-Page App /
>> Javascript-heavy) world, and how Python works.
>>
>> That sounds suspiciously like a tautology: To be good at Python Web
>> Development, you need to be good at Python and at Web Development! But
>> I'm constantly amazed at people who launch out without either, hoping
>> for a drag-and-drop experience and frustrated when they don't get one. :)
>>
>
> I'm also amazed at how many people launching into programming (usually with
> degrees in Computer Science) still don't have a good knowledge of bits,
> bytes, concurrency, protocols, namespaces, recursion, caching, memory
> management, algorithms, flow control, indirection, virtual functions,
> dispatch tables, syntax trees, ...)
I am not so suprised as I used to be.  Since I have seen that schools
do not teach like they should, instead they skip the fundamentals and
head straight to teaching a language but usually with out any reason
as to why or how.  Many of my peers simply do not have the knowledge
needed to actually program with out a book directing them through the
process.  But the book still leaves out the fundamentals.
>
> Understanding many of these things and other similar, regardless of which
> programming language, makes it much easier to learn a new language, a new
> environment, and to avoid traps that every environment has for you.
>
> If you (Karan) just want to do web development, and using a particular set
> of tools, then learn those.  If you're trying to get a first job, learn the
> things that the job requires.  But if you're also trying to build a career,
> dig.  Dig deep.  And that will require either a very good teacher(s), a very
> good student, or a large variety of "environments," preferably all three.
But you can be your own teacher.  I say that because I have found good
teachers hard to come by.  But I have successfully taught myself a lot
of what is being stated here, although I have a long ways to go.
Since it does take a lot of time and effort to truely be a good
programmer.  I have learned there is no magic trick or moment, or
language.... just time and effort.
>
> Another, seldom-mentioned, useful tool is a thesaurus.  Get used to finding
> meaningful names for things.
>
> Several times I've joined a new company or new department, and my first task
> was to learn the programming language I was to be using.  Something like 35
> during my career, plus many more for recreation and study. Learn at least
> one language in each of several categories, and your mind will be much more
> nimble, whichever one you actually need to use: assembler, C++, lisp, Forth,
> Python, ...
Wow 35, I hope to accel to such a level one day.
>
> When you're learning Forth, don't just write an application.  Extend the
> compiler, learn what a code field really is, and think about how it relates
> to the vptr in C++.
>
> When you're learning lisp, think about what it means that "functions" are no
> different than other data, and can be manipulated as readily. You do similar
> things in Python and C++ too, but the meaning is entirely different.
Lisp or Erlang is probably my next language to learn, as I wish to
better understand Functional Programming.
>
> When you're learning Python, write a decorator of your own, don't just use
> the ones in the standard library.
>
> When you're learning java, study the byte code file format, and think about
> what it means to have a const static variable in a class.  (Maybe they fixed
> the file format and semantics since I last looked, but this was a
> fundamental flaw in the original format)
>
> When you're learning C++, step through a constructor of a derived class that
> calls virtual functions that have been overridden.   Watch the vptr change
> while the object is being constructed, and see what that means to your code.
> Naturally, this is only possible since you learned assembler first.
>
> I could continue, randomly attacking other aspects of a development
> environment.  The point is that there are traps everywhere, and beautiful
> symmetries everywhere.  Learn how to recognize the former, and learn to
> appreciate the latter.  Learn what to do when the docs fall short (eg. drop
> to assembler to see what the language construct is really doing, reverse
> engineer a file format, write some code to "do it by hand,"  etc.).
Dave, how do I "drop down to assembler" with Python?  Can you expand
on this?  Also do you think it is still of value to learn Assembly
Language, and if so which variant, as I understand it, there is a
unique set for each architecture, although they are usually similiar.
>
>
> --
> DaveA
>
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor


More information about the Tutor mailing list