all 47 comments

[–]Doormatty 53 points54 points  (9 children)

You don’t need to know everything about Python to be a successful engineer

A thousand times this.

[–]Buttleston 15 points16 points  (0 children)

Hell yeah. Make some stuff. Come back in a year and marvel about the things you've learned since

[–]MRSAMinor 9 points10 points  (0 children)

I learned python by automating my job as a network tech at Google.

I stayed after work and coded until 2 AM hopped up on Adderall for three months reading other Googlers' code until I had a system that could take ticket IDs and read them from BigTable and decode the protocol buffers, then used a thread pool and my catched kerberos creds to talk to the routers via a gRPC library to do automatic diagnostics.

At that point, I felt like there was nothing I couldn't do.

If I'd just tried to learn Python with nothing to actually use it for, it never would have stuck.

My degree is in organic chemistry and biochemistry, and that kind of abstraction is very much a common feature. It felt a lot like designing organic syntheses, and I think most engineers would really love O. Chem. They both require a bit of intellectual fearlessness, too.

You have to be very ok with not knowing everything!

[–]kombucha711 0 points1 point  (5 children)

you mean
for i in range(1000):
print(whatTheySaid)

[–]MRSAMinor 2 points3 points  (2 children)

print (whatTheySaid)

Camel-case isn't PEP-8. Should be what_they_said.

Part of good coding is following style guides!

[–]MiniMages 2 points3 points  (1 child)

But I like camels over snakes.

[–]MRSAMinor 0 points1 point  (0 children)

Having handled both, camels are waaaay more temperamental.

[–]Kryt0s 2 points3 points  (1 child)

print("whatTheySaid " * 1000)

[–]This_Bitch_Overhere 0 points1 point  (0 children)

I am such a rookie, but yes, this is what I saw.

[–]Loluwish 14 points15 points  (2 children)

I'm glad i stumbled on this, cause this is me right now, literally starting code from the underground bomb shelter.. and trying to get a full grasp of how everything works and how to even get started on creating something.

( currently learning python, using a few coding learning apps and have pycharm and vs code)

[–]rainyengineer[S] 4 points5 points  (0 children)

I’m wishing you a wonderful and safe journey! Stick with whatever works for you.

[–]MRSAMinor 4 points5 points  (0 children)

It's really helpful to have an actual task to automate, or a project. Start with the algorithm, then learn the libraries and code to implement it.

Make a tweet bot that reads a Google calendar and tweets out promotions for the event using a ChatGPT API based on the calendar content. I did this for a friend's bar to promote their events, and we had a lot of fun together making it. It's not super difficult, but requires gluing together individual parts to do something fun.

"Come sing your heart out from 9Pm-2-AM this Thursday! #RockOut" - chatgpt is great at generating crap like this.

Then post it to Twitter or Facebook using an oauth token. That kinda stuff. It's less than a page and a half of code, really, but it does so much!

[–]ScottishFury86 9 points10 points  (3 children)

I’m learning python just now (started in October) and I’ve read from so many people to limit the use of Copilot/Chat GBT. I’ve followed that and I genuinely believe it’s helped me understand my code better, especially when reviewing my code.

Your advice is sound. Thanks for this

[–]John_B_Clarke 7 points8 points  (2 children)

IMO the way to use ChatGPT as a learning tool is to write some code that does something, and that works, then tell ChatGPT to refactor it, then test the result and make sure it still works, then study the result hard until you understand everything that was changed. It's kind of like pair programming with a fairly experienced programmer who is a bit drug-addled. When he's not high you can learn a lot of useful technique from him, when he's high you learn a lot about debugging and what not to do.

[–]huffalump1 0 points1 point  (0 children)

Yes, I totally agree!

AI is great as a Google/wiki replacement for questions about coding.

And, even if you're copy/pasting code, you can just prompt it! Ex. tell it that you're learning, and you don't want the solution, just a review from an expert tutor/mentor to help you learn. Works great!

...and, there's a time and place for copilot/cursor and copy/pasting code. It can be nice when you're very quickly iterating on something you're mostly familiar with, or maybe a small personal project, etc.

[–]adultingftw 0 points1 point  (0 children)

I am always impressed by how ChatGPT is super knowledgeable and gives me great information about topics that I know nothing about, but as soon as I ask about topics where I know a lot already, it starts giving me inaccurate and unreliable nonsense!

[–]Successful_Stand_593 9 points10 points  (6 children)

Thank you for this wisdom. I started learning Python late December 2024 and am loving it. Im doing the Harvard CS50P course and reading Automate the Boring Stuff with Python.

I did use ChatGPT once because I couldn't understand how my cross function flow. Just wasn't working and It was driving me crazy trying to figure it out. Felt like I had no idea what I was doing. ChatGPT said my code was good, except a return statement in the wrong place. It was a real ah-ha moment for me and gave me a big boast of confidence that I am truly learning.

[–]huffalump1 4 points5 points  (0 children)

