4 ms·
What kind of "performance problems" are we talking about here? Taking 2 minutes to write to a database because of some poorly indexed tables? Or trying to serve
by jessedhillon 16y ago
What kind of "performance problems" are we talking about here? Taking 2 minutes to write to a database because of some poorly indexed tables? Or trying to serve millions of requests in under 100ms each by intelligently leveraging a caching layer?
Maybe these days anyone can just take memcache and use it off the shelf. But the class of solution that memcache represents (or Cassandra, Thrift, node.js or XYZ...) is one that will not typically occur to a non-CS person. There's no basis for even understanding it.
As someone involved in hiring, I look for people who possess the capability to engineer solutions to my problems from scratch, starting with nothing but a solid basis in CS (even if they won't be doing that every day). I don't want just another tube connector (someone whose experience is primarily in leveraging APIs to write trivial but tedious code).
- btilly 16y agoWhat kind of "performance problems" are we talking about here? Taking 2 minutes to write to a database because of some poorly indexed tables? Or trying to serve millions of requests in under 100ms each by intelligently leveraging a caching layer? Both, and more. If you have a math background (as I do), it is not hard to pick up enough practical knowledge to be usefully dangerous. Here are a few examples. Let's turn on internal database tracing just for one web page so we can figure out why certain requests are slow. What traffic can we move to read-only copies to reduce load on the main database? We're going to do an Oracle 8 to Oracle 9 migration, let's track every single database request for a day, and then do them again later against a test database at full speed. At the start of each web page our database driver pings the connection to verify that it is still good. This functionality is essential for failover to work correctly, but due to an internal locking issue it is causing Oracle severe trouble under load. Fix the load issue without compromising our ability to fail over properly.
- jerf 16y ago"If you have a math background (as I do)" Ah, there's the resolution then. I would never argue that a strong math background is not easily converted into a very effective computer programmer with little further experience. Please do not go around telling people that they "don't need experience" based on that result; they will not hear "I can get a math background" instead. What you say sounds obvious, but please let me remind you that you've almost certainly seen people who could not leap directly to those conclusions correctly. I can name names of people where I work with years of experience who still engage in "flail at the problem blindly until it seems to go away". In fact just the other day we observer one programmer created a perfect loop; patched a bug, created a new one, patched that, created another new one, another programmer jumped in to fix that, and then the original programmer patched yet another fix resulting in the exact same source code we had at the beginning of this process, only with another new line. (I am not sure what the degree status of this person is but it doesn't seem to have taken.) (And I would agree you can learn a lot without formal training, but at some point you're still going to have to learn what that formal training covers. You also have to learn more anyhow.)
- btilly 16y agoI agree that a quantitative background is useful. But you can do a lot without a strong background in computer architecture or operating systems. That said, I agree that the lack of a CS background leads to holes that need to be filled in the long run. But that is something that can be addressed down the road. It is not a prerequisite.