Earlier quoted context omitted.
I thought that in this contrived example, Jack and Diane were writing the software that runs on the server, not on the kitchen devices. Also, what if the "devices" are small-form-factor PCs? That would relax the constraints considerably.
Ah, see, I read the spec as saying that it would be things stored on the kitchen devices (toaster, etc). You do want to make sure your comms layer is easy to make reliable when talking from the device, regardless. Might be HTTP, might not be - I'd likely take a gander at ProtoBuf myself for feeding over TCP/IP to minimize comms complexity on the phone home code.
The Number One Trait of a Great Developer
81–90 of 122 posts
Re: The Number One Trait of a Great Developer
#82This is one of those "why I am a great developer" sorts of posts that allows people to pat themselves on the back and congratulate each other on how great they are, passive-aggressively sending it out to the team in hopes of denigrating some team member who likes newer things. In this case "judgement" means "uses the things that I know", and there seems to be little evaluation beyond that high-level use case. Why was…
Yeah, I agree with you: 'just because' .. the author of the article doesn't know anything about protocol buffers, node.js and Cassandra. Probably because those things are 'too new' and 'not proven' technologies - to him. But if I had to take over a project from someone, to maintain it, I'd MUCH RATHER have it be done using those technologies than MySQL and Sinatra. Yikes! I recently had to make a bid on a project tha…
Re: The Number One Trait of a Great Developer
#83This is one of those "why I am a great developer" sorts of posts that allows people to pat themselves on the back and congratulate each other on how great they are, passive-aggressively sending it out to the team in hopes of denigrating some team member who likes newer things. In this case "judgement" means "uses the things that I know", and there seems to be little evaluation beyond that high-level use case. Why was…
> Why was -- in this contrived scenario -- Jack's solution a "maintenance nightmare"? Just because. Because apparently the author didn't have the necessary skills to maintain it. Cassandra isn't easy to master, especially if you only have cheapo developers who are reluctant to switch to PostgreSQL from MySQL. But yes, it's a highly opinionated, narrow-minded piece.
I'll cut the author some slack here though since the article is over two years old by now.
Re: The Number One Trait of a Great Developer
#84This is one of those "why I am a great developer" sorts of posts that allows people to pat themselves on the back and congratulate each other on how great they are, passive-aggressively sending it out to the team in hopes of denigrating some team member who likes newer things. In this case "judgement" means "uses the things that I know", and there seems to be little evaluation beyond that high-level use case. Why was…
> Why was -- in this contrived scenario -- Jack's solution a "maintenance nightmare"? Just because. > The result was a combination of Google Protocol Buffers, node.js, and Cassandra. Elegant, scalable, and totally unmaintainable. If I can venture a guess, Jack went ahead (without asking further questions, as opposed to Dianne) and took what was very hot at that time. 2 years ago, Node.js was extremely hot, in a sense…
I think the author stated in the article that the fictional character Jack ".. makes a point of starting each project with at least three new technologies."
I personally understand this as three new technologies Jack has not previously worked with, which should be a definite indication of some risk/unknown factors. Plus given the context of this fictional scenario, it seems unlikely that other developers associated with the project/company know them.
Now if everyone were so conservative that they'd never try anything new, there would never be any progress, but I think the point of the article is that something isn't better, just because it is new. In fact, to me the rings of the "worse is better" philosophy which I didn't think was taboo in any way here on HN :-)
Finally I'd like to add that the author didn't say this was a "maintenance nightmare", he did however say the solution was elegant, scalable and totally unmaintainable.
Re: The Number One Trait of a Great Developer
#85That's the key point. A developer with good judgment will start there. A developer with good judgment might even raise their hand and say, "As I understand this problem, it requires technologies I'm not so good at. What should we do?"
There are exceptions to every rule, and all sorts of projects. But in general, that seems like the sort of developer you want to hire.
Re: The Number One Trait of a Great Developer
#86This is one of those "why I am a great developer" sorts of posts that allows people to pat themselves on the back and congratulate each other on how great they are, passive-aggressively sending it out to the team in hopes of denigrating some team member who likes newer things. In this case "judgement" means "uses the things that I know", and there seems to be little evaluation beyond that high-level use case. Why was…
> Why was -- in this contrived scenario -- Jack's solution a "maintenance nightmare"? Just because. Because apparently the author didn't have the necessary skills to maintain it. Cassandra isn't easy to master, especially if you only have cheapo developers who are reluctant to switch to PostgreSQL from MySQL. But yes, it's a highly opinionated, narrow-minded piece.
Re: The Number One Trait of a Great Developer
#87His code wasn't super fast and wouldn't win any awards for being clever, but he got it done quickly and it worked. They were able to ship. Over the years, as they moved from one web server to another and from one platform to another, the maintenance programmers they brought on later (for Joe had moved on, as people do) were able to adapt it without too much trouble. The CGI aspect meant it could run on IIS or nginx or whatever else they found.
It would never scale to huge numbers of queries per second, but it wasn't supposed to. It needed to handle 500 devices in the first year polling about once an hour. That's 12000 queries per day, or .138 QPS (queries per second). You could almost service those requests by hand if the timeouts were high enough and people were cheap enough: just cut and paste!
Bob asked the same questions, wrote CGI and hand-coded SQL too, but made a mess of it. It took him three times as long to write. It had numerous security problems and took the site down when someone discovered they could pull a "Bobby Tables" attack and change everyone's recipes to involve dog poop. Customers rioted and demanded refunds. The company went out of business.
They used the same technologies and got two different results... and this happens constantly.
Some technologies are used to create only garbage, sure, but the technology itself won't guarantee success.
Re: The Number One Trait of a Great Developer
#88Also up-voting said comments.
Re: The Number One Trait of a Great Developer
#89Is that even possible? I would bet that knowing PostgreSQL is basic for any "Unix Admin" - assuming he means Unix operations person there.
Re: The Number One Trait of a Great Developer
#90Earlier quoted context omitted.
> Why was -- in this contrived scenario -- Jack's solution a "maintenance nightmare"? Just because. Because apparently the author didn't have the necessary skills to maintain it. Cassandra isn't easy to master, especially if you only have cheapo developers who are reluctant to switch to PostgreSQL from MySQL. But yes, it's a highly opinionated, narrow-minded piece.
Having only used Oracle, MSSQL, and MySQL, I can't imagine a small 500-user app would be that hard to implement in in Postgre even if I'd never touched the platform before - does Postgre have some terrifying gotchas, or does it work as a reasonably well-behaved SQL server? That is, if I naively installed a PostgreSQL server on my box and started creating tables and indexes and users, would I be destroyed by some horr…