Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

This reads like a vast oversimplification of types of Engineers and it paints certain design goals as "good" and "bad" .


Seems a pretty naïve description of Engineering types. Not only is there no data to back this up, but it makes it seem like hard divisions: I can anecdotally tell you about junior engineers who over-engineer in the wrong areas, or experienced engineers who `under-engineer` due to time|pressure|issue-critical requirements.

Nonsense.


Author here. Your point is valid. I do try to make this clear in this portion:

> However, an over-engineer can sometimes perform like an under-engineer or an engineer. Underperformance and overperformance could be influenced by a number of factors including work environment, context, intellectual horsepower, and even personal life.

I personally continue to write under-engineered and over-engineered code because there are so many internal and external factors that go into solving a problem.


I encourage you to keep writing, but it seems you need more research into developer patterns if you want to contribute to an already highly discussed topic.

For instance, last month this article[1] gave some seriously good insights to developer checkin frequency based on hard data. It provides a lot more value than the anecdotal, muddy definitions of over/under/engineer.

[1] - https://blog.gitprime.com/check-in-frequency-and-codebase-im...


I appreciate the feedback.

That's a very interesting article. However, it does seem suffer from the same issues Joel outlined, namely, the measure of attributes of a commit can be gamed and worked towards to achieve a "prolific" or "senior" status.

What the article you linked does reinforce is the value of iterative development. As opposed to doing large infrequent commits, doing small bits of work more frequently causes a success higher or "impact".

I would say that the article provides a data driven approach to justifying the effectiveness of good iterative planning. However, it doesn't address whether the commits of the "senior" engineer or the "prolific" engineer are of high quality.


The linked article actually has very little in the way of substance.


What is "impact"?


You'll have to forgive the author for not going into every variable in human beings. Perhaps the purpose of the post was to give people a scaffolding to start developing their own thoughts on the matter? Maybe you have a post you'd like to share that takes others to the next level of understanding that you have?


Almost everything in tech is a trade off. Usually between Fast, good & cheap.

In saying that there certainly was some accuracy in my career between under engineering early on, then over engineering later. Nowadays I usually get a good balance (though it often depends how the problem is communicated).


Actually, engineering is all about trade offs. Good engineering is to understand the trade you are making, and be consistent with it, and playing to its strengths.

For example, Linus Torvalds is an excellent engineer. So in the Linux kernel, he understood the trade off between modularity and simplicity/performance. That's why he did not choose microkernel architecture. He also understood that device drivers often require weird changes due to hardware evolution, that's why he decided against having too many abstraction layers in drivers (which would be better according to DRY rule).

Similarly, in Git, he decided not to use delta format to store changes. This takes more disk space (which is cheap today), but gives improved performance. Again, he understood the trade off, and concluded that performance is more valuable than disk space saved.


Modern git does store most blobs as deltas of other blobs, in the form of packfiles.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: