Python list and Python Journeymen*

DL Neil PythonList at DancesWithMice.info
Sat Apr 13 19:58:11 EDT 2019


* and Journey(wo)men

TL;DR? Please scroll the bottom with a view to contributing advice


Hello Arup,

I appreciate your confidence and trust in writing to me personally. 
Hoping I have not betrayed that, but despite your concerns this reply is 
posted on-list. I trust it won't, but apologise if it feels 
embarrassing. Please allow me to explain...


> Hello DL Neil,
> Sorry if it feels like random. I need some advices about the Python. I am learning Python to learn basically Flask, because I am a web developer and understands it well. Having prior knowledge in Ruby, JS, I thought it will be quicker for me to get a control on this language. But it feels like vast so far, lot of concepts. Which books would you recommend to get to the intermediate position from beginner level? Also asides web development, how good the future is as a Python developer? Many people online, offline I heard to discuss about learning Functional programming. While I know Ruby, JS, do you think it is fine to learn another similar language, or learning something new like others says will be a good idea.
> Again sorry if it sounds like irritating. You can have the rights to ignore this email 100%, I would not mind, as I understand people like you are really busy at your own work. I couldn’t post it in the ML, but have little hesitation	how others would react on this.
> Thanks,
> Arup Rakshit


If I have understood correctly, I detect five questions in-all:
1 Learning to apply Python
2 Python eco-system
3 Functional programming
4 "Good ideas", other people, and 'the next great thing'
5 This list and requesting assistance

I'll (attempt to) respond, but please excuse me if I do so in reverse 
sequence...


5 The list
The benefits the list brings (cf personal correspondence) is that your 
question is exposed to a larger number of "eyeballs" (that word sounds a 
bit crude, but if you've not seen the term used before, you will find 
context in error-hunting and code-proving throughout the Open Source 
world). Thus, better minds than mine (alone) can be brought to bear. 
Secondly, there are other readers, sometimes referred-to as "lurkers"; 
who subscribe to the list specifically to read and learn from 'good 
ideas'. Accordingly, whilst it might seem that you ask a question and it 
is answered, to your benefit/relief/advancement (eg last month we 
discussed "scope"); a number of other people probably also learned 
something about "scope" along-the-way*. So, when you ask a question, it 
is likely that you are not the only-one asking it. Thus answers to 
'your' question, will benefit more people than we can know!
* it is an interesting phenomenon that answering someone else's 
questions can cause 'the answerer' to advance his/her learning at the 
same time! (in fact, if I might put my cognitive-psychology 'hat' on for 
a moment, it is an excellent way to learn - and to prove that one has 
learned something)
Using the link at the foot of each posting, you can back-track to a 
web-page of Python discussion lists. There you will find details of 
"Tutor". If you feel a question might be 'embarrassing' posed to this 
list, try there...
However, my impression of the members of this list is that there is no 
such thing as a 'silly question'. Recollecting recent Q-s and A-s 
(sadly) evidences short/lazy/unhelpful ways to ask a question. 
Accordingly, people who expect help but fail to provide code, errmsgs, 
and the like; receive equally short replies addressing their 
*short*comings (hah!). Human nature is that people prefer to help people 
who are helping themselves: the more background-information that is 
given: 'here's my code', 'I tried this', 'the manual says...', 'my text 
book...' the more information the 'helpers' have to formulate a (useful) 
response - compare this with [I'm not telling you that this is my 
homework] "How do I pile all the round blocks on top of the rectangular 
ones?".
In this mode, I recall asking you, which book you were working from. 
When you replied, I was able to immediately look-up the problem-set - 
and thus gather more background. (we also started a side-conversation 
about 'resources', which appears to continue here!)
Most lists talk about "respect" (for other subscribers). If I may 
'indulge': respect for people's time is high on my list. (to my 
knowledge, no-one is specifically paid to be 'here' and to be 'helpful'; 
and a volunteer's time should be valued in $big (if you must) )
Another benefit of the list - which is often 'missed', even by 
'StackOverflow aficionados', is that the list is archived. Accordingly, 
there are likely similar questions, previously asked and answered. No 
need to ask again! (temporal issues aside) Accordingly, questions about 
'learning resources' abound!


