Practices Icon


Development and business practices, methodologies, workflows, etc.
80 Stories
All Topics

 Itamar Turner-Trauring

The next career step for Senior Software Engineers (that isn’t management)

This is a must-read for any software engineer wondering how they can move up the ladder without falling pray to the Peter Principle. Career progress for programmers doesn't require giving up coding to become a manager. You can get more autonomy—and stronger negotiation leverage—by going from implementer, to problem solver, to problem finder.


kate Matsudaira ACM

How to get things done when you don't feel like it

Kate Matsudaira provides 5 excellent strategies for pushing through: Even if you love your job, you don't always feel like doing it every day. There are so many factors that influence your ability to show up to work with enthusiasm and then work hard all day long. From gamification to calendaring, Kate has a lot of good advice in this piece. I even learned a new word, "precrastination", which I've been doing a lot of without even knowing it! 💪


Dave Rupert

If statements should cost $10,000 each

Yup, it's true..."estimating project costs is hard." I thoroughly enjoyed the tongue in cheek logic shared by Dave Rupert in this post. ...let’s say your app has a logged-in or logged-out state, well, that’s at least 2 if-statements. Starting price: $20,000. Never before has it been this easy to price and scope out complex stateful apps! The cost of complexity in software is real and this is a very practical post to share with would be customers of your software team. This applies to freelancers, consultants, and even teams inside larger orgs. We all have to account for our time, and that means accounting for the money being spent along the way.


Brad Armstrong Medium

How to fail as a new engineering manager

Brad Armstrong lays it all out there about how to transition from an engineer to a manager: There are decades of books and thousands of blogs dedicated to trying to answer these questions, so I‘m not here to pretend that I’ve got the secret to success. But I do know a few ways that I’m pretty sure can guarantee you’ll fail. He takes you through 8 easy steps to failure. I'll disappoint you now and spoil that step 1 is to keep coding 😱


Yegor Bugayenko

Code must be clean. And clear.

Yegor applies a kitchen metaphor to code: The kitchen is clean when there is no dirt in the oven. But if its electric panel speaks French, I can’t use the kitchen. Even if it’s perfectly clean. It’s not clear how to use it—that’s why it’s useless. Sounds good to me, but how do you know if your code is actually clean and clear? He provides a heuristic: If a stranger can modify your code and fix a bug in less than an hour, it is maintainable. The entire post is well worth a read.



You probably don't need Moment.js

When you pull in a library dependency, it is rare that you need all of the functionality it offers. This isn't usually a problem for backends, because that code never leaves the server. However, In frontend-land your users pay the price for all that unused functionality every time they hit your website with a cold cache. Moment.js is an excellent date/time library. It is packed with functionality, and you probably don't need everything it has to offer. Instead, check out date-fns, which offers small, highly targeted functions you can probably get by with. There's even an ESLint plugin that will help you identify places in your codebase where you don't really need Moment.js!


Lorenzo Pasqualis

15 ways to achieve flow

What is flow? ...a state of mental flow. Programmers live for it and work at their peak potential when they are in it. Also known as “the zone,” Flow is the mental state of operation in which a programmer is immersed in a feeling of energized focus, complete involvement, and enjoyment in the process of coding. Here's a challenge — read this and apply just one idea to your work this week and report back in Slack how your work was impacted, positive or negative.



Repeat yourself, do more than one thing, and rewrite everything

This contrarian post comes by way of the aptly named It's a bit ranty, but I rather enjoy the author's tone: If you ask a programmer for advice—a terrible idea—they might tell you something like the following: Don’t repeat yourself. Programs should do one thing and one thing well. Never rewrite your code from scratch, ever! He'll take you step-by-step through why he thinks these generally accepted principles are often mistakes.


Eric Clemmons Medium

Work on features, not repositories

