A 39 post collection

Don't be a "Did it work? Yay! Ship it!" coder

 •  Filed under Programmer, Programming, Software, Software Development

I'm working on a longer post on what it means to write high quality code, but until that's done, I wanted to call out what I see as the tell-tale sign of less experienced programmers. It's when you see that "Did it work? Yay! Ship it!" quality to code. Let's call the person who does this, the DIWYSI coder.

So what are the signs of the DIWYSI coder?

The most obvious sign is lint, lazy writing or code structure, and lots of notes to self that never get acted upon. I don't mean that code has to be perfectly structured. I'm really not a perfectionist. It's just that someone who is only trying to get the code working and not thinking of other programmers is going to just hack, hack, hack, and once it works, commit and move on.

This kind of code often looks like:

    const thing = function someFun(){
      If ( something)
          // How does this even work?!?!
             Do_the_thing() }

This is exaggerated, of course, but it's not far off some stuff I've seen.

Keep this in mind -- great code is much more than just writing something that runs correctly. "Did it work?" should be the first question you ask, not the only question. If it doesn't run, then yeah, it's not good. Anyone working as a programmer today ought to be able to write code that runs. Writing code that runs and that another programmer can pick up and understand is much better.

The barbell effect of machine learning | TechCrunch

 •  Filed under Artifical Intelligence, Ai, Machine Learning, Data, Software

The barbell effect of machine learning | TechCrunch

As revolutionary as machine learning will be, its impact will be highly asymmetric. While most machine learning algorithms, libraries and tools are in the public domain and computing power is a widely available commodity, data ownership is highly concentrated.

The best article I’ve read on the positive and negative effects of machine learning and AI proliferation.

On Writing Software and Fiction

 •  Filed under Software, Onwriting, Fiction, Writing

I write because I don’t know what I think until I read what I say. –Flannery O'Connor

I have been a writer for as long as I have been a reader. I can remember getting comics at about the age of 7 or 8, hiding out to read them behind my mom’s worn-out recliner, and then scratching out my own comic stories in a spiral notebook meant for school. I don’t remember these stories, but I’m sure they were terrible. I imagine them as stories about 7 year-old X-Men characters, likely trying to survive the whopping they would get after running away from the local YMCA.

The stories themselves might not be memorable, but I do remember kid-writer me trying to make sense of the world by writing.

Writing was a constant for me as a child and teen, so you’d think it would be obvious that I should study literature in college. The truth is that I fell into an English degree quite by accident. I had no idea what I wanted to do in life when I graduated high school. I floundered for awhile, taking a little of every kind of course, and then it dawned on me — why not major in English? I knew I liked reading and writing as much as anything else. I was certain that English was the only thing I would enjoy for the entirety of a college degree.

I fell in love with literature and that only strengthened my love for reading and writing. I wrote all the time back then — fiction, poetry, papers for class, notes in the margins of books. I think this is when I started writing in Moleskine notebooks, likely an attempt to be seen as a serious writer. It’s a bit pretentious, looking back on it, but it’s a habit that has stuck. I still enjoy writing with pen or pencil, maybe even more so these days, given the time I spend looking at a computer screen.

After college, I fell into writing software, as much by accident as the English degree I earned. I never thought I’d like working on computers, but I had a friend who insisted I try.  He was right. Now I spend hours each day writing code.

Writing code is a lot like any other writing. It’s just words at the end of the day. The effect might be quite different — to make the computer do something you want it to do — but the other qualities are pretty similar. The audience is your fellow programmer, and the idea is to put down in writing what you figured out. All writing is thinking. Like Flannery O'Connor said, you can’t really understand what you’ve worked out until you look back at it in written form.

I have been in a bit of a writing slump lately, a slump affecting all my writing, both software and fiction. Some of this is due to circumstances, both at work and in life, making it hard to write. The circumstances aren’t what paralyzed me, though. The truth is that I always live with a constant tension, a tension that appears in the form of a nagging, incessant question — am I a programmer, or am I a writer?

At face value, it’s a silly question, but when life applies pressure, pokes at you, and squeezes what you love most, a silly question can transform and begin to taunt you. It starts to say — You’re wasting your time. You’re being selfish. You’re not very good at this, anyway.

This is where my software side can hurt. In tech, you only ever do something if it’s correct or if you’re good at it. The thing is, I didn’t start writing fiction or software because I was good at it. I didn’t start because I thought I might one day be good at it. It just kind of happened, accidentally, because I enjoyed sitting down and writing.

I think I’m starting to get back to that, back to writing because I enjoy it, no other reason required. Appropriately enough, I only realize this because I just wrote it down.

Developers Need To Broaden Their Range

 •  Filed under Software, Development, Developers

Developers Need To Broaden Their Range

Do full stack developers actually exist? I think so, though the term is over-used and abused. This piece, despite the slightly sensational headline, is pretty spot on about what it means to be a full stack dev.