I live in ’s-Hertogenbosch, The Netherlands.
At my first job, me and about ten co-workers had to work with very complex, slow and annoying ERP software. To avoid working with the terrible software, first I almost completely automated my own job, and then I continued automating stuff for my co-workers. After a while it saved them hours of work each day, and literally made them happy and enjoy their work more.
Ever since it has been my goal to improve the lives of those working with enterprise software. I cannot change the managers who buy this kind of software, but I can change the software itself.
And that’s exactly what I’ve been doing the past decade; building intuitive, efficient and pleasant software for customers who are using an SAP system for their business.
Ofcourse, like any other enthusiastic developer, I have a bunch of side projects as well, some of which you can find published on GitHub, others which you can buy in the App Store, and most of them somewhere in my own /dev folder.
Things I’ve built
- Wine Journal
- Wine Journal allows you to store your entire wine collection and all wines you have ever tasted.
- The Enigma app allows you to communicate encrypted messages with people who also own the Enigma app.
- In-house app used to remotely access the corporate passwords database through a RESTful API.
- In-house app used to maintain your personal work schedule and submit it to the corporate resource planning system.
- In-house app which displays an employee’s current leave quota, retrieved from an SAP CATS system.
- Conference Scanner
- In-house app which allowed the salespeople to scan QR codes on the conference badges of the people they’ve spoken with, saving their contact details along with additional info such as follow-up actions and conversation notes.
- ABAP Bitwise Operations and Shifts
- ABAP CSV Parser
- ABAP JSON Parser and Serializer
- ABAP SAP Application Log Service
- ABAP RESTful Web Services
- ABAP ports of common Java classes
- ABAP XML Parser
- Objective-C SAP client for RESTful Web Services
The ABAP frameworks are available in this repo.
- LemonStand Webshop
- Module which enables full integration with SAP
- Custom B2B theme
- Web application which reports similar information like Javadoc does. The big difference is ABAPdoc has a search engine, and shows „realtime” information instead of generated HTML documents. Can be installed on any SAP system, uses a custom built RESTful API to retrieve the information.
The languages I know
The more languages you know, the easier it becomes to learn new ones. Unless you start with ABAP, then you’re doomed ;)
Joking aside, I try to learn a new language each year. It helps me broaden my thinking by exposing myself to new concepts and approaches to solving problems. Early in my career, after spending two years writing mostly ABAP code, I switched to writing mostly Java code for two years. The experience completely changed the way I wrote my ABAP programs. Currently I’m writing mostly Objective-C code, and it’s changing the way I approach things all over again. These are the languages I’ve learned so far:
How I work
Besides building new things from scratch, I’ve spent quite some time maintaining existing software, written by other people. If there’s one thing I’ve learned doing that, it’s this: there is absolutely no excuse for writing low quality, quick and messy code. It will make the lives of those who have to maintain your code miserable, but even worse, it will make maintaining your software very expensive. Customers will be forced to waste a lot of money on maintenance, which they could have spent on letting us build fancy new stuff instead.
Building high quality software is really hard and requires a lot of discipline. Luckily a lot of smart people have thought of several different ways to make things easier. I have embraced the following approaches/methodologies/concepts to help me make better software:
What I’ve read
Like many other developers, I spend a lot of time reading. There is obviously a huge amount of extremely valueable information to be found on blogs, community sites such as SO, forums, IRC channels, etc. But sometimes a book is the best way to really learn to understand something. Here’s a list of books which have taught me lots of interesting things:
- Domain-Driven Design Eric Evans
- The Art of Agile Development Shane Warden, James Shore
- Code Complete Steve McConnell
- The Mythical Man-Month 2nd Edition Frederick P. Brooks
- Patterns of Enterprise Application Architecture Martin Fowler
- Leading Change John P. Kotter
- Rework Jason Fried, David Heinemeier Hansson
- Getting Real Jason Fried, Heinemeier David Hansson, Matthew Linderman
- Start with Why Simon Sinek
- The Core iOS 6 Developer’s Cookbook Erica Sadun
- Cocoa Programming Daniel H. Steinberg
- Restful Web Services Sam Ruby
- Head First Design Patterns Eric Freeman, Elisabeth Robson, Bert Bates, Kathy Sierra
- Head First Object-Oriented Analysis and Design Brett McLaughlin, Gary Pollice, David West
- Head First Servlets and JSP, 2nd Edition Bryan Basham, Kathy Sierra, Bert Bates
- Head First Java, 2nd Edition Kathy Sierra, Bert Bates
- Enhancing the Quality of ABAP Development Meijs, Krouwels, Heuvelmans, Sommen
What I’ve taught
I’m a big fan of sharing knowledge. I’ve worked as „coach” and team lead, teaching my co-workers all kinds of things, ranging from very basic stuff like syntax, to entire OO programming courses. Here are some of the most recent things I’ve done:
- Domain-Driven Design with ABAP
- This was a two-day course for groups of developers with decent OOAD skills. Among the topics was a recap of the SOLID principles, explanation of the DDD approach, and designing and building an application using this approach. Ever since this course, DDD has become the company-wide approach to software engineering.
- High Quality Software Engineering
- For a developer community day I’ve been asked to talk about the process of building high quality software. I discussed topics such as how to deal with constantly changing specs, working as an agile team, DDD, OOAD, extreme programming, and code quality benchmarks.
- Agile Software Development (for ABAP teams)
- This presentation was an explanation of the agile manifesto for a non-technical audience.
- Web & Mobile API’s in SAP
- A developer workshop explaining how to efficiently build a maintainable RESTful web API on SAP systems.
- Regular Expressions
- A developer workshop explaining the basics of regular expressions along with a bunch of practical examples and exercises.