HN user

cgdub

137 karma
Posts0
Comments54
View on HN
No posts found.

I work in a large code base where we've told all of the developers to use dependency injection frameworks.

We are now using a mixture of 3 different dependency injection frameworks, manual dependency injection, and instantiating dependencies in the constructor.

We have rules around changing the schema. You can only add new fields and deprecate old fields. You can't rename or reuse fields. All new fields must be optional to make schema evolution possible.

In practice, this is pretty similar to how you maintain compatibility with old clients in JSON. But with protobuf, you have the schema file to make code reviewing this kind of change easier.

A tool or technology that adds work is extremely useful.

More work means

- more employees needed

- more direct reports for managers

- more jobs for x technology

- more people learning x technology because of those jobs

- more StackOverflow questions for x

- more companies using x technology because it's "easy to hire for"

- more money to be made in teaching x

- more learning material for x

If you use a sufficiently smart JS optimizer, it will optimize the object creation and destructuring away.

For example, Google Closure Compiler can take

    function hello({name}) {
      alert('Hello, ' + name);
    }
    
    hello({name: 'World'});
and compile it into
    alert("Hello, World");

I have found myself in a similar role and lead a team that spends most of our time improving the front-end build tools and front-end testing infrastructure that all teams in the company use and splitting the company's codebase into micro-frontends where it makes sense.

Depending on the company and product, it might make sense to focus on performance or building a shared component library. In our case, the average team's productivity was far below where I believe it should be because of dull tools. Figure out where your company needs improvement the most and make it better.

If you have the leverage, 17 people in daily standups is a good problem to fix.

His point about protocol buffers (i.e. schema-out-of-band protocols) is unfortunately brief in this talk.

Depending on your use case, you may have to do a lot to work around protocol buffers not being self-describing. I haven't seen a good description of the problem online, but if you find yourself embedding JSON data in protobufs to avoid patching middleware services constantly, you should look at something like Avro or MessagePack or Amazon Ion.

I don't use evil-mode (anymore), but I still use Spacemacs. I'm too lazy to configure everything myself (language modes, Helm, Projectile, Magit, etc) so I use Spacemacs as a starting point and load a bunch of extra ELisp on top.

I'd recommend Spacemacs (even if you're not using evil) if you're new to Emacs and want to see how different and powerful a fully customized Emacs is when compared to the bare-bones experience of stock Emacs.