Team Lead and Code Review | Festpass

We’ve worked with this company for years. At a certain point, it made sense for them to bring some of their work in-house, but we continue to support their success by providing leadership, code review, and general transition services.

We helped oversee and review a transition from Brightcove video services to raw AWS transcoding services. Although transitioning both a team and a large section of functionality is a challenge, we helped increase team accountability and ensure a final working solution.

Introducing Website Maintenance Plans

I’m excited to announce our new website maintenance and support contracts!

Over several years of working with many technical and business leaders, I’ve found that codebases that get too stale become increasingly risky. 

Fresh Code Is Better

By “stale” I mean codebases where no one does any of the following things regularly: builds, updates, tests, audits, fixes, or add features. Your codebase needs regular maintenance and support to ensure it can overcome the risks of being live on the internet. 

Most business leaders think of the internet as a great opportunity for growth, which it is, but there are also many risks online! One of the most common risks is an open source package reaching its end-of-life (i.e. no one is supporting it with security and functionality updates). We use open source packages of code to drastically reduce the cost of building web assets, but they must be updated from time to time. Just because your codebase works now, doesn’t mean it will continue to work indefinitely without regular attention.

Let’s Dispense With The Hypotheticals

An example of this happened just a couple months ago. One of our clients let their codebase get stale while focusing on other aspects of their business. After a while, their marketing team needed some changes for a campaign launch. We jumped in to help them accomplish their business goal, but quickly found that their codebase would no longer build because the version of PHP (a programming language) had reached its end of life. What could have cost as little as $500 ended up costing around $5,000.

Other risks may include malicious attacks by nefarious individuals or state actors. Just last year, the city where I reside had a ransomware attack that cost them $1 million dollars! Had they had a support contract with regular security audits and code/data backups correctly, they could have walked away with very little work from the good guys instead of handing over a large payment to fund the bad guys.

The Solution Is In The Plan

To better serve our clients, we thought long and hard about website maintenance and support packages that would keep our client’s codebases up to date and lower the risks online. I highly recommend signing up for one of the paid plans. They’ll save you money in the long run and help ensure that we’re ready to help in the event of an emergency. 

Let me know if you’d like to get started or have any questions. 

Tips For Testing Developers

The best way to see if someone can write code is to have them write code. Therefore, we test everyone! 

The trick is to make the test as similar to your every day work as possible. Don’t send them through a list of multiple choice questions on the finer points of JavaScript. In my experience, there is very little correlation between book smarts and streets smarts.

I had a client early on who thought the answer would be to hire computer science grads from Columbia (he lived in New York at the time). This was before we did testing. Anyways, after 4 weeks and 3 graduates, we hadn’t moved the company forward at all. They had all the books but hadn’t done anything on the streets. 

Don’t test as part of your filtering process. Filter well, then choose your horse and make your bet. Some developers won’t take tests without pay. We tried compensating, but it ended up being too costly, so we switched to just guaranteeing work if they pass the test. Passing is as easy as submitting code we could bill for. 

You’ll definitely need to test every person on your team, but that can be a challenge for non-technical founders searching for a tech lead. There are lots of third party test administrators out there, but we find that most if not all are too theoretical. We don’t have a good solution for this problem except that we could help you set a test if you need.

As a benchmark, of the 1% of developers that make it through our filters and to a test, only about 1/2 of the devs pass.

With all rules, there are some exceptions. A coding test is less important, like when you’re hiring a dev shop with lots of past experience, a solid online reputation, and public reviews.

As mentioned previously, you shouldn’t use testing as part of filtering candidates. If you’d like to read more about how to filter well, download our free Guide to Tech Projects for Non-technical Founders.

If you need hands on help with your project, Buink has years of experience managing and completing technical projects on time, under budget, and with a high level of quality. Contact Buink today.

Filter Candidates Well

We use a combination of cultural fit, confidence, and reputation.

Cultural Fit

Cultural fit varies based on the company, team, and project so there isn’t much value I can add for you here, except that you need to determine what your values are (e.g. Quality, Value, Clarity) and find people who share them. It isn’t so important that they have the same personality, hobbies, etc., in fact, a lot of diversity is great, it is more important that they share the same values.

Confidence and the Dunning-Kruger Effect

When doing hard, new things, you have to find people who are confident in their abilities. In development, we call these abilities skills. They include languages, frameworks, paradigms, patterns, etc. We look for developers who are confident in the skills we need. 

The problem with confidence is best illustrated by the Dunning-Kruger Effect. This term was coined by two Cornell psychologists who found a “cognitive bias whereby people who are incompetent at something are unable to recognize their own incompetence.” Forbes 

