31 ms·
The whole point of a side project is to over-engineer it! The thought of holding myself to deadlines and driving myself to "ship" is totally antithetical to th
by czep 9y ago
The whole point of a side project is to over-engineer it! The thought of holding myself to deadlines and driving myself to "ship" is totally antithetical to the entire purpose of a hobby project. It's a welcome relief from the 9-to-5 constant necessity to cut corners and finish things without ever properly understanding them because there's no time.
For my side projects, I actually want to go down rabbit holes. I will try the same thing 7 different ways and benchmark the hell out of them. I'll read all the documentation and every blog post I can find. Learn a new language just to see if its features make things ever so slightly easier. Learn a new framework, write a new framework, throw it away and write a new one.
The point isn't to ship code, it's to learn. Honestly I don't care if it ever ships. And even when I do release one, I don't care if nobody uses it except me.
- andmarios 9y agoTotally agree. The author seems to write about a specific subset of side projects: SaaS with a possibility to commercialize.
- krptos 9y agoAgreed. Generally, at any point of time I have two types of side projects going on: #1. One that I am very clear about how to implement. One that I want build, ship and grab users as fast as I can. The real goal of the project is to get it out their in the market and make a tiny dent in the universe ;) #2. One that I am not very clear about what it's gonna become. This one I want to take it slow. Experiment. Play with tech that I haven't had a chance to flirt with. The goal is to enhance my toolbelt and learn new concepts/tech. Clearly keeping these projects separate helps me keep things clear. I quickly take decisions and move fast with one. I play and experiment a lot, no matter what the outcome is, with the other one.
- collinmanderson 9y agoExactly. Side projects are often the best time to try out new tech. It's low risk.
- deleted 9y ago[deleted]
- ben_jones 9y agoI think there's an important conflation of what a side project is to many people. If I mention to any of my non technical friends that I'm building an app their minds go to the movie "The Social Network" or to Steve Jobs or Bill Gates. They become excited and interested - up until the point where they realize it has nothing to do with Facebook or Tinder or Instagram. I have no doubt that this effects the side projects developers choose, or how they present them. Places like HN will always to a certain extent push people to "launch" and monetize their projects.
- johnfn 9y agoHN is made up of two groups in ever constant warfare, the yin and yang, as it were- the group who thinks that programming should be fun, experimental and enjoyable, and the group that thinks that programming is a means to the end of getting a product to market and nothing more. Whenever a post from one group (such as the article) comes out, a post from the other (such as OP) will quickly appear. And everyone loves it :) For what it's worth, I think that both perspectives are valid. It depends only on your goals.
- paulmd 9y agoYup, that's the yin and yang of programming. Programming is an art, but real artists ship.
- D_Guidi 9y agoYep, but artists don't ship every single portrait their made. Often, they experiment and they made practice
- greekyogurt21 9y agoThat's nonsensical, if I produce anything, I'm not a real anything-producer until I ship it? Kafka didn't want his work to be published, and if he didn't he wouldn't have been a real writer?
- iamnafets 9y agoThis is mostly off-topic, but being able to identify or root out the value mismatches between people in a discussion (as you've done) seems like an essential ingredient to productive discussion. I've noticed that people who can do this are disproportionately better at achieving their goals than those who can't, especially in engineering organizations. Exceptions of course for zealots and revolutionaries.
- superjisan 9y agoWow! This made me think deep thoughts man.
- 0xfaded 9y agoTotally agree. I had a problem which required finding the minimum distance between an ellipse and a point. If that had been my day job I would have settled for Newton's method and hacked around the regions of bad convergence. Instead I spent a week developing to be what I still believe to be a novel numerical method that is much more stable over all regions. Turns out I was wrong in some earlier maths, and the curve I wanted to find the distance to wasn't an ellipse. I was able to generalise the method for arbitrary curves, and now I've solved my problem! Relevant blog post: http://wet-robots.ghost.io/simple-method-for-distance-to-ellipse/ http://wet-robots.ghost.io/simple-method-for-distance-to-ell...
- scottlocklin 9y agoCan't you just use vector math for this?
- Scea91 9y agoYes, vector math with a bit of number math and symbol math should do the trick.
- delhanty 9y ago>I had a problem which required finding the minimum distance between an ellipse and a point. If that had been my day job ... OT: I had the problem as part of my 1st day job in 1990 on Parasolid. IIRC, there was more than one way of converting the problem into solving a quartic polynomial, which is solvable by radicals and so doesn't need Newton's method. If the point is inside the evolute of the ellipse then the quartic has four real solutions, which gives two local minima and two local maxima of distance. If the point is outside or on the evolute of the ellipse then the quartic has two real solutions, which gives one local minima and one local maxima of distance. Having said that, all methods using quartic polynomials could be unstable if the ellipse was pathological, for example very long and thin. Maybe that would be a time to revert to Newton's method.
- 0xfaded 9y agoThere are certainly multiple ways of doing it. I'm curious, do you remember if the specific quartic had a nice "trick" to the formulation? I played with it a little and couldn't see anything that would cancel in a nice way. I try to avoid using quadratic solutions in code because of numeric instability issues. Granted I never implemented the direct solution, but the number of opportunities for catastrophic cancellation gave me shivers.
- imhoguy 9y agoThere is also the third way -not to earn, not to necessarily learn, but simply to feel pleasure from making a software art and experimenting with things. When playing with my side project I feel like a painter adding new lines to the same canvas for years, like Gaudi spending his 15 years of life constantly redesigning Sagrada Familia. Well, I also learn stuff this way but often I get bored with them once challenge is completed ;)
- roberttod 9y ago> The point isn't to ship code, it's to learn. Honestly I don't care if it ever ships. And even when I do release one, I don't care if nobody uses it except me. The objectives for a side project are subjective, and so they should be. However I doubt most people truly have no intention to ever ship a side project or "don't care if nobody uses it", as admirable as that would be. I look back at my naive, recently graduated self and remember how I truly wanted to ship my side projects but loved to play around with new toys so much that I rarely shipped anything. I wish I had read a few more articles like this that would have helped me strike a balance between trying new things but still having enough experience in the stack I'm using to actually ship. In short, if you have a great idea you want to ship then deprioritise learning to stand the best chance of getting it out there!
- pcmaffey 9y agoI'm pretty sure you just made an objective subjective about subjective objectives.
- iteriteratedone 9y agoI offer a middle path , a bhudist interpertation of the problem. A project can be both fun/innovative and productive. You iterate on the fun , then you iterate on the productive. Youll never acheive completeness in both. Youll always suffer from needing to improve on aspect. Life is suffering , learn to accept and not let that reality stop you from creating. But some projects are more innovative or productive than others. Maybe you should abstract those projects away from eachother? You could put them in seperate classes. You could have the productive project use the innovative project.
- drdrey 9y agoThe premise of the story is that you want to deliver an MVP. Your premise is that side-projects are a nice way to geek out on tech. Both are valid, but you have to make sure what you're trying to accomplish before spending quality time with rabbit holes.
- anyfoo 9y agoYes! My last hobby project (I explicitly point out "hobby" project instead of "side revenue", but the article mentions "hobby" in the first sentence as well) was exactly that. Because it was a hobby project, I went completely mad on it. I built my own SPDIF interface, from scratch, using an FPGA. I let the hardware broadcast the sound frames over Ethernet. I also re-implemented Sony's proprietary consumer electronics control protocol, in hardware as well (a microcontroller could have easily done that instead). I greatly overengineered a circuit board, despite having a functional "test setup" already that did the job more than well enough. I wrote largely unnecessary client software, using language extensions I've never used before. The task at hand could have been solved with buying a cheap USB sound adapter from eBay and some manual work instead. Had I gone down that route, I probably would have completed the task in a fraction of the time that building this project took. But I had so much fun along the way and learned so much about electronics, FPGAs, SoCs, static typing for python etc., all because it was a project for me and nobody else. One big lesson I've learned, though, is that having an actual task you want to solve greatly helps you in finishing your project. I ran out of steam a number of times and the project fell to the wayside, but because the underlying task was not fulfilled yet, I always went back to it and quickly got completely focused on it again. Projects that I only did for playing around and learning most often got abandoned.
- turboladen 9y agoHaving done this a number of times with side projects, I can say I both agree and disagree. I've learned so much from delving down black holes: new languages, frameworks, design patterns, tools, etc.--stuff that stimulates my brain and helps me feel like I'm becoming a better engineer. ...but not realizing an idea in my head for a tool that I just want to use because I can't find it anywhere else is really annoying. I kinda hesitate to even start projects anymore because I fear I'll spend hours and hours, burn out, then end up with nothing I can use.
- drakonka 9y agoI agree; I've been working on my mess of a side project for years now. I let the scope grow tremendously, and started over more times than I can remember. It's fun to experiment with potentially better or more interesting ways of doing something in a side project without worrying how much time it "wastes" in the long run.
- jacalata 9y ago> The point isn't to ship code, it's to learn. The main reason I've wanted other people to use the things I've made is to learn more about what I've built and how it could be better.
- bleair 9y agoAgree fully. Personal projects let you experiment, they let you try things out to see just how hard or easy building that set of features you were contemplating is. Now, if you personal project is intended as a gateway to your bootstrapping of commercial venture you _must_ make completely different choices in what/how you build (lean, and minimum useful/viable project) tec.