Live data from Hacker News

I'm a good engineer but I suck at building stuff

lionelbarrow.com

41–50 of 128 posts

Re: I'm a good engineer but I suck at building stuff

#41

Here's a priority list that you should typically follow for making anything. 1. Make it work. 2. Make it not break. 3. Make it fast. That's it really. Until the performance of something is blocking what you need to do somewhere else leave it the hell alone.

Per (as far as I can tell) the original: http://c2.com/cgi/wiki?MakeItWorkMakeItRightMakeItFast

1. Make it work.

2. Make it right.

3. Make it fast.

Re: I'm a good engineer but I suck at building stuff

#42
post #3

> When I try to build something new, I find myself instantly criticizing my technique, to the point of paralysis. This function is hard to test; this object's dependencies need to be injected rather than initialized internally; that module needs an integration test; and so on and so forth. Even when writing spike or proof of concept code, I find myself revisiting the same lines over and over again, looking for the be…

I have a simple mantra that helps me remember this. "Its clay, not stone".

More like tar...

Re: I'm a good engineer but I suck at building stuff

#44
post #22

Earlier quoted context omitted.

Depends on your industry and where you work obviously. But I have a strict "that will do" policy. If it looks like it might work, that will do. It won't' be well engineered, it will be buggy. But the project will be completed and released. If it makes some sales and looks like it has some traction, then I go back and visit the many (many) //todo - clean this up and refactor everything out. Usually after a while of ad…

I agree with this philosophy as well. If is a project or program that will be worked on more as time progresses, typically it refactors itself after the programmer has a better grasp of the big picture. Often the bigger picture can only be grasped after there is some momentum with the project. I'd say this works 90% of the time, where the other 10% needs more upfront design and research done before any real work is s…

It's rapid prototyping. It might just happen that the prototype is good enough to sell, but once you have a basis, comparisons can begin. If the prototype doesn't have to act as the real product, just a skeleton, it's not so hard to change the "bones" if something isn't working properly.

If the prototype is quickly made, it could even count as part of that upfront design process.

Re: I'm a good engineer but I suck at building stuff

#45
post #38
post #10

Earlier quoted context omitted.

I've been just like this - without the context of a problem to solve, theoretical things just don't click for me. Regex was a mystery and impossible to memorize until I had to write a matcher for a class, and I haven't forgotten since. Similarly, I never get stuck at work, because everything I learn has a problem behind it, but as soon as I go home and try to teach myself something for fun I derp out immediately.

Why not integrate new things to learn with a fun side project?

coming up with side projects is difficult.

Re: I'm a good engineer but I suck at building stuff

#46
post #3

> When I try to build something new, I find myself instantly criticizing my technique, to the point of paralysis. This function is hard to test; this object's dependencies need to be injected rather than initialized internally; that module needs an integration test; and so on and so forth. Even when writing spike or proof of concept code, I find myself revisiting the same lines over and over again, looking for the be…

The thing that helped me, when I felt the indecision paralysis come on, is to just do something and accept that it may be wrong. You often don't know the best decision in the first place because you lack experience. Doing it the right way by accident, or making the mistake of picking the wrong way helps get you that experience. Be deliberate about always doing something, and over time the paralysis will get less and less as you gain more experience.

Well-stated -- and (at the risk of over-complimenting), very close to the absolute zen of self-driven learning.

Re: I'm a good engineer but I suck at building stuff

#49

Here's a priority list that you should typically follow for making anything. 1. Make it work. 2. Make it not break. 3. Make it fast. That's it really. Until the performance of something is blocking what you need to do somewhere else leave it the hell alone.

Make it USABLE. USABLE. Study its USABILITY.

The world doesn't need more crummy unusable software.

Re: I'm a good engineer but I suck at building stuff

#50
post #22

Earlier quoted context omitted.

I agree with this philosophy as well. If is a project or program that will be worked on more as time progresses, typically it refactors itself after the programmer has a better grasp of the big picture. Often the bigger picture can only be grasped after there is some momentum with the project. I'd say this works 90% of the time, where the other 10% needs more upfront design and research done before any real work is s…

It's rapid prototyping. It might just happen that the prototype is good enough to sell, but once you have a basis, comparisons can begin. If the prototype doesn't have to act as the real product, just a skeleton, it's not so hard to change the "bones" if something isn't working properly. If the prototype is quickly made, it could even count as part of that upfront design process.

I like my people to do more than prototype for this kind of work. It's probably a semantics argument, but we prototype as part of design and intend for it to be trashed/rewritten, whereas what I was speaking to above is real development work that will be used, definitely not polished but 'works' enough to keep moving forward.
Post reply on HN