I'm still not totally convinced that "software engineer" is even a thing, frankly.
I'm still not totally convinced that "software engineer" is even a thing, frankly.
It's certainly not people who are lost in details like string matching or how ACID is implemented in distributed databases.
Of course you need all these things in order for the search engine to work – but if you write them yourself, even if you think about them excessively, you will never finish.
Software engineering is knowing that you don't need to know everything, you only need to know where to find everything. "Programming" is an important part of it, but far from the only one.
A really good programmer who is free from the tyranny of software “engineering”.
It’s not all progress.
Literally by stitching together people you’ve listed here and making them work together:
> It's certainly not people who are lost in details like string matching or how ACID is implemented in distributed databases.
> Of course you need all these things in order for the search engine to work – but if you write them yourself, even if you think about them excessively, you will never finish.
Being able to write something from scratch is not the same as always writing from scratch. Let me turn this around. Who would you trust with writing search engine, a software engineer who worked on and wrote search engine from scratch or someone who only theoretically knows about it?
> Software engineering is knowing that you don't need to know everything, you only need to know where to find everything. "Programming" is an important part of it, but far from the only one.
I hear this excuse more and more when it comes to threads like this. You don’t need to defend your life position, it’s okay to not know everything.
i've met a good fraction of the first 128 google employees, and this could not be farther from the truth:
> It's certainly not people who are lost in details like string matching or how ACID is implemented in distributed databases.
the people who thought those things were unimportant details were the ones who tried to compete against google and failed, like lycos, inktomi, and pets.com
like, check out the wikipedia article on udi manber, who is best known for spending 15 years 'lost' in string matching:
> In 2002, he joined Amazon.com, where he became "chief algorithms officer" and a vice president. (...) In 2004, Google promoted sponsored listings for its own recruiting whenever someone searched for his name on Google's search engine. In 2006, he was hired by Google as one of their vice presidents of engineering. (...) In October 2010, he was responsible for all the search products at Google.
the fact that in https://news.ycombinator.com/item?id=38769506 you claimed that orchestra conductors don't need to play any instrument further calls your credibility into question
And sure, use of the word "engineer" will cause angst among some - because it used to have a precise meaning which has been diluted (and in the case of software, ignored.)
Indeed the list of projects runs the gamut of where a programmer might go in life. They might do user UI, or games, or work on an OS or compiler. More likely they'll work at some random company doing databases and reports. Or they'll be Web focused doing lots of JavaScript. Or they'll be deeply involved in the field of Advertising (Advertising Engineer anyone?)
Of course wherever you end up, you can still have some fun. And if you're just starting out then it can help you understand your desires, and limitations.
So don't worry too much about the "engineer" word. It's pretty irrelevant. Even the title of the thread is "programmer" not "engineer".
But these points raised by GP... are basically self-evident.
> - Deciding what to write yourself and what to take from a library
> - Identifying high-quality libraries and frameworks that meet your project needs
> - Deciding where optimization is worth the effort and where it is not
> - Writing code that will still be readable to you (and others) a few years from now
> - Thinking about the project as a large-scale, complex system with software and non-software dependencies
... But since they don't have immediate effect (along the tune of "look I made this shiny thing myself in a weekend!"), it's hard to brag about it and perhaps even hard to establish causality that your skills in the areas above contributed to the software/business' success. But you can always brag about how you implemented a Fibonacci heap or something and made your heap operations 0.2ms slower.