030277-Senior Programmer / Developer - Engineer

C++ / Other Technical Qualifications

• 5+ years of Linux-centric C++ development experience (Windows / VC++ / .NET development is not considered relevant)

o Experience should be within the last ten years

o Experience should be primarily related to backend functionality and not graphical user interface (GUI) functionality (e.g. QT is not relevant to this position)

• Demonstrated ability to solve issues associated with large (1 million + lines of code) codebases

o Has worked on understanding the functionality of / reverse engineering large and poorly documented codebases

• Can apply concepts associated with clean coding, such as separation of concerns / encapsulation / loose coupling

• Demonstrated ability to solve difficult / ambiguous technical problems based on an appreciation of the tradeoffs involved in solution approach

• Stronger candidates will have implemented core product features as opposed to having simply tested features created by others

• Stronger candidates will have worked across domains within a system as opposed to on a small-subsystem within a larger system

• Stronger candidates will have dealt with challenges associated with unreliable external data providers

• Stronger candidates will be highly familiar with XML, XSLT

• Stronger candidates will have 2-3 years of experience with Java in addition to C++ experience

• Technical leadership (e.g. past Tech Lead roles) would be considered a plus, but business analysis leadership (e.g. requirements gathering) would not be

• We rate aptitude as more important than raw years of experience. Candidates with a strong educational background or relevant work experience at Fortune 200 companies will be favored over others. Companies that tend to produce these types of candidates are often in the area of Finance / Banking, Military Contracting, Bio-medical engineering, and/or Fundamental Research (e.g. Physics)

Distributed Systems Qualifications:

• Understands distributed systems fundamentals (for example, can explain tradeoffs associated with Eventual Consistency)

o Is aware of popular distributed systems and tools existing today (e.g. protobuf, Hadoop, MapReduce) and can explain their basic principles 

o Can describe and/or has implemented basic distributed systems components such as a load balancer, an authentication service, a caching engine, a storage service, a batch computation service, etc.

• Has worked on systems / in an environment wherein heterogenous systems communicate over an Enterprise Service or Message Bus

• Stronger candidates will demonstrate familiarity with the TCP/UDP protocols, as well as the rest of the network stack

• Stronger candidates will be able to describe in detail how he/she solved a problem associated with the performance characteristics of a distributed system

 Algorithms:

• Has solved difficult problems and/or written algorithms related to consensus and interprocess / intersystem communications

o Has worked out issues around clocks, out of order events, and/or linearizability

• Is familiar with computational complexity and common data structures used in performance-critical systems, such as spanning trees, counters, sets, maps

o Has familiarity with basic graph theory and graph search algorithms

o Stronger candidates will demonstrate familiarity with consensus algorithms (e.g. RAFT / PAXOS)

o Stronger candidates will have previously integrated with black-box "solution providers" (e.g. math solvers, neural nets, map/reduce jobs) and can describe design patterns associated with job success/failure

 o Stronger candidates will hold either a PhD or a Master's degree in computer science or related field, and will have completed distributed systems coursework

Responsible for programming and software development using various programming languages and related tools and frameworks, reviewing code written by other programmers, requirement gathering, bug fixing, testing, documenting and implementing software systems.  Experienced programmers are also responsible for interpreting architecture and design, code reviews, mentoring, guiding and monitoring programmers, ensuring adherence to programming and documentation policies, software development, testing and release.

 Required Skills and Experience:

You assign, coordinate, and review work and activities of programming personnel. Collaborate with computer manufacturers and other users to develop new programming methods. Supervise, train, mentor junior level programmers in programming and program coding. Represent team in project meetings.  Work with business and functional analysts, and software & solution architects in ensuring that programs and systems function as intended Supervise, mentor and manage large teams of programmers in one or more projects. Represent project teams in project/program meetings or in meetings with sponsor.  

• Qualifications:  6-12 years experience, Bachelor’s Degree.

• Must have experience in Software Engineering Techniques, Software Engineering Architecture, Software Engineering Lifecycle and Data Management.

• Should be proficient in Business Analysis, Business Knowledge, Software Engineering Leadership, Architecture Knowledge and Technical Solution Design.

About Capgemini

With more than 190,000 people, Capgemini is present in over 40 countries and celebrates its 50th Anniversary year in 2017.

A global leader in consulting, technology and outsourcing services, the Group reported 2016 global revenues of EUR 12.5 billion (about $13.8 billion USD at 2016 average rate).

Together with its clients, Capgemini creates and delivers business, technology and digital solutions that fit their needs, enabling them to achieve innovation and competitiveness.

A deeply multicultural organization, Capgemini has developed its own way of working, the Collaborative Business ExperienceTM, and draws on Rightshore®, its worldwide delivery model

Learn more about us at www.capgemini.com.

Capgemini is an Equal Opportunity Employer encouraging diversity in the workplace.

All qualified applicants will receive consideration for employment without regard to race, national origin, gender identity/expression, age, religion, disability, sexual orientation, genetics, veteran status, marital status or any other characteristic protected by law.

This is a general description of the Duties, Responsibilities and Qualifications required for this position.

Whenever necessary to provide individuals with disabilities an equal employment opportunity, Capgemini will consider reasonable accommodations that might involve varying job requirements and/or changing the way this job is performed, provided that such accommodations do not pose an undue hardship.

Responsibilities:

As part of the Capgemini Technology Services Group, this person will be responsible for the full systems lifecycle from requirements gathering through implementation of data analysis solutions.

This person will work closely with our clients and must demonstrate professional knowledge to ensure that the work products and deliverables are of the highest caliber to ensure client satisfaction.

This person will also apply subject matter expertise to identify, develop, and implement techniques to improve engagement productivity, increase efficiencies, mitigate risks, resolve issues, and optimize cost savings and efficiencies for each client.

Click the following link for more information on your rights as an Applicant: http://www.capgemini.com/resources/equal-employment-opportunity-is-the-law