Ask HN: How do I get better at building stuff?
I'm 38 years old and have been doing software since I was 13. I've got a PhD in systems engineering and was in academia until a year ago, but I've only just realised I have always worked at the level where I got a codebase and improved it. I suck immensely at building stuff, I make it too complicated, I overthink, underengineer it. I know little about market fit, shipping product, etc and I feel like I've wasted 15 years not doing it. What's your recommendation on the shortest path to fixing this?
6 comments
To improve codebase is harder than building from scratch, as you have to get familiar with it first and understand what other developers have done with it. Now you have experience you have a feeling of how to make things ~right. But as other mentioned the way to get better is actually to build stuff. Take a project/idea you'd like to see alive and chunk it into small/workable pieces that on the first place make a set of "deliverables" that keeps you engaged in your progress (you probably didn't have to do this with previous codebase). Then start the action! I'd suggest to focus first on the list of "easy" deliverables so you can get started and get confident as you connect pieces together. In the process you'll see how the list of deliverables grows but also you have to know where to stop (as most people from Academia do not know), for this ask yourself what is the minimal set of features that your project need in order to work? once you have gone through this minimal set you build from there and you can even return to see what can be improved (just as you did with improving codebase).
To get a projects/ideas look at your own needs and think what you would like to be improved to make your life easier or make some tasks less annoying or ask other people, there are a lot of people with ideas around there but very few people willing to invest time to implement them
To get a projects/ideas look at your own needs and think what you would like to be improved to make your life easier or make some tasks less annoying or ask other people, there are a lot of people with ideas around there but very few people willing to invest time to implement them
Some interesting notes here from Matthias of HtDP/Little Schemer author fame, how to do software engineering http://www.ccs.neu.edu/home/matthias/4500-f18/lectures.html and it's basically what I do, top down design, then build bottom up, which at some point during this I'll trash the spec and re-do it as now I have a better idea from building what I actually need. Repeat until somewhat satisfied with what been built as you'll never be satisfied.
I also use most of the advice here from the talk 'Effective ML', like creating an interface for everything, making failure obvious, ect https://www.youtube.com/watch?v=4l16sYRpfL8
I also use most of the advice here from the talk 'Effective ML', like creating an interface for everything, making failure obvious, ect https://www.youtube.com/watch?v=4l16sYRpfL8
The best way to get better at building things is to build more things from scratch. You're last sentence though suggests that maybe you aren't that interested in getting better at building things and instead you want to get better at shipping product, finding market fit and doing the stuff usually associated with starting a business. If that's the case then building more things probably won't help you. Those skills aren't really engineering related. If you want to be better at shipping product for example, then the best way to do that is to get better at planning and to practice regularly deploying your product. Finding market fit requires a lot of talking to people in your target audience and shipping a product that meets those needs.
Essentially, if you want to get better at building things, then simply build more things. if you want to get better at everything else, then step away for your computer, talk to people, make connections, and put your work out there for others to see early and often.
Essentially, if you want to get better at building things, then simply build more things. if you want to get better at everything else, then step away for your computer, talk to people, make connections, and put your work out there for others to see early and often.
15 years?... Don't just build more things; build harder-to-build things give yourself a real challenge or three.
Over engineering is a problem I face too. I feel the best course of action is to simply write the MVP then fix problems like scaling, responsive design, flexibility, integration...etc. As they are required.
Build, don't prematurely optimise
Build, don't prematurely optimise
Build more things :)