Staff Systems Architect
Medidata: a great place to work; a great place to stay
Medidata is leading the digital transformation of life sciences with the world's most-used platform for clinical development, commercial and real-world data. Powered by artificial intelligence and delivered by #1 ranked industry experts, the Intelligent Platform for Life Sciences helps pharmaceutical, biotech, medical device companies and academic researchers accelerate value, minimize risk and optimize outcomes. Medidata serves more than 1,000 customers and partners worldwide and empowers more than 100,000 certified users every day to create hope for millions of patients. Discover the future of life sciences: www.mdsol.com
We know that diverse teams win and are fully committed to selecting leaders and employees that represent the markets in which we operate. We are still led by our Co-founders, Tarek Sherif and Glen de Vries, and have global operations in US, Europe and Asia with over 2000 employees.
Medidata Architects are expected to provide technical leadership in the design and development of the Medidata Platform product, focusing on areas that span different subsystems. An Architect is expected to act as a “super developer” in providing technical direction to the engineers and development managers in the Engineering team.
- Lead the design and development of cross-system functionality, such as designing services for patient management.
- Lead the design and development of individual subsystems with Medidata Platform. This includes screen and report layouts, processing logic and database design.
- Provide diagnostic support and bug fixing for existing Medidata Platform releases
- Follow the Software Development Life Cycle to ensure all software is designed and developed in a controlled, validated environment
- Lead necessary improvements in software development methodologies, such as changes in coding standards
- Maintains a blog in which personal insights and thoughts on programming are shared
- Will do basic database administration, performance optimization, index optimization, write advanced select queries, able to replace cursor usage with relational sql, understands how data is stored internally, understands how indexes are stored internally, understands how databases can be mirrored, replicated etc. Understands how the two phase commit works
- Codes to detect possible exception before, maintain consistent exception handling strategy in all layers of code, come up with guidelines on exception handling for entire system.
- Explore new component technologies and new versions of existing technologies, and recommend how and when those technologies can be incorporated into Medidata Platform
- Liaise with Quality Assurance personnel who are developing test cases for the new system functionality
- A seasoned, experienced professional with a full understanding of area of specialization; resolves a wide range of issues in creative ways.
- Use of appropriate data structures and algorithms and comes up with generic/object-oriented code that encapsulate aspects of the problem that are subject to change
- Able to visualize and design complex systems with multiple product lines and integrations with external systems. Also should be able to design operations support systems like monitoring, reporting, fail overs etc
- Able to understand and communicate thoughts/design/ideas/specs in a unambiguous manner and adjusts communication as per the context
- File has license header, summary, well commented, consistent white space usage. The file should look beautiful
- Code organization at a physical level closely matches design and looking at file names and folder distribution provides insights into design
- Physical layout of source tree matches logical hierarchy and organization. The directory names and organization provide insights into the design of the system
- Code assumptions are verified using asserts, code flows naturally - no deep nesting of conditionals or methods
- Has own library to help with defensive coding, writes unit tests that simulate faults
- Has written custom macros
- Has written libraries that sit on top of the API to simplify frequently used tasks and to fill in gaps in the API
- Author of framework
- Able to suggest better alternatives and flows to given requirements based on experience
- Has written and published reusable code
- Concurrent (Erlang, Oz) and Logic (Prolog)
- Domain expert. Has designed and implemented several products/solutions in the domain. Well versed with standard terms, protocols used in the domain
- Has actually written tools and scripts, added bonus if they've been published
- Concurrent (Erlang, Oz) and Logic (Prolog)
- Has implemented multiple big features in the codebase and can easily visualize the changes required for most features or bug fixes
- Has played with the previews and has actually built something with it and as a bonus shared that with everyone else
- Has written tools to enhance or provide information on platform internals. For e.g. disassemblers, decompilers, debuggers etc
- Structure and Interpretation of Computer Programs, Concepts Techniques, Models of Computer Programming, Art of Computer Programming, Database systems , by C. J Date, Thinking Forth, Little Schemer
- Knowledge of distributed VCS systems. Has tried out Bzr/Mercurial/Darcs/Git
- Can setup a script to build the system and also documentation, installers, generate release notes and tag the code in source control
- Understands and is able to setup automated functional, load/performance and UI tests
- Knowledge of advanced data structures like B-trees, binomial and fibonacci heaps, AVL/Red Black trees, Splay Trees, Skip Lists, tries etc
- Able to recognize and code dynamic programming solutions, good knowledge of graph algorithms, good knowledge of numerical computation algorithms, able to identify NP problems etc.
- Understands the entire programming stack, hardware (CPU + Memory + Cache + Interrupts + microcode), binary code, assembly, static and dynamic linking, compilation, interpretation, JIT compilation, garbage collection, heap, stack, memory addressing.
Your Education & Experience:
- Four-year college degree preferably in computer science, information systems or life sciences
- Outstanding technical abilities
- Good verbal and written skills
- Ability to produce quality software under tight time constraints
- 5+ years experience in software development environment
- 4+ years of coding experience
Medidata is making a real difference in the lives of patients everywhere by accelerating critical drug and medical device development, enabling life-saving drugs and medical devices to get to market faster. Our products sit at the convergence of the Technology and Life Sciences industries, one of most exciting areas for global innovation. Nine of the top 10 best-selling drugs in 2017 were developed on the Medidata platform.
Medidata’s solutions have powered over 14,000 clinical trials giving us the largest collection of clinical trial data in the world. With this asset, we pioneer innovative, advanced applications and intelligent data analytics, bringing an unmatched level of quality and efficiency to clinical trials enabling treatments to reach waiting patients sooner.
Medidata Solutions, Inc. is an Equal Opportunity Employer. Medidata Solutions provides equal employment opportunities to all employees and applicants for employment without regard to race, color, religion, gender, sexual orientation, gender identity, national origin, age, disability status, protected veteran status, or any other characteristic protected by the law. Medidata Solutions complies with applicable state and local laws governing non-discrimination in employment in every location in which the company has facilities.