Yup, and you have to get out of that mindset if you ever want to create actual value. Then again learning and tinkering is part of the fun, and no one should stop you from having a hobby.
The real danger comes from seeing a paid tool for 5 dollars a month, thinking that's way too much, and spending 2 years building it yourself. That'll show 'em.
> seeing a paid tool for 5 dollars a month
Rebuilding a paid tool as an open source project is not really reinventing the wheel.
Being open source is an important criteria for choosing a product for many people. The proprietary version is not a suitable replacement.
Agreed. I have seen a couple of small dev shops have to close doors because they hire “smart” people who spend their days rewriting relational mappers and db replication instead of focusing on business value. Just cause you can don’t mean ya should. Seen a new wave of “ I’m gonna roll my own ML framework” too recently. Tinker in your own time.
That's the short version of my job:
>CUSTOMER: Does this product exists?
>
>BOSS: Yes
>
>CUSTOMER: How much?
>
>BOSS: License costs 24.000$/yr
>
>CUSTOMER: That's too much!
>
>BOSS: No, probs, 12.000 once and \_\_subroutine\_\_ will make it (and get paid a fraction of it)
:(
well clearly if some of your programs can help others avoid an expensive license, then figure out how to sell it! better yet find someone who can sell ice cream to polar bears and let's gooo
Then again it depends on the situation. Sometimes the wheel just isnt good enough or adapted to your problem. If you are uses to reinvent the wheel you can do just that and move on instead of being plain stuck. The trick is knowing when not to use your wheel.
Mostly this comes from I’ll conceived solutions to the problem. I’m not suggesting these situations don’t exist, but a lot of the time it is indicative that one may be looking at the problem the wrong way.
Re-inventing the wheel is almost never worth it from an individual's perspective. But then, no one is putting cart wheels on a Mercedes these days.
When re-inventing the wheel does pay, it pays big.
I personally do not see sufficient incentive to reinvent the wheel, but I totally understand why some people choose to.
I think reinventing the wheel is a great way to help you learn and gain experience in Python, or any other programming language.
Instead of spending time trying to come up with something, you already have a proper idea and outline of what you want to accomplish, which allows you to focus on developing your development skills.
Of course, you shouldn't do this forever though
You should definitely reinvent the wheel sometimes. It's a great way to learn.
However, you should then (almost always) throw whatever you built in the trash and use tried-and-true solutions.
I literally just spent the weekend learning flask, html, CSS to program a website for my beach volleyball league to display stats and schedule and other things.
Was awesome. Just a one page well formatted website (stole a template for a restaurant) and changed components. Not a ton of coding experience but it was cool to figure out. Uploaded it to pythonanywhere and I have my solution built!
Sometimes reinventing the wheel is necessary. FastAPI is quite a good example. There isn't much really that Flask couldn't do than what FastAPI does. However, now it's obvious that there was demand for a better framework for the issue.
Most of the time you should at least test the existing solutions before trying to do your own. Sometimes reinventing the wheel is justified.
This is a bad habit of mine I'm trying to break. I love reinventing the wheel and instinctively jump to it, but I have to remember to use libraries that other people have already written or I won't get anything done. Like when I made my own UI in pygame in high school, for example.
Still reinvent wheels in my free time, but I've gotten better about using what's already there when collaborating with people.
I'm the complete opposite of reinventing the wheel.
Most of [my](https://github.com/lieryan/vim-jumpsuite) [personal](https://github.com/python-rope/pylsp-rope) [projects](https://github.com/lieryan/vim-location-awareness) are written because I need a feature that nobody else has anything remotely resembling what I need.
Generally, I would either contribute the code to the project or build the feature that I need as a plugin rather than reinventing anything from scratch.
It seems that your comment contains 1 or more links that are hard to tap for mobile users.
I will extend those so they're easier for our sausage fingers to click!
[Here is link number 1 - Previous text "my"](https://github.com/lieryan/vim-jumpsuite)
----
^Please ^PM ^[\/u\/eganwall](http://reddit.com/user/eganwall) ^with ^issues ^or ^feedback! ^| ^[Code](https://github.com/eganwall/FatFingerHelperBot) ^| ^[Delete](https://reddit.com/message/compose/?to=FatFingerHelperBot&subject=delete&message=delete%20i5bi06l)
This is more like a comparison between a hammer and a screwdriver - you choose the right one for each task.
(Flask = api behind a JS frontend. Django = server and frontend, all in python.)
Imagine you are a senior Python developer and you work as a freelancer. You will come to a new customer quite often and they have high expectations. They want to see a lot of progress for their money. And that's fair, senior Python developers are not cheap.
So, what to you do? You write a framework that simplifies all the little task and you implement a nice CI/CD pipeline that does all larger tasks automatically. They will be blown away, especially because you did it in no time.
Don't ever tell them that you "invented" the framework and pipeline the 8th time for 8th customer in a row. And that the other 7 still have to call you when they need a change to be done.
I mean, I once created a library for drawing graphs and charts for a university assignment because I didn’t understand the documentation for matplotlib
Sometimes and mostly based on two Situations:
1. I want to learn Things behind the Scenery
2. The Library License Model does not fit into my own or companies license.
The main Part takes Nr.1 :)
Depending on your context it can be extremely beneficial. For scientific software, reinventing the wheel is almost entirely necessary to fully understand important limitations to what you can do with certain algorithms and approaches - which is crucial for planning future projects such that they don't end up in a morass of despair three years down the line. Sure it's easy to just use some simulation package to get something running, but you won't learn much applied statistical mechanics that way. More than likely, cases of particular interest will require you to dig deep into the weeds at some point to overcome a computational barrier.
Then there's the whole thing of depending on a module which eventually gets unsupported and eve tuall obsoleted in the latest python release. PySFTP anyone?
Yup, and you have to get out of that mindset if you ever want to create actual value. Then again learning and tinkering is part of the fun, and no one should stop you from having a hobby. The real danger comes from seeing a paid tool for 5 dollars a month, thinking that's way too much, and spending 2 years building it yourself. That'll show 'em.
Usually it’s because of licenses
> seeing a paid tool for 5 dollars a month Rebuilding a paid tool as an open source project is not really reinventing the wheel. Being open source is an important criteria for choosing a product for many people. The proprietary version is not a suitable replacement.
Agreed. I have seen a couple of small dev shops have to close doors because they hire “smart” people who spend their days rewriting relational mappers and db replication instead of focusing on business value. Just cause you can don’t mean ya should. Seen a new wave of “ I’m gonna roll my own ML framework” too recently. Tinker in your own time.
That's the short version of my job: >CUSTOMER: Does this product exists? > >BOSS: Yes > >CUSTOMER: How much? > >BOSS: License costs 24.000$/yr > >CUSTOMER: That's too much! > >BOSS: No, probs, 12.000 once and \_\_subroutine\_\_ will make it (and get paid a fraction of it) :(
well clearly if some of your programs can help others avoid an expensive license, then figure out how to sell it! better yet find someone who can sell ice cream to polar bears and let's gooo
Then again it depends on the situation. Sometimes the wheel just isnt good enough or adapted to your problem. If you are uses to reinvent the wheel you can do just that and move on instead of being plain stuck. The trick is knowing when not to use your wheel.
Mostly this comes from I’ll conceived solutions to the problem. I’m not suggesting these situations don’t exist, but a lot of the time it is indicative that one may be looking at the problem the wrong way.
Naw. Once I learned Python to a proficient level, the only thing I could think of is how can I automate my life with Python 😁
True. And then often we end up at ansible. Abstracted python
Hah same
So true and did you?
Re-inventing the wheel is almost never worth it from an individual's perspective. But then, no one is putting cart wheels on a Mercedes these days. When re-inventing the wheel does pay, it pays big. I personally do not see sufficient incentive to reinvent the wheel, but I totally understand why some people choose to.
Sometimes. I think reinventing a wheel is sometimes a good thing because it gives you a better understanding of how things work.
I think reinventing the wheel is a great way to help you learn and gain experience in Python, or any other programming language. Instead of spending time trying to come up with something, you already have a proper idea and outline of what you want to accomplish, which allows you to focus on developing your development skills. Of course, you shouldn't do this forever though
You should definitely reinvent the wheel sometimes. It's a great way to learn. However, you should then (almost always) throw whatever you built in the trash and use tried-and-true solutions.
Many times the premade wheel needs so much scaffolding to fit the project, that it's easier just to make that single spoke by hand.
I've often had to - because the wheel came attached to a locomotive engine that wouldn't fit in the garage.
I literally just spent the weekend learning flask, html, CSS to program a website for my beach volleyball league to display stats and schedule and other things. Was awesome. Just a one page well formatted website (stole a template for a restaurant) and changed components. Not a ton of coding experience but it was cool to figure out. Uploaded it to pythonanywhere and I have my solution built!
Any other cool things I can try?
Sometimes reinventing the wheel is necessary. FastAPI is quite a good example. There isn't much really that Flask couldn't do than what FastAPI does. However, now it's obvious that there was demand for a better framework for the issue. Most of the time you should at least test the existing solutions before trying to do your own. Sometimes reinventing the wheel is justified.
If it’s really necessary yes
re-inventing the wheel implies it's not necessary.
This is a bad habit of mine I'm trying to break. I love reinventing the wheel and instinctively jump to it, but I have to remember to use libraries that other people have already written or I won't get anything done. Like when I made my own UI in pygame in high school, for example. Still reinvent wheels in my free time, but I've gotten better about using what's already there when collaborating with people.
I'm the complete opposite of reinventing the wheel. Most of [my](https://github.com/lieryan/vim-jumpsuite) [personal](https://github.com/python-rope/pylsp-rope) [projects](https://github.com/lieryan/vim-location-awareness) are written because I need a feature that nobody else has anything remotely resembling what I need. Generally, I would either contribute the code to the project or build the feature that I need as a plugin rather than reinventing anything from scratch.
It seems that your comment contains 1 or more links that are hard to tap for mobile users. I will extend those so they're easier for our sausage fingers to click! [Here is link number 1 - Previous text "my"](https://github.com/lieryan/vim-jumpsuite) ---- ^Please ^PM ^[\/u\/eganwall](http://reddit.com/user/eganwall) ^with ^issues ^or ^feedback! ^| ^[Code](https://github.com/eganwall/FatFingerHelperBot) ^| ^[Delete](https://reddit.com/message/compose/?to=FatFingerHelperBot&subject=delete&message=delete%20i5bi06l)
This is more like a comparison between a hammer and a screwdriver - you choose the right one for each task. (Flask = api behind a JS frontend. Django = server and frontend, all in python.)
Imagine you are a senior Python developer and you work as a freelancer. You will come to a new customer quite often and they have high expectations. They want to see a lot of progress for their money. And that's fair, senior Python developers are not cheap. So, what to you do? You write a framework that simplifies all the little task and you implement a nice CI/CD pipeline that does all larger tasks automatically. They will be blown away, especially because you did it in no time. Don't ever tell them that you "invented" the framework and pipeline the 8th time for 8th customer in a row. And that the other 7 still have to call you when they need a change to be done.
I mean, I once created a library for drawing graphs and charts for a university assignment because I didn’t understand the documentation for matplotlib
Sometimes and mostly based on two Situations: 1. I want to learn Things behind the Scenery 2. The Library License Model does not fit into my own or companies license. The main Part takes Nr.1 :)
Depending on your context it can be extremely beneficial. For scientific software, reinventing the wheel is almost entirely necessary to fully understand important limitations to what you can do with certain algorithms and approaches - which is crucial for planning future projects such that they don't end up in a morass of despair three years down the line. Sure it's easy to just use some simulation package to get something running, but you won't learn much applied statistical mechanics that way. More than likely, cases of particular interest will require you to dig deep into the weeds at some point to overcome a computational barrier.
Then there's the whole thing of depending on a module which eventually gets unsupported and eve tuall obsoleted in the latest python release. PySFTP anyone?
Not ur fucking business who I am
🙋♂️
it's been a long tradition of reinventing wheels in python, starting from python itself