Careers at Codice Software

Company

SENIOR SOFTWARE ENGINEER

Estamos buscando un ingeniero con experiencia para reforzar nuestro equipo. Alguien que aporte su trayectoria, visión e ideas.

¿Qué ofrecemos?

  1. Remuneración competitiva. No competimos en coste, sino para crear el mejor producto posible. Y desarrollamos producto, con lo que no tenemos restricciones impuestas por cada cliente. Por tanto, dinos tu objetivo y haremos lo posible por alcanzarlo.
  2. Horario y vacaciones flexibles.
  3. Seguro médico privado.
  4. Tarjeta restaurante.
  5. Posibilidad de trabajo remoto. Estamos en el Parque Tecnológico de Boecillo, en Valladolid. Tenemos miembros del equipo con mucha experiencia que trabajan en remoto. Nuestra preferencia es alguien que pudiera trabajar en la oficina, sobre todo al principio, pero la prioridad es encontrar al candidato adecuado.
  6. Un proyecto muy atractivo en todos los sentidos: trabajar en Plastic SCM, SemanticMerge y ahora también en gmaster. Todos los detalles debajo.

¿Cómo es la entrevista?

Una conversación en la que te contamos qué hacemos, qué buscamos, y en la que esperamos que tú nos presentes muy bien tu experiencia para dejarnos claro que eres el ingeniero que estamos buscando.

Hablamos de nuestro ciclo de trabajo, de cómo nos gusta el código, de cómo hemos evolucionado, retos que tenemos, etc.

Solemos hacer alguna pregunta técnica en plan cómo funciona el Garbage Collector, o algo de threads, que son las cosas que nos apasionan.

Hablar de libros que consideramos clave ("Code Complete", "Implementation Patterns", "Clean Code", etc.).

Y nos gusta mucho cuando el candidato ha mirado nuestros productos y podemos hablar algo de ello.

Nuestra entrevista no es un examen. No esperes un cuestionario, ni problemas, ni nada de eso.

En ocasiones pedimos al candidato que, en su casa y con tiempo, prepare algo de código para mandárnoslo con el objetivo de ver si su estilo encaja con el nuestro. Sin prisas, ni agobios ni situaciones irreales.

¿A qué nos dedicamos?

En Códice Software desarrollamos Plastic SCM, un control de versiones de alto rendimiento para equipos avanzados, y estamos buscando un Senior Software Engineer para unirse a nuestro equipo de desarrollo.

Todos en el equipo intentamos trabajar en todas las áreas, lo que implica: desde algoritmos de merge (y de SemanticMerge) hasta código de red. Desde base de datos (7 backends diferentes: Oracle, SQL Server, Postgres, MySql, SQLite, Firebird, SQL Server CE, y justo en Plastic 6 hemos añadido Jet, nuestro propio almacenamiento optimizado, usando memory-mapped files y muchos punteros) a desarrollo front-end web (MVC). Desde GUI development (WinForms,Cocoa y GTK) a desarrollo cloud y REST APIs. Plugins para diferentes IDEs como Visual Studio, Eclipse, IntelliJ, sincronización bidireccional con Git, Perforce, TFS y SVN, optimización de rendimiento…

