osdir.com


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Python list and Python Journeymen*


Hello DL Neil,

Thanks for taking time to read me email and writing this reply. I will refer it time to time, mainly the resources.

I spent just 7 years in this programming industry. One last thing, I would like to ask/repeat again. Larry Wall said [5 Programming Languages Everyone Should Know](https://www.youtube.com/watch?v=LR8fQiskYII) and, Bjarne Stroustrup said the same [The 5 Programming Languages You Need to Know](https://www.youtube.com/watch?v=NvWTnIoQZj4) .I know 2 dynamic programming languages so far, and 3rd one I am investing time is Python. So next one as per their talk could be an ML kind of. But Larry is said that it is for smart people.. :) Is it possible to get a control on 2 very different thought processes, and write them in parallel. Or you would suggest to be good at one type and that is enough. What would be your advices? How do you see this ?



Thanks,

Arup Rakshit
ar at zeit.io



> On 14-Apr-2019, at 5:28 AM, DL Neil <PythonList at DancesWithMice.info> wrote:
> 
> * 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
> -- 
> https://mail.python.org/mailman/listinfo/python-list