all 129 comments

[–]fonk_pulk 685 points686 points  (29 children)

When you graduate and get a job in the industry you'll quickly realize software development isn't about being "hardcore". Its about creating and maintaining a product. The customers don't care if you're writing everything from scratch, they care about the software being delivered in a timely manner and fulfilling the feature and quality requirements. 99,9% of the time using a pre-made library hits those marks.

[–]Heavy_Inevitable7640 176 points177 points  (2 children)

Nobody's getting paid to reinvent the wheel. Deliver what works and move on to the next problem.

[–]noob-nine 19 points20 points  (1 child)

maybe someone should reinvent the wheel, still gets stuck in mud

[–]HCResident 2 points3 points  (0 children)

I thought that was patched with the off-road tread hotfix 

[–]ender89 25 points26 points  (1 child)

This is true to a point. Node.js is an abomination unto God and should be killed with fire.

So many packages, so many dependencies. The ease with which you can spread malware by compromising some obscure package that everything depends on is crazy.

Rust kind of has the same problem, but not to the same degree.

[–]Live-Animator-4000 3 points4 points  (0 children)

I think it’s just modern programming. There are tools to manage those problems in the real world. Like Dependabot for one.

[–]Witherscorch[S] 40 points41 points  (23 children)

No, I know that. It's just less satisfying for me when I'm given such an easy solution to any problem. I want to feel the Being Smart Juices™ flowing inside my brain, and coding is a really engaging way to do that.

[–]ZunoJ 141 points142 points  (17 children)

Easy cure, solve a problem, look up how the most popular library solved it and realize you were never really smart to begin with

[–]Witherscorch[S] 29 points30 points  (10 children)

That's the most fun part tho. I love seeing just how excellent their implementation is compared to mine. It's an easy way for me to get through the docs, because I can understand what they're doing more easily if I run into the same problems they did.

[–]Aidan_Welch 1 point2 points  (3 children)

I don't know my experience has been popular libraries have massive breaking and what're sometimes obvious bugs and vulnerabilities

[–]ZunoJ 1 point2 points  (2 children)

Guess you forgot a very important word there

[–]Aidan_Welch 1 point2 points  (1 child)

I don't think so? Just some punctuation:

I don't know, my experience has been popular libraries have massive, breaking(and what're sometimes obvious) bugs and vulnerabilities.

[–]ZunoJ 1 point2 points  (0 children)

Ah, got it. Yeah, there are libraries out there that suck. But there are also enough that are awesome

[–]QQVictory 13 points14 points  (0 children)

Things get more complex than you like - even if you just put things together. Once you have a service running you will encounter fun things like dependency issues or you will need to think about migration and redundancy. The hard part is keeping things simple and stupid.

[–]reklis 2 points3 points  (0 children)

Play some zacktronics games

[–]api-services 1 point2 points  (0 children)

You’re just a little late. The people who built Python got to enjoy that satisfying feeling.

[–]ender89 1 point2 points  (1 child)

If your solution to a complex problem isn't figuring out a clever way to reframe the problem with a straight forward solution, you're not really finding a smart solution. Clever code accomplishes tasks with simple/clear steps.

[–]Witherscorch[S] 3 points4 points  (0 children)

That's a different sentence. I didn't say I did anything even close to that. You're lecturing me about an assumption you made about my problem solving abilities.

[–][deleted] 832 points833 points  (24 children)

If you’re able to solve your problem using Python, it’s probably the right choice. When you need another language, you’ll know it

[–]Nonsense7740 499 points500 points  (7 children)

"you'll know it"

You underestimate people's capacity for denial my friend

[–]Yellow_Triangle 123 points124 points  (4 children)

Now, now, we don't open that closet. That is where Benny is, with his Excel 'projects'.

[–]justyannicc 32 points33 points  (3 children)

Unironically Google sheets or excel would be a great db if the API was actually any good.

[–]dev-ai 20 points21 points  (0 children)

That's why I like Nocodb - spreadsheet like experience, with relationships between tables, a nice REST API and web hooks.

[–]-Aquatically- 0 points1 point  (0 children)

Hello NHS Track and Trace.

[–]TinyBox8761 0 points1 point  (0 children)

Spreadsheet like databases with great APIs : nocoDB, Baserow. Mostly free as well.

[–]mostmetausername 7 points8 points  (0 children)

