Saturday, December 2, 2017

Model Engineer

Much of computer science , programming and maybe even all the way to technology itself is about categorizing. Encapsulating and compartmentalizing tools help us reuse and scale separate functionality. Organizing the code into its logical parts helps maintenance, debugging, and optimization. This organization extends to the scientists and engineers that work in the fields as well. Specializing is a feature that allows us to collaborate efficiently.

Web development has enjoyed a mature organization of its code and responsibilities. Frontend engineers manage the client code. Backend engineers manage the server code. Designers build the visual interactive parts of the interface. Devops engineers automate the deployment process and standardize the test environments. Systems engineers monitor the machines that run the application. I propose a further separation, the model engineer.

Model engineers separate the Backend engineer's work from the database work. More generally its the removal of responsibilities of the storage retrieval engine from the routing and process code. In a standard MVC layout you would expect the model engineer to write and test the queries that live in the model part of your code. The model engineer should be concerned with efficient and secure storage, caching strategies, sharding and model representation. A model engineer might be a DBA or maybe someone that is proficient with GraphSql. I have a feeling that data scientist would be a natural fit for a model engineer and vice versa. The main point here is that the "model" part of an application, the part of the code that deals with saving and gathering your data is a significant part work that needs to be done, especially with scaling and REST APIs in public use.

No comments: