Skip to main content

5 posts tagged with "Software Engineering"

View All Tags

· 7 min read
Josh Kaplan

This past week, I had a discussion with a student team about microservices. This is a topic I've wanted to write about for a while and given the immediate relevance to this team, I finally made it a priority.

The microservices architecture is a popular and growing trend in many technology organizations today. But its implementation is often met with unsurmountable challenges by unprepared teams. This article discusses some of the challenges of microservices and how to overcome them.

· One min read
Josh Kaplan

Cracking the Coding Interview by Gayle Laakmann McDowell is a must have for anyone interviewing for software engineering jobs. Whether you are preparing to interview for your first internship or you are an experienced professional, this book is a comprehensive walkthrough to prepare you for the process.

The beginning of the book describes typical examples of the technical interview process and covers some core computer science theory. The second two-thirds or so of the book covers programming practice problems and knowledge questions followed by a detailed solutions section.

Going through the practices problems in the book is a great way to refresh old skills or identify knowledge gaps you need to focus on and give you the confidence you need to be ready for the interview process.

· One min read
Josh Kaplan

You Don't Know JS Yet by Kyle Simpson (or the earlier edition You Don't Know JS, which is the version I read) is the best Javascript book I've ever read. It is not for beginners, there is an expectation that you have a decent programming background with some Javascript experience already. What this book covers is a deep dive into the Javascript language and how it behaves.

The first edition covers the inner workings of Javascript including topics such as variable scope, closures, and Javascript's use of the this keyword. The focus of the book is on clearly explaining many of the language-specific topics that cause confusion with the Javascript language and to help you develop a deep understanding the of the language to take your Javascript engineering skills to a whole new level.

· One min read
Josh Kaplan

The Mythical Man-Month by Frederick Brooks Jr. is the classic software engineering text for building complex software systems. The book was orginally published in 1975 and is based heavily on lessons-learned from the developments of IBM's OS/360. But despite its age, many of the lessons from The Mythical Man-Month hold true today.

There are two concepts I'll touch on that really resonated with me. The title mythical man-month, or perhaps in more modern terminology the FTE, or Full-Time Equivalent (or other similar term). This address the idea that people and time are not interchangeable. That adding more people doesn't necessarily speed up a project if those people don't have sufficient understaning or the tasks cannot be paralellized.

The second lesson I'll share is: plan to throw out the first one. This is as true today as it was in 1975 and is arguably more true in the context of modern agile software. We rarely get a product right on the first pass and it's through incremental iteration that we make it the better.

· 3 min read
Josh Kaplan

Welcome to the first in running series of articles titled Bits of Bad Code! I've always found failure to be a powerful learning mechanism. The ability to learn from the failure of others is an important part of that. This article series stems from a habit a built up with some of my teams to share example of bad code we've found and talk about why they are bad and how to make them better. This has been a fun experience for a my teams and a wonderful learning experience for growing software engineers. The goal of this series is to share similar examples of bad code and talk about how to make them better.