My friend works in a bank and for a long time has wanted to make the switch to Python. To date, he has read a few books and knows some intermediate concepts, such as closures, generators, etc.. Outside of Python, he has built workflows in Alteryx and knows some SQL.
His teenage son challenged him to start applying for roles in 3 calendar months from now. He figures he can dedicate a max of 3 hours per day. How should he best use his time?
Should he drill on Leetcode? Build a small portfolio? Gain a specialization within Python? How best would you allocate his hours?
Trey Hunner is one of the more gifted speakers - and he's really laid out a great exercise and test-coverage plan.
The best thing I can say about pythonmorsels is that, every 15-20 exercises, I look back and realize how little I actually knew. Going through all the exercises is easily the equivalent of a full-semester "Introduction to language" course at a college (minus the algorithmic elements - this is a "language concepts" site)
Leetcode only gets you pass the first round of interviews and not every company does them. I consider these useless textbook problems but you'll need them to get the job. They won't help you much in the job.
More importantly (imo) he needs domain specific knowledge. I.e. if it's going to be web development then he needs to start a web project with the backend in python. If it's stats/analysis he needs to start on analysis projects. Etc.
My advice is on making small projects that cover topics he'll be working on in the jobs he applies for to build a small portfolio. And brush up on the leetcode like a month before.
For learning, exercism.io is amazing: they assign people as mentors to review your code, and I've had really good experiences while learning Rust, with feedback calibrated nicely to my level of expertise.
For how to think about algorithmic interviews, I always recommend this short set of notes: http://courses.csail.mit.edu/iap/interview/materials.php
For fun, try Advent of Code this year and see how far you get, and whether you like it. As @analog31 suggested, this might be a fun thing to do with his son.
Making switch to Python is rather a broad goal. It's just a tool, and as any tool it's used for a purpose and often along with other tools.
If he aims at any entry level coding position, then likely it'd be more about entry level, than proficiency. Basically, testing the discipline and analytical thinking (thus all puzzle and algo problems, dreadful leetcode etc).
If he plans to leverage his present skillset and experience, then in that alloted time I'd try to implement some aspects of his present job projects in Python (if such aspects are mappable, of course). General goal is to try and fuse his present experience with the newly acquired knowledge of Python (a known problem and solution, just a new tool).
Again, it does not need to be grand, just some specific aspect, say, parsing args or a configuation file, or grabbing something from a database, or triggering some process based on some config, logging something, wrapping his code for reuse or installation etc. Whatever he is familiar with in his job responsibilities.
The goal is to get used to the new tool, know what it takes for it to become useful at his level of experience.
Eventually, he could (in a stretch, perhaps) claim of trying to apply or evaluate the use of Python in his current job scope. This could count more, than just leetcoding ability, which may still be a barrier to get through, however, depending on the chosen companies.
Good luck to him!
Those are the two things I did, I came from PHP and until a 2.5 years ago I never touched python but I work with it full time (also react, which I didn’t know at all when I started.)
What you build isn’t all that important, or the language. Most languages can be picked up on the job. But doing some personal projects + a couple leet code or project Euler problems a week will make one a good programmer in 3 months. You want the personal projects to act as a portfolio you can show off to recruiters though.
The standard docs don't get recommended to beginners very often because they are not designed to be fun/motivating like learning sites, but provided that the student is intrinsically motivated, I think it can be exciting to look at all the modules and start to learn about all the things that people have built and provide for the programmer. Learning to navigate the reference material is an important skill. Some of the sections are confusing, dry, and unhelpful. Others are very worthwhile and knowing where they are is important.
Python in particular has a large standard library, much of which is quite old (good in that it is very mature, not so good in that some of it is barely relevant any more). I've been programming python for a decade and I look at the standard docs every day for something. `stdtypes.html` is kind of a big mess but at some point you have to learn most of what is in there.
If I were hiring a programmer, one of the things I would try to evaluate would be their basic research skills.