In response to a recent Twitter poll from Kent C. Dodds, Eric Clemmons shared concerns about how organizational boundaries are impacting where development happens. Kent tweeted... Hey folks who have a decoupled client-server application (no server rendering, server is just an API server). Where is your client code and server code located? (#) Together in one repo? In separate repos? Eric writes in his response on Medium: Software is like Jello: poke it in one place, and another place jiggles. In my experience, a repository should house all of the code necessary to make developing & shipping features relatively frictionless. This isn't an exact 1:1, but this was a big part of the reason why Segment transitioned back to a monorepo.


Yegor Bugayenko

Builders and manipulators

Yego Bugayenko: Here is a simple principle for naming methods in OOP, which I'm trying to follow in my code: it's a verb if it manipulates, it's a noun if it builds. That's it. Nothing in between. Methods like saveFile() or getTitle() don't fit and must be renamed and refactored. Moreover, methods that "manipulate" must always return void, for example print() or save(). Let me explain. Naming objects well has been a career-long struggle for me. I just might give this a try...


Martin Fowler

The state of agile software in 2018

Martin Fowler reflects on the journey of agile software development... Our challenge at the moment isn't making agile a thing that people want to do, it's dealing with what I call faux-agile: agile that's just the name, but none of the practices and values in place. Ron Jeffries often refers to it as "Dark Agile", or specifically "Dark Scrum". This is actually even worse than just pretending to do agile, it's actively using the name "agile" against the basic principles of what we were trying to do, when we talked about doing this kind of work in the late 90s at Snowbird. The three main challenges we should focus on are: fighting the Agile Industrial Complex and its habit of imposing process upon teams, raising the importance of technical excellence, and organizing our teams around products (rather than projects).


Hongli Lai

Top GDPR questions for developers and startups

Prominent startup/developer forum Hacker News has shown us how shaken these two groups were. Most GDPR articles received hundreds of upvotes and comments. The reactions had a feeling of mass hysteria. This motivated me to embark on a mission to bring knowledge and peace of mind to the software developer and startup world. ... I initiated a number of AMAs -- Ask Me Anything discussions -- on a variety of forums. Here are the top questions I received... Hongli went on to answer questions like "Where do I begin with making sense of GDPR and what to tackle first?", "What are the most valuable online resources for getting actionable advice?", "Given that you have no business presence or interest in the EU, what is the worst thing that can happen if you're not compliant?" ...


Alex Ershov

Node.js error handling patterns demystified (with examples)

Error handling in an asynchronous language works in a unique way and presents many challenges, some unexpected. There are seven main error handling patterns in Node.js. Let's briefly check them all. I'm not sure if this post serves to demystify all of these techniques, but it's definitely a nice, quick overview of the different patterns.


Mihai A

Logic should hide in plain sight

If we get rid of the concept of "model objects", then there should be very little (almost zero) space for procedural code/algorithms in our codebase, since each object is a component that has its well-defined place in the bigger picture. The following question arises: where does the "business logic" go? The answer is: business logic should be visible in how objects are wrapping/composing each other, rather than being visible in a 200 LoC method of some "service" class.


Increment Icon Increment

A primer on documentation content strategy

Do you have documentation? Do you have a documentation content strategy? No?!! If you want to create guides for your software, having a solid content strategy can help you write useful content. This article will walk you through how to develop that strategy, whether you’re an engineer or a technical writer, new to writing documentation or just looking to get more strategic about it.


Brian Krebs

Reddit breach highlights limits of SMS-based authentication

The cause is a 2FA fail with either SIM security or a mobile number port-out scam as the point of failure. Brian Krebs writes for KrebsOnSecurity: Of particular note is that although the Reddit employee accounts tied to the breach were protected by SMS-based two-factor authentication, the intruder(s) managed to intercept that second factor. In one common scenario, known as a SIM-swap, the attacker masquerading as the target tricks the target’s mobile provider into tying the customer’s service to a new SIM card that the bad guys control. Another typical scheme involves mobile number port-out scams, wherein the attacker impersonates a customer and requests that the customer’s mobile number be transferred to another mobile network provider. Were you exposed? ...between June 14 and 18 an attacker compromised several employee accounts at its cloud and source code hosting providers. Reddit said the exposed data included internal source code as well as email addresses and obfuscated passwords for all Reddit users who registered accounts on the site prior to May 2007. The incident also exposed the email addresses of some users who had signed up to receive daily email digests of specific discussion threads.


Lara Hogan

Lara Hogan's guide to writing a "Week in Review" doc

The important thing to remember about leading is you have to have clear lines of communication with those you lead. I love the ideas Lara shared in this guide to writing a "week in review" team update. This doc helped me set records straight, disseminate info to lots of people at once, and open up conversation internally, while reflecting on the themes that had come up in weekly one-on-ones, backchannels, team meetings, etc. What I chose to write about each time widely varied. Though the teams who reported to me were the primary audience for this doc, I kept it internally-public, meaning that anyone at the company could read and comment in it. I found that some other managers just weren’t talking about hard things that were happening...


Tigran Hakobyan freeCodeCamp

Reflections on being a remote developer

Tigran Hakobyan, remote software engineer at Buffer, writes on the freeCodeCamp blog: Working remotely is very different from working in the office. I don’t think you fully grasp the difference until you actually start being remote. For someone like me who never worked in a remote environment, the beginning wasn’t smooth and it came with challenges. I can clearly remember my very first day at Buffer... Tigran also shares a pretty comprehensive breakdown of a typical workday.


Drew Devault

Git is already federated & decentralized

In the wake of Microsoft's acquisition of GitHub, the murmurs of replacing GitHub with something decentralized have been getting louder. In this article, Drew Devault points out that email-based git workflows are A Thing and one that works quite well. In particular, this blog post is a direct response to forge-net (formerly known as GitPub). They want to federate and decentralize git using ActivityPub, the same technology leveraged by Mastodon and PeerTube. But get this: git is already federated and decentralized! Drew has skin in the game via his platform, and intends to make git send-email support a first-class citizen on it. Lots of interesting ideas at play here. After all these years is email still the web's killer app?


Dion Almaer Medium

On a mission to improve the web ecosystem for developers

Dion Almaer (Google) writes on the Ben and Dion Medium publication: A few teams within Google have joined forces inside Chrome to focus on improving the Web ecosystem, focused on those who build experiences, and create on the Web. We want to make high quality experiences easy to build as that will enable more meaningful engagement on the Web for users and developers alike. This is an awesome breakdown of all the components required to deliver meaningful engagements and a roadmap to the future of the web platform.

0:00 / 0:00