5 Tips for Speeding Up Development

In college, one of my professors told a class that the average developer writes on average 25 lines of a code a day. He also recalled managers watching over his shoulder while he stared blankly at the screen, which would lead to the inevitable “Why aren’t you doing anything?” question. He would simply respond with a “I’m thinking.”

As developers, we have to balance a myriad of skills and considerations for every block of code we right: How long will an approach take? Is the code correct? Is it efficient? Will it make sense to another developer? Will it have side effects? What business rules should I consider?

Some days, you might not write any code. Diving down into the depths of your codebase, you might get lost searching for some bug or performance bottleneck for hours, days, or worse. Unfortunately, the time-worn cliche “Time is money” holds true for most developers, so in spite of all the development speed bumps, we have work that must be finished. And said work typically has a deadline.

So here’s a list of performance gains not for your code, but for you. You may not be able to eliminate the need for investigation or consideration, but maybe you can speed up everything else.  Continue reading “5 Tips for Speeding Up Development”

Feature Switches

Continuous Deployment is arguably the holy grail of development. The ability to regularly and automatically deploy changes for an application increases team responsiveness, encourages Agile Development, and allows the end-user to provide quick feedback influencing future work.

But how do you release changes that aren’t “complete” from the business perspective?  Continue reading “Feature Switches”

Regexes: The Introductory Lesson

Ever heard of the term regex? What about grep? They both represent the same basic premise: Regular Expressions. (Side note: grep is the Unix tool that can run Regular Expressions)

A Regular Expression (or regex) is a set of characters representing a text pattern. At its simplest, abc is a regex. When applied to the text

abcdef

it matches the text in red, just like a normal search would in your text editor of choice. That’s because we were only dealing with literal, or non-special, characters. The special characters, however, are what makes regexes so powerful.

Special characters hold meaning outside of just the character itself. For example, the dot character represents a wildcard instead of a period, and the ? means the character before it is optional. There are a bunch of special characters, and they dramatically expand your ability to search through text. Let’s look at some examples…

Continue reading “Regexes: The Introductory Lesson”

Motivation: A Developer’s Greatest Tool

When I read Somnez’ Soft Skills book, I found the section on motivation very interesting. Somnez compares internally motivated people vs. externally motivated people, and raves about how hugely beneficial it is for that motivation to come from the inside. It’s not a new concept; google intrinsic vs extrinsic motivation and you’ll find plenty of psychological studies and papers. That being said, motivation’s importance on both career and education cannot be overstated.

The beauty of working with passionate, driven developers (or just passionate people) is the practically contagious motivation that they radiate. It drives them to seek self-improvement, leading to a stronger knowledge base, which can then passed along to other members of the team. It embolden’s them to think outside of the box, and propose unique solutions to typically complicated or misunderstood problems. But this is only true of motivation emanating from the inside. Continue reading “Motivation: A Developer’s Greatest Tool”

Best Practices for Designing a Pragmatic RESTful API

If you’re building your first, or even fiftieth, REST API, this is a great resource for best practices:

Your data model has started to stabilize and you’re in a position to create a public API for your web app. You realize it’s hard to make significant changes to your API once it’s released and want to get as much right as possible up front. Now, the internet has no shortage on opinions on API design. But, since there’s no one widely adopted standard that works in all cases, you’re left with a bunch of choices: What formats should you accept? How should you authenticate? Should your API be versioned?

http://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api

Composition vs Inheritance

Interesting article a coworker posted taking an objective look at composition versus the “I” word.

In the Beginning……there was no inheritance and no composition, only code. And the code was unwieldy, repetitive, blocky, unhappy, verbose, and tired. Copy and Paste were the primary mechanisms of code reuse. Procedures and functions were rare, newfangled gadgets viewed with suspicion. Calling a procedure was expensive! Separating pieces of code from the main logic caused confusion! It was a Dark Time.

Composition vs. Inheritance: How to Choose?