In one experiment, for example, they asked participants to rate how funny jokes were and then asked them how good a judge of humor they think they are. They found that those that were the worst at judging which jokes would be funny, also rated themselves the best judges of humor. 

This and other studies led to the conclusion that less experienced people overestimate their abilities; in other words, they’re more confident than they should be, so their confidence doesn’t mean anything. Confidence is good, only if they have the experience to back it up.

We ask developers about their confidence in the skills we need in several different ways during pre-screening as well as in the interview, but given this human bias, we can’t just take the developers confidence at face value. We must discount their confidence rating based on their level of experience.

For instance, if our project requires a high level of confidence in React, a JavaScript front-end framework, we ask about the developers confidence in that skill in several different ways, both in ranking as well as imaginary tasks. If the developer rates themselves at an expert level, but they have only 1-2 years of experience, we must discount their level of confidence. The only exception to this is if the developer has a lot of experience in a related technology like Angular or Vue.

Reputation Economy

We’re in a reputation economy now. Gone are the days when we check references, I’m more interested in online reputation, connections, followers, recommendations, and reviews. The best guarantee that you won’t be stiffed by a bad developer is if you can leave them a review that hurts if they do.

We only end up considering about 1% of applicants. That means based on our filter questions and resume review, we only end up sending 1% of applicants to the hiring manager.

Conclusion

Filtering candidates based on fit, reputation, and confidence is the first step, testing is the next step. Learn more about how we test developers and get other tips in our free Guide to Tech Projects for Non-technical Founders.

If you need hands on help with your project, Buink has years of experience managing and completing technical projects on time, under budget, and with a high level of quality. Contact Buink today.

Logo Design | Auto Rental

Although we don’t talk about our company branding services much, we do have talented designers that we work with. We had done some website work previously for this client that included a logo design and they needed a logo for a separate business.

We went through a couple rounds of revisions and settled on a logo that the client really liked.

Finding Good People Is Hard

Unemployment in web development has been very low and wages have not been stagnant. To make matters worse, Google and other tech giants are literally printing money and inflating salaries.

Good news is that advertising is only a small portion of the dev industry and working at the giants involves mindless, soul sucking work. So, finding your tech lead and other developers isn’t going to be easy, but it is possible. We find good people all the time, but it took us years to hone the process.

We use a process of filtering, testing skills, and testing behavior that we’ll be outlining over the next couple weeks on our blog. If you don’t want to wait, you can download our free Guide to Tech Projects for Non-technical Founders. This is our gift to you!

If you need hands on help with your project, Buink has years of experience managing and completing technical projects on time, under budget, and with a high level of quality. Contact Buink today.

The Divine Estimate

Projects can fail for many reasons and unreal expectations are high on that list.

At Buink, we measure our success by the success of our clients, which is why we’re always looking for clients who have a strong business plan, some business expertise, a good idea, and a good team. It is our job to deliver quality code that is bug free, intelligently written, and easy to maintain. It is our client’s job to be able to sell the project or features to customers or investors. When both of these jobs are accomplished, we’re all happy and we all WIN. When one job fails, then things get messy, and we work very hard to make sure it isn’t development that fails.

Our extensive experience in the industry and our ability to make development succeed is a source of pride for us. We’re experts at development, solving difficult technical problems, writing clean code, and delivering value.

That said, there is one part of our job where expert skill is very hard to attain: estimating.

When I started in this industry, I had no idea how important, and even vital, this very difficult skill would be. I had no idea how quickly my clients would assume we can do this easily, despite our lack of a reliable crystal ball. I had no idea how closely connected the success or failure of our work and reputation would be to this divine skill. Most of the time, this skill affects us negatively if we underestimate, but I also had no idea how easily we would loose potential work if we prophesy too many hours and too much cost.

Through time we’ve honed our skill, particularly with greenfield projects (projects that we build from the ground up). But even with existing projects, even sometimes projects that we build, things can get impossibly hard.

For example, the version of a coding language we use was recently depreciated and that forced us to upgrade several of our existing codebases (this is never a problem, by the way, for clients who sign up for a website maintenance agreement, but several don’t till a bug bites). We typically estimate an upgrade like this at about 12 hours. One project took less than half of that at a very happy 5 hours. The client was happy and we were a hero.

The upgrade on another project didn’t go so well. It triggered several bugs, which triggered issue with their IOS app, which required an upgrade to all front-end packages, which introduced other bugs, some of which were very difficult to solve. We were able to get the client back up and running, but not without a lot of unexpected work. The final time came in at a shockingly unsatisfying 50 hours. ALMOST 5X THE ESTIMATE! We worked closely with the client the entire time, but I can assure you, this wasn’t pleasant for anyone. You might think getting more work is good. Sure, we get more work, but it throws off our schedules, adds a lot of unneeded stress and pressure, and leaves the client unhappy.

