Imagining a Smarter Pluralsight
By: Auggie Hudak
What does it mean to be a software engineer on a machine learning team?
Shu Ha Ri
By: Jonathan Turner
There are a lot of different ways of thinking about gaining and improving at different skills. One such way is called Shu Ha Ri. This blog post explains what Shu Ha Ri is and some observations about its application in software development.
Cryptographic Hashing Functions
By: Eric Andres
A hashing function is a one-way function that takes some input and returns a deterministic output. The output is often referred to as a digest, a hash code, or simply a hash.
Reducing Risk by Deleting Code
By: Allan Stewart
One of my favorite activities as a software professional is to delete code. Over time, I've learned that this is one of the best things I can do because the ideal amount of code is no code at all.
Property-based TDD
By: Matt Baker
Property-based testing is a type of testing that uses randomly generated inputs to test an attribute or characteristic of the subject under test. You can contrast this with the more traditional example-based testing approach, where you provide specific test cases for your subject under test. Typically, TDD is done using example-based testing. What happens when we use property-based testing in a TDD workflow?
A Remote Developer Team
By: AJ Foster
I’ve never met my teammates in person. Despite this, we've used deliberate communication and a wide array of tools to build a strong distributed development team.
Modern Comments
By: Neil Sorensen
I recently read a blog post arguing that comments are an important part of code, and the people who claim otherwise are missing out. While I tend to fall on the opposite side of the argument, I would certainly agree that there is a time and a place where comments in code make sense. More interestingly, I realized that I haven't seen many explanations of why comments are sub-optimal, and when they are still important. So, in an effort to improve that situation, here's my take on the principles behind comments, and when those same principles are better served with different tools.
Leaning into Eventual Consistency
By: Allan Stewart
Distributed systems are hard. They have a lot of moving parts with complex interactions and are inherently multi-threaded. To make them work, there is often some form of eventual consistency at play. Embracing this can make software development easier.
Broadening Our Horizon
By: Neil Sorensen
In the face of technical complexity, we sometimes forget that the human aspect of software development can be even more challenging. Fortunately, we can gain a lot of insight into how other disciplines have overcome similar challenges. In fact, those insights have lead to several of the more revolutionary ideas in our field.
Managing for Autonomy
By: Maureen Makes
Autonomous teams are becoming increasingly prevalent in our culture, with 81% of the Fortune 1000 deploying some form of a “self-directed” team model in parts of their organization. As Dan Pink writes in his book Drive, autonomy is one of the key contributors to individual motivation.
Hack Day at Pluralsight
By: Chuck Bates
You’ve heard the phrase before, maybe even attended one, but what really is a hack day? What does a hack day look like at Pluralsight?
Forms of Temporal Coupling
By: Allan Stewart
Coupling is an important concept in software development because it limits the ability of software to change. Temporal coupling is a kind of coupling where code is dependent on time in some way. It is particularly insidious because it is hard to detect unless you know what you are looking for.