Suficientes áreas diferentes como para no parar de aprender nunca pero que requieren de desarrolladores con capacidad de adaptarse y de familiarizarse a una base de código que ya supera los 1.3 millones de líneas (90% en C#).

Funciones

Te incorporarás al equipo de desarrollo de Plastic, Semantic y gmaster, así que tus funciones serán diseñar y desarrollar para todos los proyectos (entre los que se comparte mucho código, claro).

Necesitamos a alguien generalista, que con el tiempo sea capaz de trabajar en cualquier área del producto, si bien pueda aportar su experiencia desde el primer momento.

Pero principalmente alguien capaz de diseñar código muy simple para dar solución a problemas complejos, algo poco común.

En un día típico, una vez que te hayas familiarizado con nuestra base de código, que puede llevar un tiempo, harás alguna de las siguientes cosas:

  • Trabajar en el diseño y/o el código de alguna nueva big feature: nuestro nuevo cloud server, una nueva GUI + core para empresas de videojuegos, clientes GUI en Mac, Linux o Windows, nuevo sistema de codereview integrado, sistema de comunicación p2p entre servidores Plastic, integración con un nuevo sistema de DevOps, etc.
  • Trabajar en la integración con Git, con Unity (estamos trabajando mucho en juegos), la futura integración con UnrealEngine, plugins de Eclipse o Visual Studio, etc.
  • Implementar alguna mejora más pequeña sugerida por nuestros usuarios (ya sea a soporte, nuestro UserVoice o el foro).
  • Mejorar el rendimiento del servidor en carga: ¿podemos ir más rápido con 1000 developers haciendo checkin a la vez? ¿Podemos cargar datos locales más rápido?
  • Codereview (más bien walkthrough) de alguna tarea hecha por otro miembro del equipo el día anterior. Todas las tareas van code-reviewed y pueden reabrirse tanto por bugs como por cuestiones de estilo de código o por un nombre de método mal puesto. Una codereview puede ser desde 10 minutos hasta varias horas revisando código de una tarea grande.
  • Validation de una tarea. Supone ver que lo que se ha hecho en la tarea tiene sentido. Compilarla y ver que todo está correcto.
  • Refactorizar código para hacerlo más legible.
  • Fixear un bug en alguna parte del sistema: desde código de base de datos a GUIs en 3 plataformas pasando por los diferentes plugins para IDEs, sistemas de integración continua, etc.

Experiencia y habilidades

Si parte de los siguientes puntos encaja contigo, eres el candidato que estamos buscando:

  • 5+ años de experiencia en desarrollo.
  • Sólida formación, preferiblemente Ingeniero en Informática.
  • Sólidos conocimientos de threading y concurrencia en diferentes sistemas operativos. Nos gusta mucho esto de dominar los básicos, creemos que te da una base muy buena para resolver problemas.
  • Sólidos conocimientos de diseño de software. Este es el punto más importante. Necesitamos a alguien que no construya castillos ni mate moscas a cañonazos, valoramos las soluciones simples, y el código superlegible.
  • Conocimientos de SCRUM y métodos ágiles (llevamos más de 260 sprints y logramos CMMi L2 en 2007, aunque nunca lo hemos renovado). Si te suena el tema, mejor, pero no es crítico.
  • Conocimientos de C, C++, Java o C# (usamos .Net y Mono extensivamente (C#), y ahora .NET Core, pero valoramos mucho a los hard-core C o C++ programmers).
  • Familiarizado con UnitTesting y si estás familiarizado con GUI Testing (Test Complete y similares), mejor.
  • Se valorarán conocimientos de desarrollo en MacOS y Linux. Nos vendría muy bien alguien que haya hecho aplicaciones escritorio en Mac o sea usuario habitual, para pulir la usabilidad del producto.
  • Si has leído "Code Complete", "CleanCode", "ImplementationPatterns", cualquiera de los libros de McConnell, Peopleware… ¡dínoslo!

Más sobre el proyecto

¡En Códice creemos que no hay nada más apasionante que desarrollar un control de versiones! Bueno, quizá crear tu propio sistema operativo :-)

Si te unes al equipo podrás desarrollar software para programadores, crear las herramientas que tú mismo siempre has querido usar. Y por tanto, estarás contribuyendo con ideas desde el primer día, algo no muy habitual en otros proyectos.

Te enfrentarás a un reto enorme. El control de versiones es un software crítico. Hay otras herramientas que son opcionales en un desarrollo, pero si el control de versiones no funciona, el proyecto se para. Nuestros clientes, ya sean equipos de más de 1500 desarrolladores trabajando concurrentemente sobre una misma base de código, hasta pequeños equipos de 2, evalúan Plastic comparándolo con los números uno. Cada venta supone que hemos ganado a Git, Perforce, ClearCase, RTC y TFS, entre otros. En cada uno de esos controles de versiones trabajan equipos más grandes que el nuestro, y aun así hemos conseguido clientes como Delphi (+1800 usuarios), Samsung (+500), Pantech (+500), TellTale (+300), Mapfre (+800), HP, Sony, NASA, FacePunch Studios, Microsoft, etc., desde USA a Corea del Sur, pasando por toda Europa y Australia.

Tendrás la oportunidad de trabajar con un equipo supermotivado, muy compenetrado y que ha sido capaz de conseguir logros enormes.

¿Cómo es nuestro ciclo de trabajo?

Si quieres leer algo más sobre cómo trabajamos, puedes ver los siguientes posts con los últimos cambios que hemos implementado en línea DevOps y Trunk Based Development:

¿Te interesa?

Si estás interesado escríbenos a

cv@codicesoftware.com

Estamos en el Parque Tecnológico de Boecillo, en Valladolid, y aunque tenemos miembros del equipo con mucha experiencia que trabajan en remoto, preferimos a alguien que inicialmente pueda trabajar desde la oficina, al menos hasta estar totalmente integrado.

Get the latest news