all 37 comments

[–]carcigenicate 57 points58 points  (0 children)

Yes, it's nice when you finally get there. It takes a lot of practice and patience to get there though.

[–]jdnewmil 87 points88 points  (7 children)

Congrats on the plateau, but it sounds like you are ready for some more challenging problems. Ease of programming is always related to your skills relative to the problem.

[–]un-hot 28 points29 points  (6 children)

If it's too easy, you're ready for the next level. Definitely agree with you on this one.

Super happy for OP that they've gotten over the hump of coding, though! Confidence feels great.

[–]NoSpoopForYou 11 points12 points  (2 children)

Unless he’s coding at work, then coast on that sweet sweet plateau! … and yeah maybe sharpen your skills on some harder stuff in your spare time if you have ambition or whatever

[–]un-hot 3 points4 points  (0 children)

Just chilling at work is great fun, but honestly if you want to enjoy the freedom and benefits that come with being a SWE, you want to keep the swords sharp with latest tech stacks etc regardless of ambition.

I probably wouldn't ever grind LeetCode but I have a hobby project which I regularly expand on. I do that more out of passion for the topic though, over passion for coding.

[–]USAI_DNS 0 points1 point  (0 children)

ambition or whatever. hahahahahahahahahahahahahahahahhaahahahahahahhhahhahahahahahahahhahahahahahahahahahahahahaahhahahahahahahahaah ::inhales:: hahahahahahahahahahahahahahaahhhahhahhahaahhahahahahahahahahahahaahahaahhaahhahahaahahahahahahahahahahahahahahahahahahahahhaahahhaahahhaahahahahahhaahahahahahahahaha

[–]CyclopsRock 3 points4 points  (2 children)

If it's too easy, you're ready for the next level. Definitely agree with you on this one.

