I have always been passionate about the art of software engineering. While pursuing my undergraduate and graduate degrees at Drexel, I was also working as a graduate research assistant, which allowed me to put my knowledge into practice in a complex and stimulating work environment.
Since then, I’ve worked with numerous companies, each pushing me to grow not only as a software engineer, but as a team member and a leader.
I have been fortunate enough in the last 15 years, to have worked with some very talented people, from whom I’ve learned valuable skills, such as discipline, patience, process and of course a hack or two.
I am excited about my next opportunity and look forward to seeing what interesting challenges it will present.
Engineering Director, Search @ Working on implementing an open source geocoder solution, using open data. From January 2015 to Present (1 year) Senior Software Architect @ Hired to implement several high-performance services in C/C++. Once that work was completed, I switched focus to node.js and web API implementation. There was also sporadic PHP work, because most of the existing code-base was written in PHP. Through all of my projects, I heavily employed Test Driven Development, unit testing, and acceptance testing. I mentored and encouraged others to learn new software engineering concepts, tools, and technologies. I also put a lot of emphasis on company culture and strive to contribute to a collaborative and inclusive environment by organizing and presenting in various clubs and MeetUps.
- Developed high-performance services in C/C++ such as
> real-time fuzzy image comparison service using OpenCV
> real-time geolocation data lookup service
- Implemented internal and external API servers in node.js, using technologies/protocols such as
> mqtt
> socket-io
> RPC
> REST
> express.js / restify.js
- Setup internal npm server to manage proprietary node.js modules
- Contributed to API implementation in PHP
- Implemented consumers for RabbitMQ in C/C++, PHP, Python, and node.js
- Employed various data storage solutions using combinations of the following
> redis
> postgres
> mongoDB
> couchDB
> memcached
- Used Vagrant and Chef to create virtual environments for use throughout the development process
- Continuously implemented and pushed for unit testing and test driven development, as well as acceptance/integration testing
- Testing frameworks/tools used regularly:
> cucumber
> mocha
> should
> phpunit
- Other technologies used regularly:
> github
> jenkins
> gerrit
> rundeck, sensu
> newrelic
> graphite
- Organized and ran Book Club, which focused on IT books related to the craft of Software Engineering
- Co-organized and presented at the Bucks County Tech MeetUp (http://www.meetup.com/Bucks-County-Tech/)
- Company sponsored training:
> iOS
> Hadoop
> Ideation From February 2012 to December 2014 (2 years 11 months) Consultant @ Developed a digital image processing engine written in C++. Developed algorithms for image segmentation, text extraction, image preprocessing for OCR, feature extraction and layout analysis. Worked with open source packages, such as OpenCV and Tesseract. Evaluated and integrated COTS OCR solutions. Research in-house OCR engine development. Wrote utilities in C#. Wrote custom unit and acceptance test frameworks in C++ for native code. Used C# Test Project framework for .NET code. Employed Agile development methodology, pair programming, and test driven development. From 2011 to February 2012 (1 year) Senior Software Architect @ Develop MEMs sensor data analysis SDK written in C++, as well as SDK testing frameworks and demo tools written in C#. Develop mobile applications on Symbian, Android, WinMob, MAEMO (Linux) platforms.
Lead requirement gathering, API design, GUI design, software architecture design and implementation. Wrote end-user documentation and developer guides. Employ Agile development methodology and test driven development. Manage small offshore teams and coordinated efforts with internal resources. Create client training materials and conducted client training. Represent the company at trade shows and interfaced directly with customers as the lead technical point of contact. Train and mentored junior developers. From May 2007 to February 2012 (4 years 10 months) Senior Software Engineer @ Developed an Orbit Determination package, which is part of “Satellite Tool Kit” software for the astrophysics community. Development was done using Visual C++ and a strict object oriented software architecture, using a variety of COM components and technologies. Was responsible for GUI design and development, using Visual C++, MFC, C++ .NET. Implemented static and real-time reporting, graphing and data archiving functionalities, using XML and COTS packages such as Crystal Reports and ChartFX. Used the following development tools: Perforce, TeamTrack, Visual Studio 2005, Visio, and Rational Suite. Led a company-wide effort to design and employ a new development methodology. Successfully released several high-visibility/high-priority projects. From 2002 to 2006 (4 years) Software Engineer @ Worked on a National Weather Service contract, developing a data acquisition and analysis application. Developed critical real-time software using Visual C++, MFC and C following the rapid development plan. Used development environment tools such as Rational Rose, VISIO, and Visual SourceSafe. Software was developed primarily for Windows 2000. Responsible for formal software unit design, implementation, documentation, and review. Performed formal software debugging and testing. Developed integration testing documentation and procedures. From 2001 to 2002 (1 year) Graduate Research Assistant in SE @ Developed object oriented software analysis and evaluation tools using Java, Prolog, C++/C and Unix shell scripting. Developed all tools as stand-alone, cross-platform applications. Focused primarily on research in the area of improving the software engineering process. Prepared materials for and led Reverse Engineering and Robotics training workshops for a DoD contract. As a teaching assistant, created tutoring materials, and designed / implemented assignments. Led student training lab sessions. Consulted in C/C++, JAVA, Java-Script, HTML. Evaluated student performance and graded homework and lab assignments. From 1998 to 2002 (4 years) Software Engineer @ Developed real-time software applications using Visual C++, MFC and C, as well as Visual Basic. Used development environment tools such as Rational Rose, VISIO, PVCS. Applications were made for Windows95/98/NT/2000 as well as for Palm OS. Some applications made use of Global Position Satellite receivers. Responsible for formal software design documentation and review. Performed formal software debugging and testing. From 2000 to 2001 (1 year) Software Engineer @ Developed critical real-time software applications using Visual C++ and MFC. Database design and implementation using MFC and ORACLE. Used MS Development Environment tools such as Visual Source Safe, Project, Visual Studio. Involved in the entire software development cycle of a large system: Requirements, Software Design, Implementation, Debugging, and Testing. Responsible for formal software design documentation and review. Performed software testing and debugging. From 1999 to 2000 (1 year)
Masters, Computer Science, Software Engineering @ Drexel University From 1997 to 2001 Master's degree in Software Engineering, Software Engineering @ Drexel University From 1997 to 2001 Diana Shkolnikov is skilled in: Agile Methodologies, Pair programming, Test Driven Development, API Design, Software Development, User Interface Design, Formal Documentaiton, Requirements garthering, Technical Training and Mentoring, C++, C#, .NET, GUI Design, QA, RabbitMQ