● Significant experience in objectoriented development following SOLID methodology
● Strong problem solving ability
● Relentless focus on results and details
● Proficiency in C++
● Experience with test driven development
Helpful Skills (But Not Required)
● Experience developing for multiple platforms
● Experience developing mission critical software
● Experience developing realtime applications
● Familiarity with video streaming
● Experience with OpenGL
● Experience with mobile audio/video development*
● Familiarity with node.js*
● Familiarity with C++11
For C++, we use a general OO approach following SOLID. “Pure” C++11, limited use of boost (only where absolutely needed), some other 3rd party libraries that manipulate/encode media or provide networking APIs. Everything not pure C++11 is abstracted into its implementing Class so the code looks and reads as other OO code bases in Java/C# look like.
Specific knowledge, e.g. OpenGL or threading/dispatch models for various platforms like iOS, OS X, Win32, Linux, Android and so on will come up on a case by case basis. For example, one of our current tasks is to draw a YUV420p frame on OS X using hardware accelerated methods. The challenge is understand the specification of the input, identify the different alternatives using 3rd party libraries to convert/draw hardware accelerated. I expect a senior engineer to be able to solve problems like that even if they don’t have prior experience with it. That said, this is a more difficult problem and there is a lot of collaboration going into solving this problem. Most other tasks will be of a more general platform-independent nature where specification of input/output and functionality is well understood from the outset.
Our code builds on Cygwin, Visual Studio, Linux and OS X. For most part, it doesn’t matter what platform one uses to develop in. However, sometimes a test fails on only one platform and then the engineer would need to be able to investigate using that environment and to properly fix it.
For this project, we use AWS/BeanStalk and Google Cloud. Though, deployment is completely independent from development so there is no requirements for skills in this area.
PhenixP2P Inc is interested in hiring an experienced software engineer to help to support the
ongoing development of PhenixP2P’s realtime video streaming platform utilizing peertopeer
multicast for large scale, lowlatency streaming at high quality and low cost. Various software
components have been built for all significant browsers and mobile devices.
A successful candidate has significant C++ experience, is comfortable working in lowlatency
engineering environments and has demonstrated a tenacious attention to detail.