14 June 2015

2090 Miles -- PTSD and Software Development

That's not a title you see every day, right?

This is still a blog about PTSD and college, but as I'm doing more software development my life is also becoming more about PTSD and software development. I'm going to start writing more about PTSD and the difficulties it brings to writing software, but also some of the tools and methods I am using to mitigate its negative effects on the process. 

Along with the PTSD and college things, of course. 

This past week, I spent most of Wednesday in Chicago at the Field Museum attending the Build Tour, the version of the Build developer's conference that Microsoft recently held in San Francisco. It was a full day of presentations/sessions/talks mainly about the upcoming release of Windows 10 and what Windows 10 means for people who build software for Windows, especially Windows 10. I'm a hacker, and I'm writing this using Libre Office on a computer running Fedora 22. I share in at least some of the disdain that most hackers have for Microsoft, some of which is deserved and some of which is me being the high school hacker that heard how Bill Gates got pissed off about people copying BASIC back in the day.

Then again, because I'm a hacker (and because I'm a person who builds software for the love and wants to get paid for doing so), I will not turn down a free trip to Chicago to hear about what a major software company is going to be releasing later this summer. Back in the dot com days (I hesitate to call it an era, but it might have been that), I did a lot of work in Visual Basic 6 and Active Server Pages (ASP). I am also a person who works at a university (can we just say enterprise?) help desk, and so knowing what's coming next is always a good thing.

There was free food, too-- including donuts and coffee on the bus on the way to Chicago. Not saying that was the only reason I went, but it was a nice bonus. Microsoft may be the Evil Empire (I know it isn't, but follow me here), but those cats at least understand something about the care and feeding of programmers that are awake to get on a bus at 0445.

Me, I was still up-- I'd been at work until 0100, then spent the early hours of the morning working on one of my personal projects. I fell asleep after the donut, and didn't wake up until I felt the bus moving like it was in traffic. Which it was, the driver had hopped off the freeway onto W. Addison St. I looked at the street sign, then some house numbers, observed they were way higher than 1060, and fell back asleep. (I was a courier for a while after the dot com 'era', and hopping off the Kennedy Expressway onto Addison, eventually turning south, and hopping back on the Kennedy made perfect sense. So, not enough to keep me from falling back asleep.)

Conferences, even developer conferences, have a social component. You run into people you know from seeing them at other conferences, you meet new people, and you talk shop. If you're a veteran, you find at least one other veteran and you talk about where you were stationed (and then you talk shop). I ran into a retired Air Force guy that had done avionics work on F-4's and T-33's. I'd been to the Desert, he'd been to Kosovo. Both of us in college, both of us learning to build software as a career. He'd driven in all the way from Detroit.

When he introduced himself, I was busy attacking the Caesar chicken wrap I'd grabbed from the lunch table and looking up at the skyscrapers. Madison doesn't have a skyline, so whenever I'm in a city-sized city I have to look around for a while. Anyway-- I was feeling a bit anti-social, probably because I was low on sleep but also because I was triggered, a little. (On the bus ride down, someone had sat next to me, which on my checklist of social anxieties is a trigger. I like my personal space, and I'm not small, so someone my size sitting next to me means neither of us gets personal space.) Talking to another veteran is always a good thing, and doing so loosened me up (which talking to another veteran always does).

The social component of developer conferences (and hackathons, by the way) is often refered to as networking. Some people are naturally good at making a lifelong connection every time they meet someone, but for me it can be difficult. I've had a lot of people in my life that I considered friends, or at least important to me, turn out to be people that hurt me in some way-- or just disappeared, for one reason or another-- and neither my family nor my childhood offer any help. My family didn't network. My family most of the time didn't even talk about anything, so I've had to learn the whole networking thing as an adult. PTSD affects one's ability to process things like trust-- with PTSD you perceive everything, and by extension, every person, as a threat. The past couple of years dealing with landlords and Porchlight and being homeless haven't made things any easier. Then add that I'm on medication that changes my mood (for the better, but still) and the idea of networking gets a lot more complicated.

