¿Cuáles son los desafíos de ingeniería en ZenPayroll?

Hay muchos desafíos de ingeniería que enfrentamos aquí en ZenPayroll. Sería imposible para mí cubrirlos todos, así que solo resaltaré tres.

Diseñando nuestra base de código para la productividad del desarrollador

Los 50 estados tienen sus propios conjuntos de impuestos sobre la nómina, programas de pago de impuestos, formularios de impuestos y requisitos de cumplimiento de recursos humanos. Agregue las complejidades adicionales de los impuestos específicos de la ciudad y del distrito escolar, y pronto se dará cuenta de que escribir software para automatizar la nómina en los Estados Unidos es extremadamente complejo. A medida que escalamos rápidamente nuestra expansión estatal, un gran desafío de ingeniería ha sido la arquitectura de nuestro sistema de tal manera que desarrollar el estado 50 no es más complejo que desarrollar el estado 5. Necesitamos una arquitectura que nos permita andamiar todos los puntos en común entre los estados muy rápidamente, pero lo suficientemente flexible como para manejar las complejidades que hacen que cada estado sea único. Esta parte de nuestra base de código está siendo diseñada con mucho cuidado, con un gran énfasis en la productividad del desarrollador.

Una máquina virtual para cuentas bancarias.

ZenPayroll procesa $ 1B + en nómina anual, y este número continúa creciendo muy rápidamente. Todos los días, movemos millones de dólares, principalmente a través del Sistema ACH, y es fundamental realizar un seguimiento de cómo fluye cada dólar a través de nuestro sistema.

Confiscamos el dinero destinado a los impuestos sobre la nómina de nuestras compañías y remitimos el pago a varias agencias fiscales del gobierno cuando vencen en nombre de nuestros clientes. Debido a que los impuestos pueden no ser exigibles de inmediato, acumulamos grandes flotas en nuestras cuentas bancarias. Como tenemos miles de clientes y no podemos abrir cuentas bancarias para cada uno de ellos, hemos creado nuestro propio sistema para “virtualizar” las cuentas. De esa manera, la flotación de una empresa no se puede gastar para pagar los impuestos de otra empresa. Virtualizamos las cosas aún más: dentro de la misma compañía, la flotación destinada al impuesto federal FICA se encuentra en una cuenta virtual diferente de la flotación destinada al impuesto estatal sobre la renta. Hacemos lo mismo para el pago neto de los empleados, los pagos del contratista y los pagos de caridad

La gran cantidad de dinero con la que tratamos requiere que nuestro equipo de plataforma diseñe continuamente sistemas para que seamos buenos administradores de los fondos de los clientes.

Seguridad y fraude

Las compañías de nómina manejan mucha información personal confidencial: cuentas bancarias, SSN, EIN, salarios, dirección personal, etc. Curiosamente, hay muy poca regulación sobre el manejo de esta información. No existe un equivalente del cumplimiento de PCI para la información relacionada con la nómina. Asegurar que nuestros sistemas estén seguros, protegidos y aislados es algo en lo que pasamos muchos ciclos de ingeniería.

Sin embargo, la gran cantidad de información personal que requerimos tiene algunas ventajas. Nos da una tonelada de datos en bruto con los que trabajar para determinar si alguien se está registrando fraudulentamente con ZenPayroll para pagarse con una cuenta bancaria robada. Hemos diseñado un sistema de fraude completo para detectar y alertarnos cuando algo sospechoso está sucediendo. Este sistema es una combinación de muchos enfoques creativos bien establecidos y nuestros propios para determinar si un usuario es fraudulento. Si bien no puedo entrar en detalles sobre cómo funciona nuestro sistema de fraude, es algo que ha sido muy efectivo para combatir el fraude a través de nuestro sistema.

More Interesting

A los 27 años, ¿cuál es la mejor manera de convertirse en ingeniero de software y obtener una buena paga, volviendo a los estudios durante 3-5 años o tratando de ser contratado en IBM / Atos / etc.?

¿Cómo explicará la Inversión de control en términos simples?

¿Cuál es la diferencia entre la arquitectura MVC y N-Tiered?

¿Cuáles son los mejores marcos HTML5?

¿Cómo se puede obtener una comprensión básica del firewall de hardware y software?

¿Cómo puedo saber si mi desarrollador va lento o rápido (si no soy técnico)?

¿Qué tecnologías necesito saber para DevOps?

¿Es la herencia una mala práctica en OOP? Muchos lugares que enseñan patrones de diseño dicen que optan por la composición sobre la herencia, pero ¿qué pasa cuando varias clases comparten la lógica de una clase abstracta como en el patrón de diseño del Método de plantilla?

¿Cuál es la arquitectura MVC (modelo-vista-controlador) en términos simples?

¿Qué es un software de gestión de equipo?

¿Cuál es un porcentaje de tarifa justa para un corredor de software que conecta a clientes y desarrolladores?

¿Cuál es el mejor lugar para publicar trabajos de desarrollador en la ciudad de Nueva York?

¿Cómo sería sumergirse de un probador de automatización en un probador de penetración o un probador de seguridad móvil?

¿Qué es Embedded Linux? ¿Qué conocimiento se requiere para usarlo?

¿Existe un enfoque o software que un empresario pueda usar para recopilar los requisitos de desarrollo de aplicaciones?