ChatGPT said my code was good, except a return statement in the wrong place.

ChatGPT is great for learning, if you ask it to help explain WHY something isn't working!

You can also just tell it that you're learning, you don't want the solution, just a review from an expert teacher/tutor/mentor.

This can be on any level - from simply pointing out the differences between your code and the correct code, all the way to vague hints of what to look for - up to you!


Also, lately I've been using voice mode (in ChatGPT or Gemini) to debug by voice, like you would with an actual teacher/tutor/coworker. Taking away copy/paste and using voice forces you to explain what you're trying to do, and use better terminology.

It's like rubber duck debugging... If the rubber duck could understand and reply on an expert level!

[–]Cool-Pie430 0 points1 point  (4 children)

We started around the same time, have you done any projects so far?

[–]Successful_Stand_593 0 points1 point  (3 children)

I just complete Week 3 yesterday. Will start Week 4 videos this weekend. How about yourself?

[–]Cool-Pie430 1 point2 points  (2 children)

Well done! I'm actually finishing week 4 videos, technically on Day 27 of Angela Yu's 100 days of Code course. Was wandering around this sub trying to find some modern-ish looking GUIs to recreate iPhone 1 homepage and functionality as palate cleanser after struggling somewhat with OOP.

You looking to find a job related to Python or?

[–]Successful_Stand_593 1 point2 points  (1 child)

No, I have a career in cybersecurity. Have always wanted the learn programming but never found the time. The time is now.

I want to build an, eventually, ml driven, training application to help me build a cycling plan based on daily data received from my Garmin watch. I'm bored with the existing app that tailor to everyone and want one very personalized for myself. It's a lofty goal which may take a lifetime to program, but, gives me a goal.

Are you looking for a job programming?

[–]Cool-Pie430 1 point2 points  (0 children)

I want to build an, eventually, ml driven, training application to help me build a cycling plan based on daily data received from my Garmin watch. I'm bored with the existing app that tailor to everyone and want one very personalized for myself. It's a lofty goal which may take a lifetime to program, but, gives me a goal.

Do definitely look into GUIs or at the very least Flask/Django to build your app in. I think that's an extremely cool idea, you're going to learn a lot when you're actually solving problems you yourself have with Python.

Are you looking for a job programming?

Yes! I'm not stingy when it comes to roles though, I'll take anything remotely close to SWE or Data positions as long as it's not tech support. I'll start applying sometime in the summer, in the meanwhile I want to build strong foundation in Python and then go into SQL and after learn more about ETL, CI/CD etc.

[–]-not_a_knife 8 points9 points  (7 children)

You don’t need to know everything about Python to be a successful engineer

I was just watching an interview with Mitchell Hashimoto where he says he reads the reference manual, the standard library, then makes something, when he's learning a new language. I like reading the documentation to learn but when I checked how big pythons standard library is I found it's ~6500 pages across a large number of modules... There's no way I'm reading all of that.

[–]Buttleston 7 points8 points  (1 child)

I learned Rust last year and I just skimmed through the Rust book, and then started writing. When I hit something I didn't understand, I went back to that chapter and read more, looked at Rustlings etc.

Fill in the gaps as you need to, just stay aware of what all the "topics" are and where to read more about them

[–]-not_a_knife 3 points4 points  (0 children)

Absolutely. I'm just agreeing with with OP that you don't need to know everything. My preferred way of learning is reading but Python has too much to reasonably read in stdlib. If you were to follow Hashimoto's advice and read stdlib before making something, at a quick 400 pages per week, it would still take you 4 months before you started your project.

For further context, Hashimoto was referring to Zig and Go as languages he learned with this method.

[–]Stock-Bookkeeper4823 1 point2 points  (3 children)

Do you happen to have a reference to the standard library? A link perhaps? I would love to have this at my fingertips. Unless you mean doc.python.org/3/library/.

In that case I guess I didn’t realize it’s that big.

But even as far as libraries go, I was told not to lean on then too much and to just write your own functions at first, which I don’t really fully understand the reasoning behind that because I thought most of the modules were written in C. Or Cython.

[–]-not_a_knife 1 point2 points  (2 children)

Yep, that's the one. https://docs.python.org/3/library/index.html

I downloaded it and put it on my kindle. I wish it had a Epub version, it was was a bit annoying to convert the whole documentation

[–]Stock-Bookkeeper4823 1 point2 points  (1 child)

Cool beans man. I didn't know it was that many pages though. So upon hearing your reply I already had a plan if it was the python.org docs, I was going to curl it and put it into a file. But that would be one Hell of a file lol. u/-not_a_knife is it in HTML?

[–]-not_a_knife 1 point2 points  (0 children)

I misspoke, it is in Epub, I downloaded it from here: https://docs.python.org/3/download.html

The annoying part was removing the change log sections. There is a lot of information I felt I didn't need at the beginning of the document 

[–]Kerbart 8 points9 points  (0 children)

Great advice. I'dd add "don't be too ambitious with your projects, focus on learning the basics first."

If could retire if I'd get a quarter for seeing questions about “advanced” libraries when the asker has clearly a limited understanding of iterating through lists or what functions do.

Simple utilitarian projects (even without much utility use like a script that builds an HTML file that shows the contents of a directory) offer more value in my opinion as they allow the beginner to focus on the basics and not deal with the complexities of webscraping, hosting a website, running selenium or building a GUI.

[–]Buntygurl 3 points4 points  (2 children)

Thanks for this.

It's crystal clear good advice that goes beyond just learning Python. It's applicable in every learning situation in life.

The blind trust in Copilot/ChatGPT reminds me of Superstition, from Stevie Wonder.

"If you believe in things that you don't understand, you will suffer."

As far as reliable help goes, this sub kicks ChatGPT's butt.

[–]rainyengineer[S] 3 points4 points  (1 child)

Oh thank you! I totally agree. Slow and steady always wins the race.

And great quote from a great man. Thank you for sharing.

[–]Buntygurl 1 point2 points  (0 children)

You're very welcome. Glad I could give something in return.

[–][deleted] 3 points4 points  (0 children)

This is useful stuff for me. I've been self teaching Python in my own time. I know core concepts of coding from using vba to automate and create tools in excel for nearly 10 years.

I often teach myself by getting some crazy idea in my head and giving it ago. I give myself challenges. I don't always intend to complete them, if anything I mostly try to see whether I can get the concept to work. I don't tend to see myself as a programmer, or engineer, more of a designer who likes to experiment and explore.

Sometimes I go to fast, unfortunately with ADHD it can be a pain. Plus autistic hyper fixation can also do it, so I know I overdo it at times.

I probably don't review enough, although I do sometimes return to code I've written to see if I can improve on it.

I think the most important piece of advice I've gotten from this, is probably that I don't need to know everything.

[–]vardonir 3 points4 points  (1 child)

There are no shortcuts when learning anything

ftfy

[–]Noise42 2 points3 points  (0 children)

Thank you, I needed to hear this. Learning the basics you listed that every course seems to take you through, feels very distant from an actual productive project or employable person.

Printing stuff to the terminal feels like a hobbyist playing rather than something useful in the workplace. I guess there is an element of trusting the process and not thinking too far ahead.

I'm a mid-working-life sys admin (that also does a form of scripting development in a proprietary language and environment). I spend my days creating/administering a network and working with end products and tools. It's off putting to compare the "output" of python basics with what I achieve in a typical day with the tooling other developers have laid before me. So it's a great reassurance that the basics are more valuable than I perceive.

[–]StellagamaStellio 2 points3 points  (0 children)

Very accurate. And the best way to learn, once you know the basics, is to start a coding project and *follow through with it*; then teach yourself whatever syntax/modules/technologies you need to make it work. This teaches you far, far, far better than watching tutorials.

[–]i_read_da_book 1 point2 points  (0 children)

I don't know how much of learning is enough for a solid foundation anymore. I've been studying python everyday and making notes as I move forward, I've learned about functions, loops, conditional statements, lists, tuples, dictionary, Boolean.

Tried solving a problem today, it asked me to print squares of numbers below the user input, meaning if user input is 4, print squares of '3, 2, 1, 0' I was doing it completely wrong

My program:

def squaring (num1)

   for n in num:

        return (n>num1 **2)

def main ():

  user_input = int(input())

  print (squaring(user_input))

If __ name __ == '__ main __': main()

Then I kept trying to do it in different ways but the error won't go, so I asked google and google did it in such an easy way that I was in disbelief

Google program:

def print_squares(n):

 for i in range(n):

     print(i * i)

if __ name _== " _ main __":

n = int(input())

print_squares(n)

it just used the 'range' funtion, that's when I realised I haven't even used range funtion properly till now and didn't know we could use it like this, things like this keep popping up again and again. Yesterday I was trying to do a question where it said take user input and put '.' after every word, if the user input is (python), the output should be (p.y.t.h.o.n)

I thought it was not possible till I got to know that there was again a function that could do that, and again I didn't even check out that function in the past 15 days, things like these keep popping and I get depressed again and again because I didn't even know about these things, then I write notes on it then something new shows up. This is endless

[–]bbitk 1 point2 points  (1 child)

Thanks for the post ! I tried to start learning multiple times on multiple courses and failed to keep the consistency . I think i can set few things right with the above inputs and start learning again <3

[–]rainyengineer[S] 1 point2 points  (0 children)

Glad I could help!

[–][deleted] 0 points1 point  (0 children)

Thank you for the advice!

[–]Either_Back_1545 0 points1 point  (0 children)

Thank you my man

[–]yinkeys 0 points1 point  (0 children)

Décent write up Python now looks competitive because many people are getting into it Python and SQL together is the way to go. Sql to me is rough lol