Since being on my own again after transitional housing, and especially this year, I've spent a lot of time alone. This is part of me working on healing from everything that's happened, focusing on myself and getting my life in some kind of order. I've been becoming a lot more self reliant-- I've seen what it's like to let 'the system' take care of my life, especially the part where I ended up back on the street-- and so I've also become less trusting. Having a social circle, even of people who do what I do for a living, is something that requires at least a little bit of trust. You have to be willing to listen to what other people say, and you have to be willing to give your opinions at the same time being willing to listen when people tell you you're full of shit. This willingness, in terms of PTSD, is a liability. A social circle (even a professional one) means that you drop your shields and let people be a part of your life, but the PTSD is screaming at you not to let anyone too close because you can't trust anyone and the world (and everyone in it) is dangerous. PTSD says it's best just to avoid people altogether.

The problem is, writing software that people will use is an inherently social activity-- you have to talk to other developers, you have to talk to your boss, and most important you have to talk to the people who will pay for and use the software that you make. Sometimes you have to take a stand and defend your position and ideas. Sometimes you have to listen, and empathize, and most important you have to understand. Worse (not in a bad way, keep with me here), you have to communicate. You can't always eat lunch by yourself, you can't always sit alone on the bus, and you can't always stand at the back of the theatre (which I did) where the talks are being held. Everyone I've ever talked to about software development has said that the ability to communicate with others is the most important part of the entire process. Everyone whose advice I've heard about getting a job says that it's not just what you know, but who you know.

I agree, on both counts. I know these things are true.

I watch people. Part of this is because of my military training, especially from being stationed in other countries. I was taught to always be aware of my surroundings, of the people around me-- what are they doing? Is something about to happen? If someone tosses a pipe bomb in the window, what are you going to duck behind? In looking for threats, you see a lot of other things, a ton of other details, a lot of it subconscious. People do that normally-- we're always judging each other's body language, appearance, etc-- but (back to homelessness again) when you're homeless and in an environment like a university you do everything you can to be invisible. When you're a kid suffering abuse, you do everything you can to be invisible. At the same time, you're always paying attention. That's why hyper vigilance is-- it's not just about “am I going to die”, it's “I have to know everything that's going on around me to stay alive”. So you notice a lot of little, mostly meaningless, details about people.

What I noticed at Build was different than what I notice at hackathons-- it's a different kind of meeting, for a different purpose, of course. At hackathons, I'm the guy that blows the bell curve. If I'm not the oldest person at the event, I'm almost guaranteed to be the oldest hacker. A large majority of the other hackers at a hackathon (and even some of the people manning the sponsor tables) are young enough to be my kids. Build, especially the tour version that goes around the world, is geared towards professional software developers. The people I saw, and talked to, at Build are adults earning a living writing software for people who pay them to do so. Some of them have kids (probably some of them have kids in college), and houses and cars and all of the things you'd normally associate with being in IT, working in the city and living in the suburbs. I saw at Build a lot of people that look a lot like me, or at least the me that I thought I might look like at this point in my life. At hackathons I see a lot of people who look like me twenty (or thirty) years ago. (I'm trying very hard not to express this in terms of stereotypes-- it's a lot more complicated, I know, so if you find yourself offended right now please let it slide.)

It's hard, when you've been homeless, to see yourself living in the suburbs and commuting to a white collar job in the city every day-- to see yourself either as one of the people attending Build, which is actually my tribe, or a hackathon hacker, which is also my tribe. It's perhaps not that unusual to be in your mid-40's and be in college, but it is unusual to be in your mid-40's, in college, and living on caffeine while learning new JavaScript frameworks in the middle of the night while planning a move to Silicon Valley to make your dent in the universe.

It's hard, but it's not impossible, because that's what I'm doing.

I spent the day at a Microsoft developer conference learning about writing software for Windows 10. I'm not all that familiar with current Microsoft way-- the APIs, etc-- because the last Windows operating system I really developed native apps on was Windows NT. If you asked me about .NET I'd give you a funny look and a shrug. Not my thing. Even so, there wasn't anything presented at Build that I didn't understand. There were a lot of new things, like XAML and the Windows Universal Platform that I'd not heard of until Build, but as I watched the demos and presentations I really got into them. I learned a lot, but it was adding new knowledge on top of old knowledge. If you asked me today to develop an application to run natively on Windows 10, I'd at least have an idea of what tools I'd be able to use and where to start.

