4 ms·
So I've done this a few times and constantly play with the idea of offering it as a consultancy service. Two things put me off, I do wonder if anyone else here
by mattmanser 6y ago
So I've done this a few times and constantly play with the idea of offering it as a consultancy service.
Two things put me off, I do wonder if anyone else here has attempted to do it as a consultant?
Firstly, while I could quickly identify the cause of the slowdowns, the previous times I've done this I already had an intimate knowledge of the codebase so could confidently fix the problem. Without an intimate knowledge of the codebase, I fear I'd either muck up the fix, or that I'd have to rely on internal developers who, as you say, would deprioritize it or feel resentful at an outsider coming in and from their perspective effectively telling them their code is "bad" (even though I understand how these speed issues develop organically). Or would it be enough to just offer the diagnosis, but not the fix, and thus give ammo to the PMs/senior management to take the problem to their own developers and say "look, we've been told there's a problem and it's fixable, go fix it".
Secondly, how to handle getting access to their codebase/a proper debug environment that reflects production for such a short time. Again I fear it would turn into a "not my problem" scenario of trying to get a live environment setup from people who don't want to give it to you. Fixing these problems usually turns out to be fairly quick once you've identified the real cause. I can do a quick analysis just with access to a website (i.e. is it a back-end or front-end problem), but until you can run diagnostics you can't say exactly which loop/sql statement/js compilation issue/etc. is causing the problem.
- bsenftner 6y agoMy solution to this issue to to hire only former C/C++ video game developers for non-video game software development. Their attention to performance is innate, their attention to critical obscure details is innate, and their desire to write code they are proud is innate. Plus they come with advanced, useful math knowledge. I love former game developers because they did the pop culture dev job, saw it was exploitation, and took their incredibly optimized skills elsewhere.
- mattmanser 6y agoIt's good it works for you, but in terms of webapp development, wouldn't they have very little skill at databases? And focus on optimizations that are completely irrelevant for 99% of webapps? I've seen before code where premature, pointless or unclear optimizations used, like dogmatically using stringbuilders or avoiding boxing saving all of a couple of nano-seconds, while the SQL statement is taking 3 seconds to run due to unnecessary sub-selects because the developer doesn't grok set-based logic. Or worse, cursors because they think they need a loop!
- bsenftner 6y agoMany game devs have their own fairly advanced web sites, and they professionally know about pre-optimization issues. Also game production environments have been using databases for decades, the game production environments certainly have optimized database operations, and their developers are experienced with this too because building an internationalized multi-language game is far more complex than the game itself.
- mattmanser 6y agoI think we're from different worlds, from your profile it's seems you don't work on e-commerce and sass, which is what I'm referring to. Though admittedly I didn't open with that! Just like I can't imagine the true depth of complexity of game/3d development having dabbled making games in unity, I'm not sure you understand just how complex a sass/enterprise site can get, it's usually issues with actually organising the code that gets you, rather than the code itself. Your example of i18n is actually quite telling, having internationalized a couple of sites that's actually a fairly simple organizational problem in our codebases, comparatively not really complex at all, just tedious.
- bsenftner 6y agoI authored a moderately large (scaled for global use) e-commerce / webapp / webAPI, as well as operated as a tech architect + MBA for a number of web startups. I have a pretty good idea of the complexity, architecture variations, and bottlenecks. My example intended to reference more than i18n, as that only covers the interface. Consider something like an online international university where there is media, but that media varies with 8 different languages, so each and every aspect of any presentation needs to accommodate variable length text fields, left and right and vertical directions of text display, every media clip varies in length due to language, and multi-language users can switch display mode at will. I've done projects like this, over a dozen, and it's quite the challenge.
- deleted 6y ago[deleted]
- wolco2 6y agoWe do this a lot. We take a truth + mix it in with our personal situation and broadcast this information as truth and someone comes around and follows this and finds it to be untrue. Hiring ex C/C++ game developers is fine on the surface. They are smart people and can pick up things quickly. But as a general rule it fails. Taking longer to get things perfect is usually not a tradeoff in the webworld that makes sense. People want simple, reuseble and quickly changable features. Pixel perfect perhaps but never code perfect because things change quickly. Why would you hire for that? Higher salaries for no reason. Learning curve will be harder than one expects Smaller pool. Greater unhappiness. You might hear after writing a game engine that web work is 90% easier but so boring. Hire an ex c/c++ developer because they show an interest in making a change and are willing to put in the work. Don't hire all of them and expect an advantage..
- bsenftner 6y agoWho says programmers are responsible for pixel perfection? That's what the graphic artist do. But I get your point of thinking former game developers would be too exacting. That is what hiring filters and management is for, so you hire with reason and guide them to the company's level of production quality. Also, the typical game is significantly larger than any single gamer experiences, and game developers certainly know the tradeoff of "good enough". Plus game production environment is a technological feat in itself too, and it is those type of game developers that contain the most value - not necessarily the game play developers, but the game production pipeline developers.
- calpaterson 6y agoI take contract work and I try hard to check in some speedups in every project I touch. It's not hard to find issues. Just profile, most people never do. The other trick of finding problem code is to talk to the sysadmins - they tend to know and often are not shy about criticising those awful lazy devs :) I don't think you can offer it as a consultancy service because people tend not to care and are quite aggressive about that. They would much prefer to pay for more hardware and doing so is organisationally respectable: "the cloud will solve our problems".
- mattmanser 6y agoA few of my clients asked for it and kept raving on about the improvements long after it was done. Which is one of the reasons I considered it. I think programmers might not care, I'm not sure their managers and PMs don't.