Dale has 20+ years of full-time, hands-on experience in software development and architecture. He started his career at Pearson VUE, the leading provider of global-based testing solutions, where he held positions of increasing responsibility, from Software Engineer, to Senior Engineering Lead, and Senior Software Product Architect. As a Senior Consultant and Technical Coach, Dale’s clients have included companies such as IBM, Visa, Allstate, and Johnson & Johnson.
Since he joined Codementor, Dale has provided outstanding software development help to other developers, receiving 5 star reviews for all of his sessions.
Dale is part of CodementorX, our network of top software engineers available for hire.
Finding solutions to the most difficult problems.
I’ve been fortunate enough to have worked on so many exciting projects it’s hard to narrow it down to just one. One that stands out is creating the Computer Adaptive Testing algorithm for the nurses’ licensure exam (AKA: NCLEX RN and LPN exam).
Computer adaptive tests are highly complex. The exam delivery system “adapts” the exam to the candidate’s ability by delivering more difficult questions when the candidate answers a question correctly, and easier questions when the candidate answers incorrectly. The exam delivery system uses a variety of statistical techniques to estimate the candidate’s mastery level of the content based on how they have answered previous questions, then uses another set of computations to determine which question to deliver next.
Of course, there is no room for error. If there is an incorrect calculation anywhere in the system, there is the potential that a qualified candidate would be denied their nursing license or that an unqualified candidate would receive their nursing license.
I’m very proud of this work because this system helps people enter into an exciting professional career where they in turn help people through some of the most difficult challenges in their life. Someday a nurse that used this software to get her license will be taking care of one of my loved ones, or me, and I can be sure they have mastered the material and will be good at their job.
While I was working in Shanghai, China for Boost Agile, the entire company got together for a strategy meeting. At the time the entire company was four people, including me.
The founder who was funding the entire company didn’t dictate the strategic plan for the company and ask us to execute it. Instead, he asked us to define the strategic plan – all four of us were equal and everyone’s ideas were given equal weight. It was the first time I worked with a truly amazing facilitator.
Ever since that day I try my best make sure everyone on the team is equal and everyone has a chance to give their input. If someone is sitting silently in the meeting I make sure to ask them about what they think. The entire team is stronger if everyone has contributed and feels a sense of ownership in the direction of the team.
I was in 7th grade when I started programming in BASIC on a TRS-80. It took a double-sided floppy disk, and to boot and you had to flip the disk over halfway through the boot!
I would spend all of my spare time writing programs in a notebook and try to type them in as quickly as possible once I got into class. One time I spent most of the weekend writing hundreds of lines of code to create a menu list for the user to select from one of four different actions when the program started. I worked so hard on it! I went to class on Monday, showed it to my Teacher and told him what I was trying to do. He then showed how to do the same thing in 8 lines of code! Needless to say, I was hooked on code reviews from that moment!
I make heavy use of the inspections and automated formatting in IntelliJ Idea from JetBrains. I find Idea most useful because I write code in several different languages and having a polyglot IDE is nice.
I hate to admit it, but I also really like Visual Studio Code. I never thought my MacBook Pro would have anything named “Visual Studio” installed. If you are using Atom, consider giving Visual Studio Code a try.
Of course, all of my work is done on a maxed-out MacBook Pro.
Programming is not about the language, technology, architecture, process, or coding style. The only thing that matters is providing value to the customer at a profit.
Early on in my career, I thought I had to have the the code formatted just so, and that code needed to implement the perfect architecture to accommodate every possible future enhancement.
As I have gained more experience, I now believe that the simplest possible solution implemented with the least amount of logic, no assumptions about future enhancements, and thorough testing is the best way to build software. Using this approach I am able to build functional software in days or weeks rather than months or years.
There are several companies that organize international working trips for software developers, I would travel with one or more of those companies for a few years.
Learning about and writing software is one of my hobbies, and I have written software nearly every day for more than 20 years, so being able to travel to exotic locations and hang out with other software developers sounds like the perfect life to me, although I doubt my wife would agree. =)
As a kid I created a poker game, and several other simple programs, on the TRS-80.
As an young adult, I started a limousine service. When the company grew from 1 to 11 limousines, I needed some software to help me run my business. But commercially available software was at least $10,000 USD and didn’t work well.
I remembered back to my time on the TRS-80 and thought “I’ll just build it myself! How hard could it be?” Needless to say, it took me several years, but I finally created software that ran 100% of my limousine business. Eventually, my competitors noticed the nice reservation manifests I would fax over when we would trade work and started asking if the software was for sale. “Of course it is!” was my response! So in 1994 I released my first commercial software application. Some companies are still using it today despite the fact that I officially retired support for it in 2000.
When I was around 10 years old, my dad bought me a motorcycle. The first thing he told me was “Don’t take it apart!” Of course, the first chance I got, I took it apart. Taking it apart was easy. Getting it back together was difficult. When my dad came home from work and hit the garage door opener, there I was in the middle of the garage, looking guilty, with motorcycle parts covering the entire garage floor. I told him I couldn’t remember how to put it back together. He looked at the mess, said “figure it out,” and went in the house.
“Figure it out” was something I heard often while growing up. It’s not so much advice, but a mindset. If you don’t know how to do something, don’t give up, just teach yourself how to do it.
I apply the same “figure it out” mindset to programming. When it comes to software and technology there are a limitless number of things to learn, and, thanks to my dad, I have the ability to “figure out” new things as they come along.
My daughter, Amanda, who is creative, fiercely independent, and experiencing the adventure of living abroad too. She sold most of her worldly possessions and moved by herself to a small island north of Panama City, Panama.
I’m also proud of my ability to overcome obstacles, whether personal or professional. I have a “learning mindset” and try to teach others to the value of persistence and learning from mistakes.