4 What should I learn next?
(this answer aligns to your previous?next question)
I've been in this business for decades. There are always people 
trumpeting 'the next great thing'. Sometimes they are enthusiasts, 
genuinely excited about some version of 'the future'. Sometimes they are 
marketing people (see also 'Snake Oil Salesmen') - apologies if 
excessive cynicism. Conversely, there are people who decry and criticise 
a particular 'future'. Some time (cough) back, amongst our internal 
consulting group where I was working, no-one wanted to tackle the 
project introducing IBM PCs to the (multi-national) enterprise - "they 
are only toys". I had long-practice in toning-down the IBM sales 
rhetoric and had played-with micro-computers (what we now call "SBCs"). 
So, to great concern amongst my colleagues, and amidst phrases like 
"professional suicide" and "you're going to regret this", I decided to 
take it on. Oh yeah! At the same time, I could list mis-guesses - but 
perhaps I'd prefer everyone to think that I'm perfect... (cough, 
splutter). As I've said to many people: there's exactly one person who 
knows the stock-market - and you see him in the shaving mirror each morning*
* topical neutrality: for "stock-market" substitute any form of 
forecasting or 'crystal ball gazing'
* gender neutrality: substitute "shaving" for "make-up" and "him" for 
"her", as desired
The answer (to me), is that you combine the ideas that attract your 
personal interest (also known as "scratch your own itch"), eg building a 
framework to do 'xyz'; ideas which feature in job ads, eg "full stack 
web" (whatever that REALLY means!); and ideas which are of-interest to 
your current employer, eg we want to better collect and analyse our 
sales data (ie "big data"). That type of exercise inevitably still 
produces a list. From there, you can refine and re-consider - eg there's 
no point in looking at 'big data' if one 'hates' working with databases 
or 'doing the math'! However, it literally comes-down to the point of 
'pick one'. But which one? YMMV! Arghhhhhhhhhh!


3 Functional programming
Apologies, but I'm the wrong person to ask. My mind translates the title 
into map() and zip(), which I do use occasionally; but it's not my area 
of expertise - hopefully others on the list will be able to step-in.
Interestingly, I was having a similar conversation with a friend who is 
retiring from his career in bioinformatics and asking 'what should I 
learn as my first retirement project?'. We covered Python (of course!), 
Scala (which he has already learned, as a functional programming 
language), and disappeared so deeply into functional programming 
applications that I started to struggle for oxygen. However, he was 
attracted to elements of a later topic in this msg...


2 Python
One of Python's most attractive features is also a significant draw-back 
- as you have pointed-out. Python is not merely a programming language 
(per Wikipedia's description). Can I also call it an eco-system?
Python is highly portable, which means that it offers various facilities 
on various platforms or in particular modes, eg (recent topic on-list) 
logging has the complexity of two syslog features (one for Linux, the 
other for Windows), yet that portability whilst creating the appearance 
of complexity, at the same time, offers simplification because I can 
ignore MS-Windows at this time!
The books which aver you can 'learn Python in five gulps of iced soy 
caffè mocha latte (with sprinkles on top)', claim 'rapid results' ONLY 
if they limit content to 'the language itself'. However, and (most 
importantly, IMHO) Python is highly extensible. Thus 'the language' is 
but a foundation. 'On top' of that comes the Python Standard Library 
(PSL). If that's not enough, then comes the Python Package Index (PyPi, 
accessed using pip/pip3/and others). Then there are all the gists, 
GitLabs, SourceForges, private contributions, and... and... Please give 
me a moment for the dizziness and vertigo to fade!
Per earlier suggestions, simplification comes from realising the 
much?most?nearly-all of those indexes and catalogs are irrelevant* to 
you - they are still valuable, even indispensable to others, but if you 
are not using them, they are essentially 'invisible'! True, when I start 
a new project (including refactoring/updating 'old work') I will search 
and scan such libraries - updates may have been made offering advanced 
or more powerful features than were available 'before', and there is 
always the possibility of something 'new' (or newer) having 'entered the 
fray'. Once chosen though, all else can fade-away! I guess the key 
thought might be to have an 'open mind' at appropriate points in a 
project, but once chosen, to achieve the requirements using the tool-set 
'provided'. The 'checks and balances' comes when you sit down to code 
something - you should ask the question: is this so basic or such a 
common task (for example) that it is likely someone has done this 
before? If so, it is possible that a library exists - earlier this week, 
as an improvement/update task, I was coding the reporting of a large 
number of 'events' and as I (went back into the code) to collect the 
counters and code the summary report-lines, I remembered - hey don't 
"re-invent the wheel", 'there's an app for that' (um, "Counter" in the 
collections class of the PSL). Such 'lateral thinking' enables 
short-cuts and (hopefully) efficacy, but also 'learning experience'!
(are you only "working" if you are cutting code?)
So, when people claim "I know Python", they (had better) mean the narrow 
language itself - they definitely don't mean 'skilled usage of every 
package in the PSL' (leave alone all those other code-sources).
Feelings of 'over-load' lead to "fear". Embrace the "fear"! (actually: 
manage it, and put it back in its place!)


