Hiring Engineers

A company in Texas was trying to hire a C++ programmer. They were getting absolutely no candidates. So they asked a development forum for help in determining what they were doing wrong. Let’s see what actual developers told them.

Actually we can start with the ad this company placed. They were looking for a video software engineer. They require solid video experience. And they want with app or driver experience. There are some other details like full life cycle, high reliability, and multi threading. But you get the idea.

Most of the comments from developers was to list the salary being offered. Even if it was just $85k, the amount might get you some bites. You can get a lot of interest if you list the pay rate as $160k per year. One guy came out and said “everything has a price”.

Next you can reword your job listing copy. Change the job title, as a video engineer is rare. Or you could just list the bare minimum of requirements and weed out the candidates that come in.

Another tactic is to relax the requirements for the job to open the net wider. You could accept non-local candidates. You could also allow working remotely. Perhaps you could also consider C# or Java programmers who could pick up C++.

There might be a root problem preventing candidates from coming in. Good C++ developers are working on Wall Street or doing game development. C++ developers usually stay at their companies for a long time. It is rare to be able to catch them between jobs. Depending on how you look at it, C++ is either dying or becoming a niche market.

I personally love C++ development. For the last 10 years I have been coding mainly in C++. Although I am not tied to it, I prefer coding in C++. Unfortunately I am too far away from this particular job opportunity.

Model Driven Theory Wrap Up

Some time ago I read a whole book about Model Driven Software Development. This seemed like a hot topic. However I found the subject a bit boring. There were some key points I picked up from the book. I share them here today.

Define your model using UML. Then you should automatically generate between 60 and 80 percent of your code. Keep the this auto gen code separate from developer produced code.

Here are the four meta levels for Model Driven Design: M0 is the instance, M1 is the model, M2 is the meta model, and M3 is the meta meta model. Look at that for a second? How can you not LOL at meta meta model?

How do you know whether you have a good architecture? First it meets all of the requirements. It allows future growth of the system. It is clear and succinct. Finally you have good supporting documentation. Hopefully the next theoretical book I read will be more interesting. I tried reading some of the classic more recently. They were even more boring. I could not finish them.

Technical Debt Solutions

Schedule pressure often results in developers hacking to get the job done quickly. Unfortunately these hacks become the production code and do not get fixed. Over time this can make a legacy product difficult to work with. We call this Technical Debt. The best fix to this problem is to not resort to hacking. But tight schedules are a part of life. And bad code gets put into production. Once the damage is done, we need to regroup. Otherwise legacy systems will become impossible to maintain.

Here is a small process that can be used to address Technical Debt. Identify where you have the debt. Construct a business case to justify working this issue. Fix the debt. Rinse, lather, and repeat. The process sounds simple. But it might be hard to sell the business case. You should therefore try to choose the debt where you will get the biggest bang for your buck. It is also best to get team consensus before moving forward with a plan to remove the debt.

There should be a main point of contact for your technical debt reduction program. Here are some other tips to sell the idea. Produce tangible examples of how the debt affects the business. Make use of analogies to communicate the effects. It is easy to get into debt with software systems. Just like credit cards, it will take a big effort to get out of debt.