If you know of anyone that would be a good fit for this role, I would greatly appreciate any referrals.
Position Title – WRJPSWE112015 – Updated Spec.
Updated - Principal SW Engineer – C/C++ – SQL – Linux – BASH – JSON – Telephony - Framingham, MA Area – Up to $140K+
Excellent Compensation Package – Base + Bonus + Benefits - Candidates Local to Mass. Only – Green Card or US Citizens Only
Company:
Small, Private, Successful, Highly Profitable & Growing, Software Firm, (Part of a larger parent firm), focused on Voice/Telephone Identity Management Solutions that provide Identity, Security, & Investigative Analytical Tools for the Law Enforcement Space as well as other Industries. Join a team oriented, collaborative, results focused environment and help them continue on their path of success.
What makes my clients products unique and exciting to work on is their ability to leverage biometric information and big data. They work with cutting-edge technologies in the areas of: signal processing, speech and voice analysis, data mining, and machine learning. They are constantly engaged in technology transfer, which presents the challenge and opportunity to innovate.
Position Summary:
The Principal Software Engineer contributes to all facets of the development, maintenance, and support of the firm’s products and integration with third party systems and applications. You’ll be working in an entrepreneurial culture, helping to develop large scale voice processing applications. Our applications process enormous amounts of data critical to our customers’ missions 24x7. You’ll work closely with Product Management, R&D, and Architecture to perform technology transfer, applying the latest research to enhance our products. You’ll be focused on designing and implementing scalable, resilient software platforms. You’ll be writing the code that interfaces with our end-users via IVR and with other systems via web-services. You’ll use signal processing APIs to enhance our distributed voice processing systems. You’ll consider the dataflow and opportunities to enhance responsiveness through optimization of the data model or caching strategies. |
This role reports directly to the VP of Engineering.
Key Responsibilities:
· Software Development Life Cycle (SDLC) deliverables o Analyze business requirements and estimate level of effort o Develop technical requirements and interface specifications o Design o Write code o Perform Unit and Integration testing o Deployment to Production o Troubleshoot & Resolution of Production issues · Drives the execution of multiple projects. · Leads and participates in medium scale, complex, cross functional projects. · Leads the work of small groups of 3-5 engineers for assigned projects. · Provide input and author sections of Release Notes. · Teach & Mentor other engineers in your areas of expertise. · Leverage ideas from the community and adapt them for use in our systems. |
About the Candidate:
The successful candidate will be a technically proficient, self-starter with excellent communications skills and a demonstrated ability for self-directed learning. They will have strong opinions on code style, structure, and organization that facilitate reuse, understanding, and testability. They will care about software quality, not only in the desired functionality, but also in designing the system to fail gracefully in error conditions. They will desire and be able to discuss tradeoffs in design choices and how they affect the properties and behavior of the system as a whole. During design and implementation they have a focus on automated testing. They have an ownership mentality.
We are looking to cultivate a team of generalists, who understand the full stack of our applications and can contribute at any level. We are hiring for strengths in specific skill sets and domain expertise. We are looking for people who can provide leadership and mentoring, but who also want to learn and contribute outside their “specialty”.
Required Skills and Competencies:
· A Bachelor Degree in Computer Science or equivalent.
· A minimum of 7 years of development experience.
· Ability to take total ownership of assigned components.
· Ability to multi-task and stay organized in a dynamic environment.
· Ability to work with a diverse team
· Team Player and a self-starter.
· Excellent problem-solving and troubleshooting skills.
· Ability and willingness to select, learn, and teach new technologies.
Technical Skills:
Required:
· C, SQL, Linux/Unix, Bash Scripting, JSON, RESTful, & Web Services
· Load balancers, caching solutions, and other moving parts of a high-performance application infrastructure
Preferred:
· PostgreSQL Database, Apache, GIT, SIP/RTP, HTTP Protocol, & Network Packet Analysis |
Pluses:
· Go & Python
Key Requirements for this Role - (Make sure you read this):
· (ideal) is what distinguishes them and puts them into the technical leadership role
· (must) is what they will be asked to do all the time
· (nice to have) would complement the other experience as we do that stuff also, but they can learn that on the job over time
· (ideal) Can architect a redundant, highly available system using Load-Balancers, fail-over & caching strategies, and other moving parts of such a system
o There are many domains that this covers for us
§ (ideal) Best-Effort near real-time transactional/event driven ETL data integrations
§ (must) Distributed computation
· Processing ~500k 30MB audio files and related meta-data, generating additional meta-data, storing/indexing the output
· Searching 3 Months of that indexed output, on-demand, in ~15 seconds
§ (nice to have) VoIP interactive call-flows
· Communication via SIP/rtp using 3rd party User Agent libraries
· State Machines
· web-services based low latency meta-data exchange / caching
· best-effort near real-time interaction with distributed computation components to process audio
§ (not the focus) A traditional CRUD 3-tier web application
· Client-Side JS frameworks / in-browser architecture. REST / JSON APIs to read/write from database. Single Page Applications.
· (ideal) Can translate that high-level architecture into the individual components, providing
o the software components for the system, their role, behavior, data-flow / transformations, state management, recovery after failure
o the specific network based API interfaces that enable the architecture above, considering all edge cases / failure modes / timing issues
§ Very specifically how those components/applications will talk to each other, when, what they will send with examples, etc.
· (must) Can provide specific internal code-level design and architectural guidance for the individual components
o How the code should be structured in each of the applications. What framework, patterns, level of abstraction, organization, encapsulation. The application specific internal architecture that ensures the proper handling of the error cases / edge-cases they were concerned about in the overall design of the entire system. The code-level as well as system level design that makes it “hard for a developer to do the wrong thing” and break the failure behavior / properties of the application / system as a whole when they make changes later.
· (must) Understands multi-threading, locking, and the problems you encounter in concurrent systems that share/modify distributed state so they can design / implement / code-review / lead others accordingly to avoid these issues
· (must) Is familiar with software development in C/C++ on Linux
o gcc, gdb, vi/emacs, POSIX APIs, Make.
o Can use man and other C API documentation to implement any of the components leveraging the many C based open-source libraries for Linux.
§ (must) Is able to personally implement the application components (write, test, debug, code)
§ (must) Is able to guide other developers in doing the same, mentoring them about the system as a whole
· (must) Is comfortable in the Unix shell
o Can write a bash script to automate interactions / maintenance tasks supporting the applications they create
o Can create a shell one-liner using grep, awk, sed, wc, uniq, sort, join, etc. to process / transform text files / inspect / summarize output
· (must) Basic Linux Self-Service skills
o Can acquire, download, (compile), and install a 3rd party utility, library, etc.
o Manage version conflicts and dependencies
o Package/Install/Configure the software they create or 3rd party tools they select to use
· (must) RDBMS fundamentals
o (must) Select (CTE, Nested Queries, JOINs, order, group by, limit)
o (must) Insert, Update, Delete
o (ideal) Views
o (ideal) Triggers
o (ideal) ACID / Transaction Semantics & Isolation Levels
· (nice to have) Understands tcp/udp/icmp/ip networking enough to understand how these pieces talk to each other, are monitored, and how the network needs to be setup
Lastly, as part of the interview cycle, there will be a coding test – Contact me for details.
Contact Information - (Resumes in Word Format to);
Gary Wright - President – Wright Associates – High Technology Recruiting Services
Phone - (508) 761-6354 - Email - GaryWright@WrightAssociates.org - WEB Site – www.wrightassociates.org
Posted by: "Gary Wright" <GaryWright@WrightAssociates.org>
Reply via web post | • | Reply to sender | • | Reply to group | • | Start a New Topic | • | Messages in this topic (1) |