Posts tagged: SOFTWARE ENGINEERING

I like writing tests

I like writing tests

I enjoy writing tests because I love what they give me. I love knowing that I’m adding defense against breakage from future changes. I love thinking through how a feature is really supposed to work, and having the test capture that understanding. I love thinking about edge cases that the code should handle, and writing tests for them — especially if it turns out that the code under test didn’t yet handle them correctly, because that means I’ve just saved us from a bug.
The care and feeding of tickets

The care and feeding of tickets

I can be kind of a stickler about leveraging the ticket/issue tracker in software projects (which always seems to be Jira these days, but nevermind that). I write tickets carefully; I link to related issues; I add comments to note the status of work in progress, or to record info that’s important to the work to be done.

How to get a remote software engineering job

I’ve been a full-time remote worker since 2010. The COVID-19 pandemic has brought big changes to things involving face-to-face contact – like going to an office for work. Since this sea change has gotten more engineers (and employers) to think about remote work, I thought I’d share some tips on how to find and keep remote gigs. This was written with junior-level engineers in mind, and is more about full-time employment than freelancing.
How to port 100,000 lines of Python 2 to Python 3

How to port 100,000 lines of Python 2 to Python 3

TLDR: Use python-future. The Project Last summer I led the conversion of a 100KLOC Python 2 web application to Python 3. The application is called “Accelerate” - the backbone of operations at my employer, MassChallenge, a global startup accelerator. It handles every stage of a running accelerator program: account creation for entrepreneurs and experts (mentors) startup applications online and in-person judging of applications coordination of one-on-one meetings with mentors during the program generation of reports used by judges selecting cash award recipients So, it’s a mission-critical app.

How it should go when you screw up

A couple weeks ago I accidentally replaced our live, production database with a 17-hour old snapshot. I had intended to target a test server, not production. I didn’t realize what I had done for an hour or so, and by that time I had already left work. (I was actually out walking my dog. Not a good setting for managing a production crisis.) Here’s how my team and I handled it.
How I became a software engineer, 8-bit version

How I became a software engineer, 8-bit version

You could say Z-80 assembly language is what really turned me into a software developer. My first programming language was BASIC, which was built into my first computer (a TRS-80 Model III). I wrote a lot of BASIC code, including arcade-style games (compiled BASIC — you can still play them on this TRS-80 Model III Emulator). I always wanted to keep learning. There was no World Wide Web for research and nobody I knew could guide me, so we went to Radio Shack and asked them how else I could program the computer.
How did I get here?

How did I get here?

(I recently posted this on Quora in response to a question along the lines of “Engineers, when did you decide to study Computer Science?”) I have been a full-time software engineer for the last 7 years, and a part-time one for ten years before that. I have never formally studied computer science. It wasn’t an option before college (small high school in rural Vermont). And at the otherwise excellent small liberal arts college I attended, it wasn’t one of the available majors.