You will be evaluated for this job based on how well you meet the qualifications above.
The ideal candidate is someone who thrives on solving hard problems, has excellent communication and interpersonal skills, and is able to:
- work independently as well as in a team environment to build solutions
- handle multiple assignments
- synthesize information to solve complex problems
- apply knowledge of data structures and algorithms to software engineering problems
- develop, diagnose, and operate complex computer systems
- identify customer needs and validate product design
Additionally, the ideal candidate is someone with knowledge and experience in one or more of the following:
- programming and scripting experience (e.g., C, C++, Java, Assembly, Python, Perl, Ruby, Bash, Node.js, Spark, Puppet, SALT, KAFKA, HADOOP, VHDL, Verilog)
- building user facing services, middleware, and backend systems
- full-stack development
- computer networking (e.g., communication protocols, distributed systems, Internet of Things, real-time systems, routing and switching)
- protocol analysis (e.g. Wireshark, tcpdump)
- data spaces, data modeling, data analysis, storage design, and administration
- simulation/model development & prototyping
- information retrieval, machine learning, artificial intelligence, statistics and analytics
- hardware and software vulnerability analysis
- software reverse engineering/interactive debugging tools (e.g., Ghidra, IDA Pro, Ollydbg, gdb)
- hardware reverse engineering tools (e.g., JTAG, Oscilloscopes)
- software development life-cycle (design, develop, implementation, debug, testing)
- kernel and device driver development
- network/socket programming
- embedded systems development
- operating systems
- computational science
- algorithm analysis and design
- reverse engineering
- cryptanalysis
- high performance computing