Manager's Guide: Setting Meaningful Employee Goals
A deep look into how a CTO uses feedback and goals to create the structure necessary for employee growth.
Recent content on arches.io
A deep look into how a CTO uses feedback and goals to create the structure necessary for employee growth.
Through years of trial and error giving feedback, I finally uncovered the principles that allow me to both fulfill my role and feel supportive of my employees.
You can and you will successfully hire a great engineer and emerge a hero! It all starts with one little secret 😉
The tools we use both limit and advance our thinking. When we accurately anticipate the future, our progress accelerates because each step is built on top of a previous enabling idea instead of starting from scratch each time.
Art is powerful because it connects us with our deepest selves, and through the details we choose to include or omit, they have a point of view. Abstractions similarly afford us limitless opportunity to explore, build, learn, and communicate.
Coding is fun! But learning to code is a significant investment of time and maybe money. Naturally, you want to know what you’re going to get out of it.
I’ve been setting up Review Apps on Heroku to streamline our product process. Review apps let you automatically spin up new app intance for every github pull request, creating isolated testing environments for each feature. Pretty neat! …in theory. In practice I hit some hurdles. For example, our app relies on shared third party resources and a large postgres data set. In this post…
A practical comparison of React and Angular 2, as we select a front-end framework for the Ascent app. Why A Front-End Framework? Our javascript is well-organized so far, but consists only of jQuery and plain javascript. This works great for small one-off scripts, but makes it difficult to create larger more complex applications. We have some intensive front-end projects coming up that will require…
The Blind Leading The Blind I have a number of recent example of people starting tech careers 5 years into a different career. They’re already SO strong on the non-code aspects of programming - partly I’m sure because of their personalities but also because they’ve had some time to figure out how to be an adult with a job. Problem solving, teamwork, self-teaching, communication,…
I randomly started getting this heroku error today: ~$ heroku --version ERROR: runtime error: invalid memory address or nil pointer dereference ! error getting commands pid 1923 exit 1 It was happening for every heroku command; heroku login, heroku releases, heroku run console, heroku logs. Doing a full uninstall and reinstall of the heroku toolbelt fixed the problem for me.
“The goal is not always meant to be reached, but to serve as a mark for our aim.” –Joseph Joubert Set goals that are directly measurable Example: Speed up test suite to run under two minutes on our CI server The gold standard of goals! Total clarity on what I’m trying to do, and whether or not the goal has been accomplished. A measurable goal is an achievable goal. But sometimes the…
We’re starting on a new version of the internal PrettyQuick API that powers our native clients and AJAX. The original version was based largely on what our consumer iOS app needed, but going forward we want to build a more general API to better support multiple clients for multiple constituencies. Luckly, Heroku has thoughtfully prepared a list of API best practice recommendations.…
There’s been renewed discussion recently about cultural fit, what it means, and its place in your hiring process. This pendulum has been swinging for years, because there are strong arguments both for and against. As usual, the answer lies between the extremes. A thoughtful cultural interview, as one component of a comprehensive hiring process, can provide some of the positives while…
Much like code smells, there are conversation smells. Words that should be a red flag, words that often indicate something bad is happening. Here are some words I watch out for in dev meetings. Obviously The fastest way to shut someone down is to make them feel stupid. Saying “Obviously” prevents me from asking questions about what you said. If it’s not so “obvious”…
I’d like to share a personal revelation in case it applies to you too. Mo' Developement Mo' Problems I’m a developer in large part because I enjoy solving problems. I like how there are so many aspects of solving a problem. Defining and redefining. Looking from different perspectives. Empathizing with users. Thinking about various approaches. Testing those approaches. Determining…
Very early in my career, I was setting up some pressure sensors. The sensors had tiny wires coming off them, which someone had soldered to shielded co-axial cable running back to the data acquisition board/laptop. My task was to fasten the sensors to a frame, which I completed quickly and thoroughly. My boss checked in, complimented my framed sensors, and mentioned that the way the tiny wires…
Today I switched from RVM to rbenv. This ThoughtBot post was a great starting point. I ran into a couple hitches. Here’s how I got through it. Do this stuff before you start the ThoughtBot stuff. First, brew doctor. I ran it a bunch of times and followed the steps until it was clean. The hardest step was XCode. I was running 4.2.1 and brew wanted 4.6.3. I downloaded the new 4.6 version…
Here’s what Heroku says about dyno memory usage: Dynos are available in 1X or 2X sizes and are allocated 512MB or 1024MB respectively. Dynos whose processes exceed their memory quota are identified by an R14 error in the logs. This doesn’t terminate the process, but it does warn of deteriorating application conditions: memory used above quota will swap out to disk, which substantially…
SUMMARY: This is a step-by-step overview of how to get Oink installed in your Rails app on Heroku, and use it to analyze your memory usage. Starts with a brief description of the problem space, skip down if you just want to get on with your Oink integration. My stack includes these technologies: Rails 3, Unicorn, NewRelic, Heroku, Hodel3000CompliantLogger, and now Oink. Why is understanding memory…
Make a file called epoch.rb in your project (I put mine in config/initializers). Use it to store constants that represent the times when big dev events happened. For example: CART_RELEASE = Time.local(2013, 04, 22, 13, 45) We released our shopping cart at 1:45pm on 4/22. Fast forward to today: some of our stats are messed up, for deals that were live across the cart release. I need to fix the…
So you’ve learned a few HTML tags and the basic structure of an HTML document. Now what? Since HTML adds meaning to content, the basis for all these suggestions is “find some interesting content and add meaning.” Really, anything that gets you in your editor or browser playing around with this stuff is going to be useful. Pretend you’ve been hired to make a web page for a…
I gave a 10-minute intro to table_print at ChicagoRuby this week. The video turned out nicely, check it out in the ChicagoRuby video archives! All the lightning talks from the evening are in a single video, but I’m up first.
Imagine: you open a rails console and type User.limit(100). The output shows your database call, then… ACTIVE RECORD GUT PUNCH!!! Your screen is overrun with an inscrutable wall of text. I hated it. I had some coping mechanisms, but they were cumbersome. For example, the map-and-print: puts User.all.map { |u| "#{u.id}, #{u.email}, #{u.bio}" }.join("\n"); 0 This still sucked. Tons of typing,…
From https://stripe.com/blog/stripe-checkout: It’s unfortunate that everyone has to reinvent the wheel when the time comes to implement a payments UI. We decided to build something that you can just drop in as a single tag The script tag creates a “buy” button on your page. Clicking the button pops a modal payment form where the customer submits their info directly to stripe.…
UPDATE: I made a gem! Just add gem "marco-polo" to your gemfile to see your app name and environment in your console prompt. I hate when I have a bunch of consoles open and I don’t know which one is local, which is staging, and which is production. I could potentially do a lot of damage by using the wrong one. I find myself typing Rails.env over and over, to figure out which environment…
It’s easy to let CSS get out of hand and it’s hard to really take advantage of the cascade. Here I’ll explain some techniques that help stem CSS bloat. When you aren’t disciplined with your CSS, it’s easy to end up in a situation where it’s hard to… know what parts of the site a particular rule is acting upon know whether a given rule is ever used be…
(Note: if you aren’t using jasmine and jasmine-jquery to test your javascript go take care of that) Suppose we’re working on a sliding tile game, and we want to log the moves a player has made. We could create a Logger object to collect the moves, and use a callback in the Game method to update the logger. One of the simplest ways to implement a callback is with standalone function:…
I don’t know the purpose of a rant about a hosting provider except to vent my own frustrations, so I’ll keep this quick. Here’s a step-by-step list of the reasons this blog is not on Bluehost: During checkout, I was never shown a total amount for my order - just a monthly price. It wasn’t clear whether I would be paying up front or be charged monthly. I left a field empty,…
The Problem This technique came from my work on table_print, an irb tool for showing ruby objects in tables. I wanted to let people configure its output on a process-wide basis; eg, a default date format so sll their dates are shown consistently in the way they prefer. Additionally, I wanted a simple, easy-to-remember interface and a clean global namespace. The Solution Here’s a basic syntax…
Pulled this out of a talk by Avdi. This technique is described at 16:00 in the video. It’s nice for the user of a library to be able to catch any error coming out of the library, but at the same time, it’s nice for a library to pass through basic error types like HTTPError. To solve the problem, you can “tag” the HTTPError with your own error class, essentially raising both…
If you’re attacking a problem that just isn’t coming together, stop and take a step back. The feeling of “GAH WHY IS THIS SO HARD” is a preemptive code smell, alerting you that you’re about to write bad code. My most recent TOO HARD experience was with table_print, my gem that prints objects as tables. I had Law of Demeter violations all over the place,…
(Fashionably late on this one, but I think it’s an important conversation to keep having) Wall Street executives took trillions of dollars from us, and we’re justifiably angry - but it’s not entirely about the money. We are a nation of entrepreneurs, a nation of people who strive to make their lives and their neighbors' lives better, a nation who care for each other - committed…
My friend recently asked me “Do you have any advice for encapsulating javascript or how to break an application into files/namespaces? Most of what I see online for javascript is hacky and not about designing for maintainability.” Turns out I do! First of all, you need jasmine and jasmine-jquery. I always thought TDD was a nice but impractical idea until I had an environment with fast…
I attended the Chicago Ruby Hack Night meetup last tuesday. The theme was IronMQ, a message queue web service. You can post/get/delete messages through a set of super simple HTTP endpoints, and they handle the tricky (or at least boring) stuff like storage, retries, etc. Honestly, I almost didn’t go. I know that exposure to new technologies is good for me, but usually I have a hard time…