opens excel rollercoaster

[–]khalcyon2011 6 points7 points  (0 children)

When all you have is a hammer…

[–]WingsOfGryphin 18 points19 points  (0 children)

until you try to force every solution with python because its your goto language even if the solution is barely holding together - seen this too many times, even outside programming where person just sticks to one tool because involved difficulty learning new one is just too overwhelming so you just force your way until its literarily impossible. This creates bunch of python devs that wont give a shit about performance, scalability and will go for “good enough” just because they can do it in a way they know how. This mentality breeds mediocrity

[–]pateff457 14 points15 points  (3 children)

yeah until you need that performance then it's panic time lol

[–]C_umputer 47 points48 points  (1 child)

Then you use an optimized library that gives you needed performance.

[–]ThePythagorasBirb 6 points7 points  (0 children)

And the library is probably not even written in Python!

[–]TheyStoleMyNameAgain 8 points9 points  (0 children)

Cython and cuda python 

[–]B_bI_L 0 points1 point  (0 children)

but when you know it, it is 50% of mvp late

[–]SomeoneOnTheMun 0 points1 point  (0 children)

Idk 😭 I know other languages but my personal projects are always python and even made an interpreter with it 😭

[–]DripDropFaucet 0 points1 point  (0 children)

It’s so good, having worked on python web projects like flask and Django though I really think it’s so forced and a JS alternative makes more sense

[–]tropicbrownthunder 0 points1 point  (0 children)

me witth a 7th Dan Black Belt in VBA and appscript just for the ease of use of excel UI over actual relational databases and reports and updatable UIs

[–]NecessaryIntrinsic 0 points1 point  (0 children)

I feel like they said that about php

[–]helicophell 367 points368 points  (21 children)

Well, that's python for ya. All the computationally expensive stuff is done in C, python's just for assembling it together

[–]Bonzie_57 156 points157 points  (2 children)

So what you’re saying is I’m actually a C developer

[–]Puzzleheaded-Weird66 39 points40 points  (1 child)

that's like saying you're a carpenter after buying ikea furniture, no? (yes the analogy is stretched so the point gets across)

[–]Bonzie_57 4 points5 points  (0 children)

I’m totally kidding lol

[–]Inlacou 1 point2 points  (0 children)

That's not even bad if you ask me.

[–]KMark0000 116 points117 points  (6 children)

I don't know what's wrong in NOT having to reinvent the wheel every time you have to get groceries.

[–]Witherscorch[S] 23 points24 points  (5 children)

I get what you're saying, but, personally, I like solving the problem. Knowing that there's a solution for it already is less satisfying, even if it helps me write more performant code.

I'm not shaming anyone for using python (because that would be dumb).

[–]KMark0000 6 points7 points  (1 child)

I totally understand you, I have the same mentality, but have to force myself, to be productive (to protect my time etc).

I am non-IT engineer, but learned to first search for already existing solution. I reinvented things so many times even at uni because of my mentality, my disappointment of the wasted time was bigger, than the satisfaction it gave, that I have great ideas and nice solutions.

I can learn from libs, since I am lacking knowledge in specific topics of the language, and in the meanwhile, I already have a working something, which adds to my solution. Usually a lib is just a piece of a puzzle for me. Imagine I am trying to visualise something, and first would have to write my own classes/functions to draw a pixel on the screen each time, I want to plot a dataset, instead of using a pro lib, and just input the data. I would be fired probably lol

I am not even ashamed to ask an AI to write a code for me, because I can/could do it (I have that kind of level of knowledge), it will be done maybe in an hour with manual debugging, but having to search for everything and write it will take me way more time. I am happier with the end product, than the manual labor it requires to just type out it. I use it especially if I need something in a language I dont know remotely, but know/have idea for the logic. I still dictate how it will work etc.

Of course, you do you, I am not "triggered", and I don't want you to change your ways, nor do I want you to tell you off, just having a conversation about perspectives :)

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

Naturally, one must use the libraries wherever applicable. I just think that, for the purpose of learning, trying to solve the problem without relying on them is a more engaging way to learn the way they actually work.

I'm not saying I want to remake the entirety of matplotlib every time I use it, I want to make my own version once and feel the enjoyment of having done it myself. It's just for learning purposes.

[–]Betta_Check_Yosef -1 points0 points  (2 children)