The client who only had to pay for 5 hours of work was very pleased and we looked like a hero. The project that took 50 hours created all sorts of questions in the clients mind. Our skill level didn’t change between them. Neither did our expertise or our ability to estimate. Neither did the software choices we made. The only difference was the unique business logic and features of the project which become difficult to predict.

Here is the sad truth, ESTIMATES ARE ALWAYS WRONG! Even the project that took only 5 hours had an estimate that was drastically WRONG. Sure, it was wrong in a good way, but wrong nonetheless. I’ve never seen an estimate be exactly right. Never.

So, what is the solution? How can I keep all clients happy? The truth is, I can’t always keep all clients happy when part of my job requires the divine attribute of predicting the future.

Maybe I should always estimate the upgrade at 50 hours to make sure we never go over. But if we do that, there are no shortage of developers in the market place who will say anything to get the work. Then, if they land the project they’ll cut corners, ignore security best practices, forget to built the code in an easily maintainable way, and still probably go over estimates.

Do I estimate the update at 5 hours given that we were able to do one at that length? No, I don’t feel right about that either.

Instead, I try to give a number that will be closest to the average, which is 12. But again, 12 is wrong, except hopefully in a good way.

As you can see, estimates are an extremely hard problem to solve, and that is why I believe that the estimates are a wrong way to think about development work.

David Hansson, the creator of Ruby on Rails and co-founder of Basecamp, said the following in the article It’s not a promise, it’s a guess, “If you treat the estimate as a “best guess based on the limited information available to me before I start the work”, … you’ll change the frame and break the cycle of deadline anguish. Now the task becomes collaborative and you can share new discoveries with the stakeholders.”

Collaboration is the key here. If the developer is the right person, with the right skills, and the right dedication to the project, then estimates become an opportunity to communicate, not a breach of contract. At Buink, we rarely fail at delivering valuable code that meet business objectives, but if we do, it is usually related to an estimate being interpreted as a promise, not a best guess.

When we get in situations where expectations are increasingly unrealistic, I often feel like the developer in A letter from a technical founder to non-technical founders when he was trying to explain to his co-founders why the code was taking so long. He asks, “Have you ever started a project thinking that it is going to take an hour only to spend eight on it? This is just like that.” I think we’ve all had that happen and more so in development than any other type of task in my career.

Luckily, as we get more experience in the industry, we get better at predicting. We also get better at turning around projects if estimates turn out to be poor guesses. But, I’m quite sure we’ll never be perfect at it.

If you find yourself struggling to understand your engineering team, I’d highly recommend the book Shape up, written by Ryan Singer also of Basecamp. He says that we need to start thinking about development tasks in terms of appetite not estimates. Appetite is how valuable a given feature is to the business. When you combine appetite with priority, then you have a powerful framework to help product teams and developers stay on the same page, achieve business goals, and work together in harmony.

Here is a good summary video of Ryan’s book, Shaping in a Nutshell.

Hopefully, this information is useful to you as a non-technical founder trying to understand your technical team. If you’re ever in doubt about your technical team, we’d love to jump in and lend a hand. We can offer some valuable insights into how your team is running, how to improve their productivity, and how to know if things are moving in the right direction.

Fractional Technology Leader

If you’ve been reading our blog or downloaded our free Guide to Tech Projects for Non-technical Founders, you’ve learned how important a team is for completing technical projects successfully.

The most important person on the team is the technology lead. This goes without saying, but must be said given how often this rule is ignored.

You’ve got to have someone on the team that is experienced. I’m not talking about someone who has built a couple sites, this is your general contractor! I’m talking about a solid 10 year, 10,000 hour person

And what they’ve been doing for those hours is important as well. If they’ve been pigeonholed in the back office server room only tinkering with networks and IT infrastructure for 10 years (although some of that might be helpful), they’re not a good fit. They need to have worked in all aspects of web development, from design through devops and back again. They also need to have a couple big wins: big projects that went from start to finish successfully.

The more experience the better, but the problem is that experience is expensive. These people are pricey because they’re in a high growth, high demand industry where wages have not been stagnant. They’re going for anywhere from 150k – 300k per year right now according to salary estimates online.

If you can’t afford someone like that full-time (most startups can’t), you’ll want to look for someone who could join you part-time. Do a search on LinkedIn for a fractional CTO or fractional developer, or lead developer contractor, etc.

One thing you’ll definitely want to avoid is the “Amazing Technicolor Dream coder”. If you’d like to read more about that and other tips for successful technical projects, we have a free gift for you.

Download our free Guide to Tech Projects for Non-technical Founders.

If you need hands on help with your project, Buink has years of experience managing and completing technical projects on time, under budget, and with a high level of quality. Contact Buink today.