4 ms·
An old colleague tried to convince me that I shouldn't write my own job queue last night because "it's all handled in the cloud". It's things like this that mak
by arbol 6y ago
An old colleague tried to convince me that I shouldn't write my own job queue last night because "it's all handled in the cloud". It's things like this that make me a better programmer whilst also allowing me to run software that does exactly what I want.
- blandflakes 6y agoI think implementing patterns that are "solved" in SAAS or FOSS is a really awesome way to learn. I grow tired, however, of convincing teammates that no, I don't want to support their homegrown HTML templating library in production, having to worry about bugs or security vulnerabilities. Editing to really affirm that I agree especially with personal projects. I have a lot of projects where pieces I want to build approximate some percentage of something like AWS Lambda, but I want to do a custom version because it's more fun and will make the project easier, since I'm not planning for anybody else to ever maintain it.
- commandlinefan 6y ago> I don't want to support their homegrown HTML templating library in production On the flip side, that's how projects like Spring, Spark, jQuery, Angular, React, Kafka, Cassandra and Mongo came to be: somebody did something that somebody else was always doing, but a little bit better, and ended up making a career out of it.
- blandflakes 6y agoSure! And I think the degree to which you have the "room" to do that in your job depends on the company. I'm not here to spend my novelty budget on a routing framework that can't handle optional parameters.
- colejohnson66 6y agoI see this on HN a lot. The “what the purpose of writing this project? X and Y would suit your needs just fine.” The problem is, you can’t learn unless you do. So even though X and Y may have suited their requirements, they can’t truly learn how X and Y work unless they write their own version.
- knicholes 6y agoSo maybe write your own version to see how it works, then use the already existing, time and battle tested solution.
- sanjay_316 6y agoAnd in exceptional cases, your similar program will be just different enough in a few key ways that it will open up new use cases. Redis is just a hashmap (and LRU). A load balancer is also just a hashmap (and routing). There are plenty of interesting questions about which particular hashmaps to use in each case.
- sumtechguy 6y agoAlso dragging in a second library also means you are pulling in their issues too. Sometimes a quick little function is all you need. Sometimes though it is so wildly better than what you have it is worth doing. It is about time and cost. One project I wrote a whole subsystem to do a particular thing. On a revision of the OS they had the same thing but way better. Tossed out every line of code I had written and used that. But without writing that thing I would not have know if it was worth it or not.
- sanjay_316 6y ago> One project I wrote a whole subsystem to do a particular thing. On a revision of the OS they had the same thing but way better. Tossed out every line of code I had written and used that. But without writing that thing I would not have know if it was worth it or not. This sounds like it could be a good story to learn from if you wrote it out.
- sumtechguy 6y agoNot very. It was 2 custom controls. The OS came out with built in ones that did the same thing but fit the tooling better and had a few extra things my code didnt. Great learning exp on writing custom controls though! It brought forth my 3 rules of windows programming. Always read the docs (then re-read them). If MS has a bit of GUI that does something there is usually a control in there to do it. For every function in windows there is usually an 'anti' function, they are to be called FILO.
- intrepidhero 6y agoPerilous to us all are the devices of an art deeper than we possess ourselves. - Gandalf, TTT, JRR Tolkien.
- spaetzleesser 6y agoTotally agree. Implementing something yourself also helps you better understand how established similar systems work. It also takes out the “magic” from things. For example when you look at a compiler first, it seems incredibly complex. But once you write your own simple compiler you can quickly see that a compiler consists of components that can be understood .
- trustfundbaby 6y ago"We have to reinvent the wheel every once in a while, not because we need a lot of wheels; but because we need a lot of inventors." - Bruce Joyce