I have another position now, where I work-- I still work help desk QA, but I'm also a student software developer. I go to work, put down my backpack, pull out my laptop, get signed in, and I start working on an application that's going to be used at the campus retail technology store. I'm adding SMS texting capability to an app that was originally designed to use the kind of pagers that look like the coaster-sized ones you get when you go to a restaurant and have to wait for a table. Here, you wait for a technician.

I've had to (re)learn how to use PHP and MySQL, and configure Apache, all of which have gone through a ton of revisions since I last touched them. The PHP world does things differently than the JavaScript world, both in style and substance. At the same time I'm using tools like Git to keep track of revisions, Trello to keep track of tasks and issues, Grunt to automate linting and testing-- the list continues. If you're lost by the terms, that's ok-- the point here is that making modifications and improvements to existing software, and learning new languages and development tools, is what being a programmer is.

Communicating is also what a programmer is; I had a meeting on Friday with my boss and the supervisor of the retail store that's going to be using the application that I'm working on to discuss the details-- functions the app will have, the interface, etc. It went well. It's the second meeting I've had with the store, aka my client, and each time I've learned new things about what I need to do and had my questions answered.

I'm finally getting to write this all down, but this is the story and the discussion that plays back in my head every day. There's the PTSD, always there, always telling me how dangerous the world is (the Persian Gulf War, 9/11) and how everything that can go wrong will go wrong (failing classes), and that I should avoid everything (like a social life). There's all of my experiences that say I can't trust people (like Porchlight who said they were there to help me and proved otherwise). There's all of the people who have told me I need to settle for something, to just accept things the way they are (like the Vet Center person who told me I should just be 'retired'). Even my Mom, who upon hearing that I plan to move to California next year was all like, “but it's so expensive out there”.

Every day, I look at the facts. I look at what I'm doing now vs where I've been, all the failures and all of the successes. I'm extremely critical-- I ask myself if what I'm doing is right, if I'm doing it the right way, am I following the right advice, am I doing things when I code that others Consider Harmful™? Will anyone be interested in hiring a 40-something programmer, especially one with PTSD? How am I going to deal with asking for disability accommodations, things like a flexible schedule or time to wander outside along without a boss asking my why I'm not working? Am I going to end up homeless again, except this time in California?

Every day, I have to have this discussion with myself, and every day I reach the same conclusion. I'm not doing everything perfect. There are probably companies that won't hire me because I'm twice as old as most of the people that work for the company, and there are probably some that will read all of this and figure I'm just a liability. I'm aware of Google. I don't try to hide my blog, although I don't advertise it either-- still I know that a potential employer might someday see it. I'm okay with that.

That's ultimately why I'm spending so much time alone. I'm not a complete and total introvert. I do enjoy the company of other people, and I also enjoy working with other people. I also know I need a certain amount of space to be happy-- I need alone time to function. So much of life the past couple of years has been making my life fit into what other people (college, transitional housing) has required, and right now I'm working on what I need to be productive.

Build Chicago means a lot because of the technology, but spending the day among people who are professional software developers-- some of whom are hackers, and some of whom are not (which is a discussion for a different day)-- and experiencing the social anxiety and the emotions and the PTSD-- doing all of that, and at the end of the day still being willing to believe that I belonged there. I had as much professional right to be there as anyone else. Just the same as I have the same right to be at hackathons staying up for 36 hours and hacking with people who could be my kids. That I can do these things even with everything that's happened, even with a disability, means I've earned it-- and when I get to the mythical place that is Silicon Valley I'll earn my place there, too.

A journey of a thousand miles begins with a single step. (source)

It's 2,090 miles from here to San Francisco, CA. (Google Maps)

No comments:

Post a Comment

If you'd like your comment to stay private, please let me know in your comment. Anonymous comments are also allowed.