Generalist, full-stack software engineer with experience ranging from embedded systems to mobile and web development. I love working with iOS and all modern web technologies, especially React, ReactNative and any other modern Javascript frameworks. I also love working with Firebase, AWS, and (occasionally) on Ruby on Rails. In the end, however, I love to build products that are used by people. Continuously working on the portfolio, please check my code at github.com/mczenko. With my wife, we run artbea photography: www.artbea.eu.
Full Stack Software Engineer (Embedded) @ De-risking phase of a project. Responsible for all software engineering works collaborating with system architects and electrical engineers. The system developed involves two MCU architectures, ARM and AVR XMEGA, and a number of accompanying technologies including but not limited to (subject to NDA) USB Host Driver on STM32, 802.15.4, and ThreadX embedded operating system.
The following deliverables can be identified:
• Supporting research experiments through providing adequate instrumentation: a web based, distributed, responsive-design facilitation system based on Ruby on Rails and Web Socket technology plus supporting firmware for two embedded micro-controllers. Well-tested and documented.
• Documentation of the involved technologies (programming model) to be used as a knowledge base for the product development team.
• Full-stack test automation. Providing a complete continuous integration infrastructure around the involved system components including automated builds, automated developer facing tests (unit testing), and automated customer facing tests (end-to-end testing). This forms a ready-to-use infrastructure for the product-development phase and provides valuable insights on the impact of a number of quality practices on the delivery schedule.
• Formulation of the coding conventions and rational behind selected testing practices.
Technology:
AVR XMEGA, ARM, 802.15.4, USB Host, USART, SPI, ThreadX, arm-gcc toolchain, avr-gcc, make, C/C++/Ruby/Python/Javascript, Ruby on Rails on Ubuntu (through Virtualization), Python virtualenv, Ruby Version Manager (rvm), Behave (Python End-to-End Testing), Cucumber (End-to-End testing for Ruby on Rails), CppUTest (Unit Testing and Mocking Framework for C and C++ languages), TeamCity Continuous Integration Server, Markdown for documentation, Git Version Control system, Jira Agile for planning and tracking. IDEs involved: Eclipse, Atmel Studio, IntelliJ IDEA, Sublime Text. From July 2014 to Present (1 year 6 months) Eindhoven Area, NetherlandsFull Stack Engineer @ TMC is a proven partner of your business in the areas of embedded systems, mobile solutions, mechanics, physics, and more. We are the people who know their job, but we make a difference because we truly care for your success. Our entrepreneurial model naturally stimulates the customer-orientation making your business our business. You can learn more about TMC at http://tmcporch.com.
As a member of TMC Embedded I can personally help you in a number of areas ranging from embedded systems to mobile solutions (including but not limited to native iOS app design, Ruby on Rails, Google App Engine, ASP.NET). I have a strong product and quality orientation. I am experienced practitioner of (Acceptance) Test Driven Development and Continuous Integration, and I promote their balanced adoption. I care about your product, and I will use appropriate technology, techniques, and methodologies to deliver it.
As part of your business I will not only support all technical activities, but I will serve you with my broad experience in empirical process control. I have proven expertise in empirical frameworks including Scrum and eXtreme Programming and I will help support your business in adopting empirical thinking in your process. Why does it matter for you? By employing a more empirical process in your business, I will help you become more responsive to your product requirements. I will help you secure a continuous delivery and I will improve its predictability. In a rapidly changing environment we need to learn how to accept uncertainty starting "being in control" by the means of frequent inspection and adaptation. As an experienced quality-oriented engineer, I can help you go further than a shallow, ritual-based Scrum adoption. Together we can build process in which we act based on facts: we measure, we analyse, and we continuously adapt to reality. If it is going to be agile, let it be Agile Engineering. From May 2014 to Present (1 year 8 months) Eindhoven Area, NetherlandsOwner @ Red Green Refactor helps organisations, teams, and individuals in Agile adoption. We offer a number of both public and on-site trainings followed by embedded coaching. We assist organisations with hiring, empowerment, engineering practices, and contracting.
Creating training and coaching materials, technology research to remain up-to-date with customer requirements, training delivery, on-site coaching. One to three day trainings on Scrum and eXtreme Programming. On-site, embedded coaching and training. Helping organizations to embrace quality practices: Acceptance Test Driven Development, Test Driven Development, Continuous Integration in the environments including Ruby on Rails, ASP.NET, Java Spring, Python, Google App Engine (Python), iOS.
Delivery: Helping our customers to understand Scrum framework and - more importantly - how to benefit from it. In particular, our customers learn about Scrum roles and their responsibilities, the role of the management in an agile organization, how to plan in an agile way effectively, how to improve engineering practices, and how to avoid common mistakes when adopting agile. From February 2011 to Present (4 years 11 months) Owner @ Everyday Productive delivers productivity software for the Apple platform. From February 2011 to Present (4 years 11 months) Full stack engineer @ Working on iOS/Web Development Portfolio for the TMC Mobile Software engineering group at TMC.
I created reference code and examples for the iOS and Backend development in Ruby on Rails with examples of developer facing and customer facing tests.
iOS:
Using Quick Look framework of iOS in order to preview PDF documents. The project uses UITableView to show available pdf documents and a Facebook-like side menu. It demonstrates the use of the following iOS APIs:
- UITableView with a simple custom table view cell displaying an image, and two labels,
- Using xcassets to provide images for table view cells through [UIImage imageNamed:] class method.
- Using QuickLook framework to preview PDF documents.
- Using custom indexed subscripting.
- Using view containment to implement a Facebook-like side menu.
- Using Pan Gesture Recognizer to implement Pan and Swipe gestures for the side menu.
- Handling conflicting gestures recognizers: the side menu uses UIPanGestureRecognizer to implement side menu. UITableView that we use to present the list of PDF documents in the central panel uses its own pan gesture for scrolling.
- Creating smooth animations for a natural user experience when panning and swiping the menu.
Ruby on Rails Backend:
Besides providing a bootstrap code for a simple backend it additionally demonstrates using Cucumber for end-to-end testing, json_spec for testing JSON content, and Factory Girl for a more convenient testing of the data models. From May 2014 to June 2014 (2 months) Speaker @ I presented "Planning for uncertainty" and I run a workshop for Acceptance Test Driven Development. From September 2013 to September 2013 (1 month) Warsaw, Masovian District, PolandSpeaker @ I presented "Self-Organisation and its influence on the organisational reality." From October 2012 to October 2012 (1 month) Warsaw, Masovian District, PolandSpeaker @ Presented "Don't Start with Kanban". This is the extended version of my talk at Agile By Example, Warsaw 2011. From October 2011 to October 2011 (1 month) Speaker @ I presented "Don't Start With Kanban". From September 2011 to September 2011 (1 month) Warsaw, Masovian District, PolandSenior Software Engineer @ Sioux is a leading detaching company in the Netherlands with a number of internal products in the development centre in Eindhoven. TSR was one of such project. Project was at the very beginning, no infrastructure, fresh team.
Marcin Czenko was responsible for standard development activities in an agile team. Besides standard responsibilities of an agile (SCRUM/XP) developer, Marcin’s responsibilities were: (1) choosing appropriate technologies and tools for the development environment, configuration management system, build and continuous integration system and quality engineering.
Having broad experience Linux development and architecture Marcin, with the help of other engineers setup a complete continuous integration system in the TSR project. An important contribution of Marcin in this field were setting up continuous integration server (Cruise Control, then Hudson) and promoting Test Driven Development among other developers. The most important contribution was setting up an automated acceptance test framework based on Cucumber and Ruby and integrating it with Continuous Integration system. Marcin Czenko also actively helped in improving the agile planning process. He also introduced Jira/ GreenHopper/Confluence system suite: first to the TSR project and then promoted it to the whole development centre.
Marcin’s acceptance testing framework shows an efficient way of managing external quality (as opposed to internal quality which is related to unit and integration tests). Marcin’s framework was received with enthusiasm in the whole Development Centrum. In TSR project it helped to keep the system in a known condition and helped catching a number of hard to observe and detect defects. Introduction of Jira/Greenhopper/Confluence is visible effect of Marcin’s influence on the planning process. From August 2010 to January 2011 (6 months) Speaker @ I facilitated a boot camp session: "Improve your planning by not estimating." From November 2010 to November 2010 (1 month) Senior Software Engineer @ Marcin Czenko joined Motorola as a senior software engineer with a solid experience in Scrum and eXtreme programming. His experience in Scrum/ XP and his enthusiasm for lean methodologies were recognised quickly and he was allowed to take a number of responsibilities for introducing lean principles first in his own team and later at the department level. He was responsible for the following tasks: (1) active development so that he could evaluate the current practices and propose improvements (2) being a SCRUM/XP mentor for his own and other teams (3) define the right abstraction level for the software requirements. Marcin participated in active development what helped him to understand the development environment and the existing constraints. After a short time he was able to propose several modifications to the existing engineering practices from which a new way of writing unit tests was the most important. Marcin Czenko also identified a number of recommendations for the proper use of Clearcase as an agile lightweight software version control system. This evaluation was necessary to reinforce the application of Test Driven Development and to facilitate successful continuous integration. In parallel Marcin Czenko was working on finding the right abstraction level for the software requirements (he became the owner of the task). He was doing this by mentoring the planning meetings (both at the release and the iteration level) in two teams and by giving a number of presentations on planning, continuous integration, and testing on several occasions. New testing strategy has been initiated in two teams. A set of guidance rules was produced and next actions were defined to enable further progress. From January 2010 to July 2010 (7 months) Software Designer @ Philips MiPlaza is part of Philips Research. It delivers software engineering services to both internal and external parties. Software Engineering Services is an advanced XP and Scrum practitioner.
Marcin joined Philips Software Engineering Services (SES) as a software designer shortly after finishing his Ph.D. study. He wanted to reinforce his embedded competences and also acquire first-class experience in working in an agile way (Philips SES is known from the experience in the agile software development). Having solid background in embedded systems, Marcin joined a highly embedded project. The aim of the project was to build a new generation automatic cardiopulmonary resuscitation (ACPR) device (class III medical device). The project goals required cooperation of teams from several disciplines: cardiologists and medical staff, mechatronics, electronics, and software engineering. Because the software team was relatively small (between 2-4 members), all the team members were involved in most of the activities starting from risk/hazard analysis and finishing on maintaining the build system.
Being in an agile organisation, Marcin actively participated in many agile initiatives from which the most important was “Boosting Agile Practices” which was a series of flyers emphasising the dos and don’ts of agile practices. From January 2009 to December 2009 (1 year) Speaker @ Together with Martijn Gelens I presented our experiences with Agile Test Driven Development of Embedded Systems. Our presentation covered general test strategy, hardware design issue, and tooling support for TDD in Embedded Systems. Wim van de Goor from Philips SES MiPlaza was our advisor on Agile Methods. From October 2009 to October 2009 (1 month) Ph.D. Student @ Marcin Czenko was a Ph.D. student in the Distributed and Embedded Security group at the University of Twente (The Netherlands). My supervisors were Prof. Sandro Etalle (Eindhoven University of Technology and University of Twente) and Prof. Pieter Hartel (University of Twente). I have publicly defended my dissertation on 26th of June 2009. My thesis concerns distributed trust management with focus on the credential distribution and discovery. In the thesis we design and implement Lookup and Inference Algorithm (LIAR) which we proof to be correct and complete with respect to the standard theoretical logic programming semantics. There is work in progress on the web-based implementation of LIAR. From November 2004 to 2008 (4 years)
Marcin Czenko is skilled in: Continuous Integration, Extreme Programming, Scrum, TDD, Agile, Embedded Systems, Kanban, Agile Methodologies, Software Development, Software Design, Software Engineering, Configuration Management, Linux, Unit Testing, Ruby
Websites:
https://redgreenrefactor.eu,
http://everydayproductive.com