top | item 29850053

ASK HN: What should a Python developer learn next?

13 points| everydaybro | 4 years ago

Hi everyone, I'm a freelancer in python, and I want to learn other things. currently, I only know python, js. what other technologies that will help me move forward?

P.S. I'm not a professional in python, and I probably need to learn it more. but I just want a new useful thing.

25 comments

order

LaurensBER|4 years ago

I've started my career with Python and after doing some Typescript for a while I've really fallen in love with Scala. The syntax in Scala 3 is very readable (after dealing with the initial discomfort of a new language) and the language feels, in same ways, like a natural evolution of Python.

Having the possibility of using the whole Java ecosystem is also a huge plus. It's definitely not a perfect language but it shares some strengths with Python and it's a great language for "larger" projects.

rjmill|4 years ago

Scala is one of the only languages that I've missed after using Python for the past few years. (When I look for jobs, I mostly look for Python and Scala jobs rather than other languages I've worked in.)

Other comments point out that you should try to dig deeper into python. That's fair. But if you've only worked in a couple languages, learning a new language will give you more perspective on the languages you already know.

Learning any other language will probably be helpful, but Scala is an easy recommendation to make. It'll force you to learn new things, and it's a pleasant language to work in once you get used to it.

brutus1213|4 years ago

Do you really know deep python? Things like async.io? Frameworks for parallel processing such as Dask? How about even how to do deep learning with Python (Pytorch, Tensorflow). How about NumPy, Pandas, Scikit-learn? How about interop between Python and native code? I have a feeling that you can get more depth rather than breadth. I'm a breadth kind of person and wish I focused on depth early in my career.

jstx1|4 years ago

A lot of what you listed is frameworks and libraries. I think a person can comfortably say that they know a lot of Python even if they've never touched most of them. Knowing a language well is different from covering all the possible libraries, frameworks and use cases.

If someone wants to get a bit past beginner in Python, the two general directions are to learn more about how the language works internally (Fluent Python is a great book for it), or to learn more about how to write Python well (Effective Python is a great resource for best practices in Python).

callumw13|4 years ago

You will see a lot of anecdotal opinions, obviously, as each persons advice will come from their own history but I'd like to echo the comments that there's no real linear path of what you "should" do next after learning Python. You have endless opportunities.

My own 2 cents would be that I would recommend sticking around before moving on. Learning one language until you're fully proficient as you said you're not yet "professional in python", find problems that you can solve so you get used to solving the actual problems not working on learning the language syntax. Python is incredibly versatile and you have endless projects available to you. Once you have done that, you can start to consider what languages would've made sense to use for the project, what would the advantages/disadvantages be and try to pick the most appropriate language for each project.

jstx1|4 years ago

Whatever you want. Really.

There isn't a "I've done language x so now I'll move on to y" progression chart anywhere.

It's more about what languages you like to use, what you would like to work on, what you're curious about, whether you want to be using that language at work some day etc.

gostsamo|4 years ago

I'd say docker and sql. If you have some base that you want to build upon, extend the stack so that you are more versital and can handle issues around the stuff you are working on.

raihansaputra|4 years ago

Second this, especially if you're doing web development right now. SQL is great (start with analytic-type query), or even dig deeper into the SQLAlchemy/Django/whatever ORM you're using.

flubflub|4 years ago

You could learn about basic anomaly detection systems or simple recommendation engines.

At a simple level this is language agnostic although at a higher level you should use Python for machine learning.

As for specific technologies possibly Rust which is like an OCaml and C hybrid.

If you wish to think differently I recommend Haskell and Coq but these are not 'useful'.

sateesh|4 years ago

Any recommendation of how to get started with recommendation engine and anomaly detection ? Should one grok all the math pre-reqs before starting with them, or can pick the math as we go along ? Appreciate your inputs.

sebst|4 years ago

I would not focus too much on “technology” but more on its applications. Maybe you want to have a look into electronics, machine learning, cryptography, network protocols or something like that.

With some literacy in Python you are well equipped to proceed to a more problem-solving focus.

gilch|4 years ago

Read the [Hissp][1] tutorials (find the docs). It shouldn't take a Python dev too long. It will deepen your Python knowledge and give you a gentler introduction to the world of Lisp because it uses the familiar Python vocabulary with Lispy syntax and then introduces macros. After that intro, and given your JS experience, you should be able to pick up ClojureScript without too much trouble.

[1]: https://github.com/gilch/hissp

f0e4c2f7|4 years ago

With already knowing python and js it might be interesting to learn databases and web servers next. I would reccomend postgres and nginx. They'll connect up nicely with python and JavaScript and you'll be working with a whole stack top to bottom.

Another fun place to explore might be libraries for either language. Both have rich ecosystems of thousands of libraries that connect up to various things in the physical and digital world.

https://pypistats.org/top

speedgoose|4 years ago

You could try Rust, it’s a bit more verbose and complex than Python but it’s a very loved programming language. The most loved one according to the latest stackoverflow.com survey.

irmis|4 years ago

Note: not a phyton, but PHP programmer here I also recommend Rust, learning Rust just for little bit may change how you think and tend you to make better decisions when coding with language you are familiar with.

makapuf|4 years ago

I second the answers saying to bother on what to build, the how will follow, and that there is not hierarchy of languages. Js/Ts, rust, C++ are perfect choices. But maybe Go can be easy to take on after python. It all depends on what you want to build.

darthrupert|4 years ago

Check out Common Lisp. Many of the concepts they designed in 80s and 90s have made their way to python in some form. Also, much more efficient runtimes and a more useful type system.

Peter Norvig's book seems like a good introduction.

hu3|4 years ago

Learn something that's also useful for your career. Win-win.

MaxDPS|4 years ago

I mainly work with python but I’m currently learning C#. Lots of love for both languages and plenty of resources.

machiaweliczny|4 years ago

Just build interesting stuff, you will learn all necessary tech in meantime. I suggest fast.ai course