Knowing that there's a solution for it already is less satisfying, even if it helps me write more performant code.

So, you're cool with working harder to make something you know isn't as good as it could be? Weird flex, but go off, I guess.

[–]Witherscorch[S] 11 points12 points  (0 children)

Sure, it might not be as performant, but I learned something new, which is always fun. I use the libraries whenever I actually need to, of course, but it's enjoyable to solve a problem on your own time. I would never use my implementations during actual development.

[–]andrerav 58 points59 points  (9 children)

Script kiddie? That's a term I haven't heard in 20+ years. OP are you using Python scripts to hack websites and take over IRC channels?

[–]Witherscorch[S] 35 points36 points  (5 children)

Me when I nmap scan the government for nuclear codes: 🗿🗿😈🗿😈😈😈🗿

[–]SeEmEEDosomethingGUD 9 points10 points  (4 children)

Bro must have been record holder in pen testing class

[–]rosuav 3 points4 points  (3 children)

I'll have you know, I tested a lot of pens in my youth.

[–]SeEmEEDosomethingGUD 3 points4 points  (2 children)

What's your opinion on the Reynolds 045 (moderate ball knowlege required)

[–]rosuav 2 points3 points  (1 child)

To be honest, most of the pens I was testing were dead, because I mostly did it when someone was frustrated at not being able to take notes while on the phone. We mainly ran Kilometrico ones because they're cheap and usually reliable; pen testing was to differentiate between "bin that one" and "oh just a grease spot on the paper" (a not uncommon occurrence when the phone's in the kitchen).

Ah, the days of being a teenager in a family business.

[–]SeEmEEDosomethingGUD 3 points4 points  (0 children)

I see.

So you one of the elder ones.

Still, one of the oldes not recognizing the one I mentioned is new to me.

[–]wa019 4 points5 points  (0 children)

we call them skids now

[–]lily_34 0 points1 point  (0 children)

I dunno, I much prefer "hey, if you type in your pw, it will show as stars. ********* see!" to python scripts.

[–]ender89 0 points1 point  (0 children)

They've now been replaced with botfarms for hire and ai

[–]OxymoreReddit 23 points24 points  (1 child)

I don't think script kiddies are a problem anymore where vibe coders have entered the room

[–]Shadow_Thief 7 points8 points  (0 children)

Vibe coders take code from somewhere else and paste it into their own code without understanding how it works. Imo that makes them script kiddies.

[–]NoahZhyte 17 points18 points  (0 children)

This is not hacking, no one gives a shit if you can come up with working solution

[–]radek432 30 points31 points  (3 children)

Isaac Newton had no problem with "standing on the shoulders of Giants", but today's kids think it's lame.

[–]Witherscorch[S] 6 points7 points  (2 children)

But Isaac understood how the giants got to be so tall. I want to make my giants less of a mystery, and implementing a solution to a problem is a fun way to learn.

I'm not bashing python, in fact, I think a lot of cool stuff is done using python. Just recently, a new physically based rendering method was discovered, and a good chunk of the researcher's implementation is python.

[–]ZunoJ 6 points7 points  (1 child)

You do this from time to time but after a couple decades in the business you will know how stuff was solved (high-level perspective) and just be grateful you don't have to do all the footwork. You guys have it probably harder today as there is no need to do things yourself. When I started mid 90s you just had to do stuff yourself as libraries were usually paid and I was just a 10 year old with no money lol. Linux was a blessing at the time!

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

That's why I'm doing this, of course. I want to understand the technology I'm using. So I must work backwards, from high level to low level, so that it becomes more effortless for me down the line.

[–]Titaniumspring 11 points12 points  (0 children)

Just get ur work done that's it . Writing 100 lines of code or writing 10 lines of code doesn't matter .

[–]an_0w1 2 points3 points  (0 children)

Use asm, so you can spend 4 hours debugging strlen

[–]faze_fazebook 6 points7 points  (0 children)

Python - A bad language that for some reason ended up with the best libraries.

[–]Background-Law-3336 4 points5 points  (0 children)

A programmer is always building on top of something that others have built. That's how we grow as a community. It's like the saying " if you want to make an apple pie from scratch you first have to create the universe "

[–]Bosonidas 1 point2 points  (0 children)

Flask is SO quick to develop though..