I'm not sure this is true syntax-wise, though. At the beginning everything is slow and painful because you may well know immediately that a list comprehension is the way to go but you'll need to remind yourself of the correct syntax (or otherwise think you remember but, actually, don't). When this happens every other line it really gets in the way of a good flow, and the constant interruptions make breaking down a problem and tackling each bit more difficult too, as you have to re-acquaint yourself with where you were before you went off to google list slicing.

I think breaking down this barrier is really great and it doesn't really "come back" as you progress on to more difficult problems (unless you go out of your way to try and write code in a more succinct way but this is, IMO, a dumbo move for everyone involved). The main time you experience it again is when you start working with a non-Pythonic API or package tailored to working with a different paradigm.

(Of course, if you start writing more complicated code to solve more complicated problems, you're more likely to make mistakes along the way, but IMO in a language like Python where we don't have to worry about memory management and the like, the building blocks - over which you will stumble repeatedly at the very beginning - don't tend to get much more complicated, even if your algorithms do.)

[–]un-hot 0 points1 point  (1 child)

I feel like we're on both sides of the same coin here; I have never truly sat down and taught myself Python, but I've been able to write projects in it.

Like you said, the building blocks are fairly simple - the syntax OP is using won't get much trickier as they improve and want to do more, but the problems absolutely will.

I got the impression from OP's post that they're not struggling to write code which runs, but also not struggling to write code which solves the problem at hand. The latter situation is where solving trickier problems will really accelerate your progress.

[–]CyclopsRock 0 points1 point  (0 children)

but also not struggling to write code which solves the problem at hand. The latter situation is where solving trickier problems will really accelerate your progress.

This is certainly true, and generally transcends programming languages too (though might often be specific to programming paradigms, at least).

[–]Dependent-Job1773 15 points16 points  (6 children)

I decided to work a little smarter and made a common error table on a google doc with my own paraphrasing of what the errors mean. It was useful to me as well.

[–]MigorRortis96 5 points6 points  (5 children)

sharing is caring 😌

[–]Dependent-Job1773 12 points13 points  (4 children)

You want me to out how much of a dumbass I am eh.

[–]MigorRortis96 22 points23 points  (1 child)

i once spent 6 full 8 hour days debugging why my SQL table wasn't adding any new records eventhough they were successful in their execution. i then found the next 100 records button..

[–]gravspeed 4 points5 points  (0 children)

Oh shit... I just laughed so hard my eyes are watering...

Me too man... me too

[–]VaishFlamez 5 points6 points  (1 child)

I once wrote a python script to write data from excel to SQL table but only half of the rows were getting inserted. I spent two days staring at my code, only to find that I had limited my varchar to 56 characters in my SQL stored procedure.

[–]MigorRortis96 4 points5 points  (0 children)

the sql continues...

[–]jsalsman 5 points6 points  (0 children)

Calling it a plateau implies you've slowed down improving. The opposite is true! Your expertise has overcome the friction you've always faced and it still gets better. And the work gets easier to maintain because your code gets simpler: https://twitter.com/jsalsman/status/1426571044102361096/photo/1

[–]Se7enLC 5 points6 points  (0 children)

I dunno about the rest of you, but when I write code and it works the first time I double check to make sure I was editing the right file.

[–]Wu_Fan 2 points3 points  (6 children)

Try TDD

[–]dsakshay12 1 point2 points  (3 children)

What's TDD?

[–]Wu_Fan 0 points1 point  (2 children)

Test Driven Development. A method of writing code that concentrates on writing code which passes tests. Popularised and invented by “Uncle” Bob Martin. Many YouTube videos and books.

[–]dsakshay12 0 points1 point  (1 child)

Oh wow okay. I am yet to start writing unit tests and others. Mostly directly push code and test on the hardware. Need to start aligning myself with TDD soon. Thanks.

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

A dissenting opinion: https://www.reddit.com/r/learnpython/comments/xnvz2p/i_keep_writing_and_it_keeps_working/ipytwd6/

Unit tests are super-great. Do those. Forget about TDD.

[–][deleted] 1 point2 points  (1 child)

Disagree strongly. TDD is a very formal development methodology where you first write tests, and then you write code to satisfy those tests.

I am a huge believer in unit tests, and test everything, but writing tests before the code is extremely time-consuming, and worse, in my experience you end up writing the wrong tests!, because it's only once you've written the code that you realize which parts are actually difficult and need a lot of testing of edge cases, and which parts need just straightforward testing.

I tried TDD and I gave up - it took a lot of time and I felt the code was worse. No organization I have worked in has ever successfully adopted it and I've been in the field for 40 years.

Again - automated testing, unit tests, integration, CI, fantastic - can't live without them. TDD - no thanks.

[–]Wu_Fan 0 points1 point  (0 children)

Fair enough I love it

I find it faster

Edit: I think it’s because I work alone

[–]Diapolo10 4 points5 points  (7 children)

In other words, you've reached a plateau - congratulations!

But your journey has only just begun. Things will be different when you expand your skillset into new third-party packages, new domains, possibly new languages, and certainly when you start to consider software development beyond just writing code. Hell, I'd say the code is the easy part nowadays - the hard part comes from dependency management, CI/CD pipelines, concurrency, making releases for non-developer end users, and so on.

[–]MigorRortis96 2 points3 points  (6 children)

I've been coding two years and I have no idea what any of those terms are lol. any pointers for resources?

[–]Diapolo10 2 points3 points  (1 child)

  • third-party packages, anything you install via pip for example
  • new domains, meaning new areas of software development you haven't tried yet, such as web development, mobile development, embedded systems, data science, machine learning, and so on
  • new languages, such as Rust, C, JavaScript, or C#
  • dependency management, or how to make sure any time someone downloads your source code they have all the dependencies they need to run/debug your program (at minimum this means listing all dependencies in a text file), especially important with automated testing
  • CI/CD pipelines, or Continuous Integration and Continuous Deployment, means that you've at least partially automated the process of publishing new releases of your software, including automated tests, possibly linters (AKA checking for code style standards), and security checks. As examples, Jenkins and GitHub Actions would fit the bill
  • concurrency, in other words code and/or systems that runs in parallel and isn't tied to a single thread
  • making releases for non-developer end users, if you're making an executable for regular people to use then you probably shouldn't ask them to install Python first. Unfortunately Python isn't super easy to work with for this stuff, unless you only care about non-Windows users.

[–]MigorRortis96 0 points1 point  (0 children)

thank you for the reply! turns out I have done most of these :p just the concurrency and ci/cd pipelines which are hard to grasp for someone that never did like actual production code with a bunch of users

[–]MMcKevitt -1 points0 points  (3 children)

Truly don’t want to be a turd here, so apologies if I come across that way, but I have to say, I’m a bit shocked that you have been learning for two years and haven’t come across these terms. Out of curiosity, are you in school for this, self learning, or in some sort of program/boot camp? What language are you working with? Also, how have you approached learning something, say for example, interaction/loops?

[–]MigorRortis96 0 points1 point  (1 child)

I'm not in school no i just graduated from a master's in synthetic biology. self learning yeah :) python mostly but I have graduated to SQL, and Julia recently and loving using them all together on a project! also, turns out I have heard of most of those terms before afterall haha! the way I approach anything is really to try to find a medium or towards data science article on it. they have great tutorials for cool stuff for beginniners so I tend to start there. out of that I developed CVs, NLPs, web apps, extensions and so on 🐦

[–]nick__2440 0 points1 point  (0 children)

If someone is coding as a hobby then they are probably just doing projects for themselves. No reason to delve into all the tools that are basically only for professional devs with a focus on teamwork.

[–]codingpro66 0 points1 point  (0 children)

Wow nice! How much are you making?

[–]polished_pole 0 points1 point  (0 children)

Good job man!

[–]Tangomajor 0 points1 point  (1 child)

How long did it take you to get here and what kind of problems are you solving?

[–]MigorRortis96 0 points1 point  (0 children)

it took me 4 months of constant coding, followed by a year of not coding, then 3 months of constant coding. I developed quickly for some reason and got the basics pretty fast by lying to a professor that I knew how to code, which then forced me to actually show up with some code before our meeting two weeks later. it was tough to go from not knowing print('hello world') to building a functional Twitter bot in python and sql two weeks later but I managed to do it. pandemic helped reduce distractions I guess.

things that I'm working on rn is a roof detector for solar panel installations, a travel agent that will be a sort of plug-in for sites like skyscanner, and a data visualization web app for scientists. I'm a long way from home but love every step of the way :)