1 Learning resources
I've written (short) ideas recently (see 'archives', above). IIRC cost 
is an important criteria in your circumstances. So, rather than my/us 
listing Python books (which may or may not be available to you) perhaps 
visit any local libraries to see what they have (be wary of the 
Python2/Python3 issue though). NB university libraries are (usually) 
open to all for in-house study! Reading almost anything (skipping 'the 
easy bits') advances knowledge - I try to be reading something 'daily'! 
The "10,000 hours" observation of "Peak" skills (Ericsson) 'trending' 
amongst professionals, talks of "deliberate practice" - meaningful 
application of existing knowledge and continuous, if gradual, extension 
(advancement).

Given your preparedness to work through LeanPub's "Python Journeyman" 
book, if you feel confident in your capabilities as an autodidact (with 
the back-stop of list-members) may I suggest looking at MOOCs (Massively 
Open On-line Courses)? Many such courses are offered for $free 
(terminology is "audit") but one can (also/later) pay to have 
assignments graded and (hopefully) receive a certificate. Most/all 
(depending upon platform) are offered by recognised universities.

I guess I must start with edX* 
https://www.edx.org/course?search_query=python (prepare for yet another 
'over-load') There are courses in a huge variety of specialist areas as 
well as at different learning-levels. I noticed Georgia Tech offerings, 
and IBM.

Coursera is another 'big name' in MOOCs 
(https://www.coursera.org/courses?query=python&) I've been looking at 
some of the U.Mich courses (previously mentioned) and one of THE most 
famous/long-standing courses for beginners is their 'Dr Chuck's' "Python 
for Everyone" series.

On Udacity, I have previously recommended and received positive feedback 
on Dave Evans' 
"https://www.udacity.com/course/intro-to-computer-science--cs101". They 
offer 22 courses referring to Python. (With due apologies to Dave) I 
have an impression that they, like Lynda (on LinkedIn) offer courses 
from a wider variety of (private) organisations, cf 'recognised' 
institutions - also, perhaps because of that, fewer seem to be free (YMMV!)

On the subject of 'computer science', and in case it is of-interest, one 
of the most famous Internet courses is Harvard's CS-50* Intro to ComSc. 
Something in my InBox mentioned that it is still available. How old must 
it be by now? - hopefully updated since I first took a look! Similarly, 
in the on-line education 'pioneer group' is that MIT video-ed a number 
of their ComSc courses. Can't say if Python was featured, or even if 
they are still available. Ah, nostalgia...
* (IIRC the course code)

Finally, FutureLearn often has some quirky 'gems'. Their seven listings 
(https://www.futurelearn.com/search?q=python) seem to have mostly come 
from the Raspberry Pi Foundation. Go SBCs!

*Disclaimer(s):
'My' courses are on the edX platform - they are not related to Python. I 
have audited Coursera offerings for institutions, and have also 
'studied' both 'there', on edX, Stanford, etc, etc. Some of these 
courses are ageing, and I am unaware of how expeditiously they are 
updated (that, and grumping about Java-esque approaches to coding in 
Python, appear in both my public and private critiques). I cause 
discomfort by criticising (long) lectures from 'talking heads', and 
referring to thin layers of 'courseware' over an existing text-book as 
"glorified advertising". I'm enthusiastic about 'active text book' type 
systems where we are using the computer to do 'more' than act as a 
video-player and features which present the material in multiple 
ways/shapes/forms! (NB the latter has nothing to do with the false and 
debunked, pop-psy idea of different "learning styles")

Back to business: Another advantage of MOOCS (to you), is the 'social 
network' of "Discussion Boards" within each course. These enable 
trainees to exchange notes and seek assistance, both from their peers 
and the instructors - another form of support and encouragement in your 
endeavors...

There are other on-line tutorials and training organisations, eg 'Data 
Camps', 'Coding Camps', ... I am not competent to comment, either from a 
trainer's, or a trainee's, point-of-view. Again, widely varying by 
subject-specialisation, organisation, trainer, quality, age, etc, etc. YMMV!


FWIW and IMHO, you seem to be taking the most constructive approach to 
your learning: consider what you know now, choose 'the next' topic that 
interests you/for which you have an identified need, and research it. 
Then find people to answer your (intelligent) questions when you get 
so-far, but feel 'stuck'.


Wishing you well...
-- 
Regards,
=dn


More information about the Python-list mailing list