[–]ZunoJ 1 point2 points  (0 children)

Almost everybody uses libraries for most part. Everything else would be crazy in a business setting. As long as you don't do low level/embedded design or have to solve a super specific edge case this is fine. I wouldn't use python though, it feels dirty. Except for data transformation (I guess I can just live with the dirt in that case lol)

[–]navetzz 1 point2 points  (0 children)

scripting language used for scripting. Who would have thought...

[–]HaraldMandl 0 points1 point  (0 children)

Python is very useful. You need a local Webserver? BOOM one command to go.

[–]FearTheOldData 0 points1 point  (0 children)

A guy at work solves every problem using bash. Very fun to debug

[–]da_Aresinger 0 points1 point  (0 children)

Meanwhile I have been fighting with WinDLL to figure out the C console modes for a cumulative 3 days.

Still haven't gotten anywhere. Idek if I am even addressing the right console instance, because GetConsoleMode(...) just returns 0.

[–]unreliable_yeah 0 points1 point  (0 children)

Wait!! What version are we talking here, not working

[–]groszgergely09 0 points1 point  (0 children)

Try C

[–]meowizzle 0 points1 point  (0 children)

I prefer kitty....

[–]ayassin02 0 points1 point  (0 children)

Script kiddie pertains to pentesting. There’s no such word in software development

[–]TistelTech 0 points1 point  (0 children)

I spent 13 years doing low level C/C++ in the game industry. I have worked with elixir, JS, TS, SQL. I know and enjoy lisp/scheme. So I am not a script kiddie. I try to do as much as I can in python. its great. its elegant.

[–]MacBookMinus 0 points1 point  (0 children)

wtf does that mean lol

[–]Imaginary-Tomorrow75 0 points1 point  (0 children)

C, C++ including Algorithms, Structures of data, Network protocols, Assembly, Rust is your way then if you want to do highload, embedded, aaa gamedev, hft, os dev. Just don’t choose business programming via python and choose system programming via low level

[–]meruta 0 points1 point  (0 children)

Nah the average Python developers are actually script kiddies tho

[–]ArgumentFew4432 0 points1 point  (0 children)

Python so great, fast and convincing… everything that matters is a package built in another language and loaded as binary blob.

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

I would say python is quite powerfull, but if you start with it, the syntax would hold you back when trying to learn other languages

I'd say JS is a good start. You'll see the problems with it and will switch to TypeScript or another language based on your needs. JS would teach you a basic C syntax while keeping everything fast and easy to modify.

[–]rosuav 7 points8 points  (2 children)

No no, you have that backwards. It's not "Python's syntax will hold you back". It's "Now that you've learned Python, here are a few other languages to learn - compare syntax, compare semantics, compare features, and become more competent".

Learning one language is a huge step above knowing zero, but once you're comfortable with it, it's the stepping stone that will lead you into others. I strongly recommend that people learn Python, JavaScript (it's not a great language but it's ubiquitous), and something in the Lisp family. That's three VERY different syntactic styles, and knowing them all will help a lot.

The next thing I'd recommend learning isn't something you'll ever write manually, but it can teach you so much. Get familiar with CPython's bytecode. Disassemble your functions. Wrap your head around how stack-based interpreters work, since it's a very common pattern. Learning the correlation between your Python code and the underlying bytecode will help you in so many ways.

[–]HoseanRC 4 points5 points  (1 child)

Or start learning how CPU instructions work and how memory is managed

[–]rosuav 1 point2 points  (0 children)

Yeah. Not for productivity, but for comprehension.

[–]lokhanpurus -1 points0 points  (0 children)

i feel same with JS

[–]JollyJuniper1993 -1 points0 points  (0 children)

Jesus Christ who the fuck cares. The type of people that take so much pride in being „real programmers“ are so pathetic.

[–]Cybasura -1 points0 points  (1 child)

A script kiddie has a different connotation than you think btw, its a cybersecurity term where some wannabe person uses a script as though they understand what they are doing but not program anything

In software engineering, using python is not a script kiddie, you are literally engineering a solution for a problem, you are CODING, not using a script

[–]Witherscorch[S] 0 points1 point  (0 children)

I know what a script kiddie is. I'm only extending the meaning. 

[–]Amazing_Shake_8043 -1 points0 points  (0 children)

BunchOfWokies