The Problem With Repositories

What follows is an edited down version of a chat conversation in the Operation Code slack. The context is that of someone studying up on .Net but, patterns being what they are, this applies elsewhere as well. The question was over explaining the repository pattern. I have strong opinions here and differentiate between how repository is defined, how it might be implemented in a manner true to it’s intent, and how it is often (mis)implemented with unfortunate consequences. The best opinions are changed opinions and this is one that I admit to having been wrong about. I used to be a defender of the repository pattern. It was likely the first pattern that I felt I understood. Back in 2009 it was also the subject of debate largely – as I remember it – between .Net giant Oren Eini and the folks over at Codebetter (blog unfortunately no longer particularly […]

Getting started with the Applitools SDK

This blog assumes you have some basic knowledge about automated visual testing with Applitools. If it isn’t clear to you why it is awesome and would like more info, go checkout their site applitools.com. I first heard about Applitools through one of my colleagues at Surge in spring of 2017. I was explaining some of the challenges with my current client. Specifically, the amount of time developers spend testing each release (developers are the QA department) and how there was an initiative to focus on CD (continuous delivery). I mentioned that while we have several functional tests, they did not verify that our application’s pages look like they should. This is when my Surge colleague suggested I look into Applitools. Over the course of several “Improvement Days” my client holds, I was able to work on a POC with Applitools. The project I work on is a web application that […]

Are You Multilingual? Why It’s Important to Master Multiple Programming Languages

Every programmer has a language they prefer to work in. Whether it’s because it’s the one they’re most used to or the one that best meets their coding needs, they’re not shy about telling you which is their favorite and why. But man cannot live on Perl alone. No matter how versatile or easy to use your favorite programming language, it’s important to be able to use others just as fluently. Here are a few reasons why. Job Opportunities Google programming is done using Python. Say your dream job is to work for Google, and you learned Python for that very reason. You’re an expert in it. So you apply to Google, but sadly don’t get the job. No worries. With your programming skills, there are plenty of other tech companies that would love to have you on your team. So next you try Microsoft. They use primarily C, C#, […]

Who needs testing anyway?

When business owners discuss the best way to develop software, testing is always a scary topic. How much time and money you should spend on testing is not an easy question to answer. What type of human resource you should commit to testing is an even harder one. Test Automation obviously requires some degree of programming skill, but software developers are a precious resource. Why waste developer’s time on automating tests when you’ve got new products and features that you need to roll out the door? Bringing on a dedicated test automation developer is no small expense, either. You could probably hire two or even three manual testers for about the same amount as one software engineer. What makes a test automation engineer that much more valuable? These questions and their answers mean everything when creating a testing strategy. Here at Surge, we recognize and advocate the benefits of both […]

Combining Lean Manufacturing with Agile Development

Lean Manufacturing reduces failure rates, focuses on continual improvement, and brings long term value to business owners. Sounds like Agile software development. Many companies like leankit are capitalizing on this fact and are building products that bring those two worlds together. For the past 10 years, Surge has built an entire company combining both lean and agile principles. The Agile Manifesto Agile development springs from what’s known as the Agile Manifesto: a collection of values and principles for software development that allow solutions to evolve through collaborative effort. The manifesto was created in 2001 by a group of software engineers, who dedicated themselves to finding lightweight, more efficient methods of meeting requirements and solving problems. In the years since, agile practices have continued to grow and expand, with input from developers all over the world. Still, the core of agile remains based in those original principles and values; many of […]

Improve your work-life balance by working from home

Working from home can be something of a double-edged sword. On the one hand, it affords you the freedom and flexibility to work at your own pace, on your own terms, which may allow you to get more done. On the other hand, without a strict structure to your day, or continual monitoring from those that hold you accountable, it can be easy to get distracted, ultimately losing productivity instead of gaining it. So, which is the case? Are you more or less productive when you work from home? The debate has gone on for years. But now, it may finally have been resolved. A two year study from Stanford University has determined that employees who work from home accomplish significantly more than those who come into the office each day. Two Groups In an experiment conducted by Stanford professor Nicholas Bloom, a selection of employees from the Chinese travel […]

Terrible Reasons to Hire Offshore

The modern world runs on code. From the embedded controllers in our appliances to the servers that run the Internet, code is integrated into virtually every area of life. However, programming great software is difficult, time-consuming and expensive. Offshoring your software development because labor is less expensive seems like an easy solution to manage costs, however, the hidden costs make the decision a bad one. Here are some terrible reasons to offshore that are still discussed in boardrooms today: The hourly rate is a fraction of US based employees This argument comes up first when you are being sold on an offshore strategy. The counter argument is lack of productivity. Well then someone tries to take down any productivity concerns by simply saying to yourself that you can hire three developers for less than one american worker. Adding more programmers that don’t know what they are doing to a complicated […]

CloudFlare for DNN

I was helping my friend Clint Patterson deploy a new DNN website and recommended that we enforce HTTPS even though for the small website he really didn’t need it. With the ease of tools such as CloudFlare it is really easy to set up and enforce https which not only makes your site secure but makes your users feel comfortable with the lock icon displaying in the browser. Why CloudFlare? Pros Cons Free SSL Certificate You need to use CloudFlare as your nameserver Free CDN just by signing up You have to use CloudFlare to configure your DNS Records Free Static Content minification You have to get over CloudBleed Built in advanced Cryptography features   DNN Performance Increase   Search Engine Optimization   This isn’t a complete list but some things to start thinking about I try to configure all of my websites with cloudflare because the SSL support and […]

The Critical Lean Tactics That Most Agile Teams Forget

Agility in an individual represents strength, speed, and flexibility. Whether you’re thinking of software development, product research, or project management, these attributes are crucial for teams that want to create the highest-quality output possible with limited available resources in short time frames. As you know, the philosophy of Agile Development is to produce working software as quickly as possible. Agile begins to fall apart as an individual developer or team starts to redefine and cheapen the definition of “working software.” You can always ask the question “does this software make any part of our business work more efficiently and effectively in this iteration?” If it does, then you have working software. Here are four critical lean tactics for agile teams to keep in mind as they work to create software that works for their business: 1. Focus on value Your product should be providing well understood values to your business. […]

Scrum Evolution and Training

Scrum can be a great framework for collaboration in writing code and solving complex problems. As a development tool, it’s constantly evolving and growing. This means that, if you want to use Scrum effectively, you need to be able to evolve and grow with it. That means learning what you can about what Scrum has to offer and staying up to date with the latest developments and trends. So here’s the latest news on Scrum, to help keep you in the loop. Scrum with Kanban Kanban is an organizational method designed to improve quality and efficiency in a system. By balancing demand with the capacity to fulfill it, Kanban is able to reduce or even eliminate system bottlenecks. When it comes to coding and software development, it uses a visual system of process management to improve decision making. Because of this, Kanban is often combined with Scrum. As a framework, […]