Gather requirements with the larger team, understand high level architecture and collaborate with executive developers across the team on design, while engaging closely with stakeholders (client team, QA, and program management) to provide status, iterative releases, and make design decisions throughout the development. Teams work all across the company, in areas such as information retrieval, artificial intelligence, natural language processing, distributed computing, large-scale system design, networking, security, data compression, user interface design; the list goes on and is growing every day.