I'm a techie; currently I am living in the world of Linux1. I didn't always think I would be. In my teens, I was into computers. That meant that in the late 90s, I was chatting to folks on IRC over a dial-up modem. I didn't consider myself technical, just lucky to have an internet connection with enough wherewithal to understand how to use the applications2. I liked to learn how the things I used worked, but I couldn't do anything with that knowledge. I learned bits of IP and TCP until I realised I didn't have the programming chops to make what I wanted to make; sure, I did a bit of c++ when I was 13, but never got past for loops. Also, a friend of mine was seriously getting into programming at the time, and was zooming ahead with programming. That friend also made a lot of noise about himself and his skills. He believed his own press, and so did I.

Also, because I was trying to figure out my own gender issues around the same time, I spent more time with online trans communities than pursuing things like programming. Like I said, I was satisfied with a Win95 box, an mIRC client, my Netscape 3 suite with its mail/news utilities. Some of the people in that community also bigged up their skills and their involvement in the open source communities and whatnot. Their press machines were in full flow, and I believed them like I did with my friend. I didn't believe I could measure up in any meaningful way. Hell, I didn't know much about Linux. My friend had Linux (an early Redhat3 if I remember correctly) on his machine. So did my girlfriend, who was coding. So did the Open Source guru, and if she was to be believed, she wrote parts of it. I decided I wanted different dreams; I wanted to be a psychologist4.

Sure, I was good at Maths in school, and I was good at science... But there was a talk in my school from some software developers, and they tried to move people away from the image of a maths and science person. "We don't want NERDS", I remember one of them saying in a thick country accent. "We want team players; we want the type who do well in soccer." Given that I knew I was a bit of a nerd in school, I took that as a deterrent. I don't think the general encouragement managed to really sink into the ears/brains of those around. That said, the class-mates I took for shoo-ins in computer science never actually went for that course in college. Good thing I had already decided on psychology.

By the way, psychology didn't work out for me. There are a whole number of reasons, but the main one was that when we learned about the nervous system, and neurons, and the general hard biology of the brain, I realised I really liked those details, and while I like asking if the psychological experiments we did actually demonstrated what we were taught they should demonstrate, the rest didn't hold me. So I decided I wanted to be a Scientist; a Theoretical Physicist to be exact.

In my science course, I had to take an extra module, so I took one in Java programming. I did pretty well. I surfed by on some of the stuff I learned when I tried to teach myself c++, and was able to figure out the rest from some basic maths. "Functions? Man, they look an awful lot like the polynomial functions used in maths, and I think all the variable types are just hints to a compiler so it knows what sort of data goes in and out." I knew just enough to know when I knew something, but also knew enough to know when I didn't know something, and would have to work it out by myself. So I did a lot of internal monologuing, and told myself a lot of stories about how I thought things worked. Then I figured out if it worked the way I thought, and amended the story appropriately. I did extremely well in that module. Unfortunately, while I did extremely well in that module, I didn't do so well in my 2 physics modules5, to the point where my programming score was twice that of my two physics modules combined6.

Anyway, I didn't do well enough to continue to second year, so I dropped out, worked for a year in a clerical role, hopping from one short 1-3 month to the next contract, always on the lookout for a new job because I was never sure if my employer would renew the contract. Eventually, I got the chance to try one final time for a degree. I knew what I wanted to do now. I did computer science; and I worked hard at it7. While I wasn't top of my class, I did well, and I've been working in the tech industry for nearly 5 years now. I count myself extremely lucky in that story. There are so many place I could have failed before I got to where I am now.

In that time, I've looked back at some of the things that those technical people did. I realise now that a lot of it wasn't so big. They just were able to talk about it well. My friend in my teenage years, looking at his code from back then makes me wince. I hope it makes him wince as well, otherwise he's probably not learned much from it. Another talked about being able to make certain tools in a few evenings, and I realised a few years back how easy that job would have been.

What really stuck with me is that talk I got in school. I think I get what they mean now, although their delivery was, quite frankly, piss poor. I think they thought that they could get a more diverse bunch interested in the IT business if they appealed to the not-a-nerd crowd. I think they went about that in the wrong way, while potentially alienating the people who thought they wanted to be in that field.

For years, I've thought about how I'd deliver a similar recruitment speech to schools. I thought about how I'd deliver it to young men and women to see how I could get them in the door. I don't know about the rest of the world, but people keep concentrating on maths as a skill. I disagree. But before I go on, I'm going to digress for a second8.

I believe we need more women in the IT fields. Far more articulate people can detail why. Personally, as a trans woman (in a very odd position by way of transition), I want more diversity in general, and I think addressing the basic gender imbalance would make a pretty good start. That said, I'm not going to call myself an advocate, just an ally at best. I don't have the energy, nor do I think that my direct involvement based on my own issues are going to help much9. That said, I do take a keen interest in what others are doing, and can appreciate what is being done in that area. So when I saw she++, a video talking about women in tech, while also trying to encourage women to try technical roles, I was very interested.

Overall, I love what it's doing. I like that there's honesty, and I also like how it's nothing like the EU's ill-fated attempt to encourage women in science10. That said, some elements of it really reminded me of that recruitment talk in school.

What follows isn't a criticism of the video. I think it's excellent. However, it did raise various gut reactions in me. Thing is, I know this video isn't for me, so I would be mortified if any of these ramblings were used to try and justify demanding that the video be changed, especially if it's by a group this video isn't for.

So, tying back into how I'd want to present a recruitment drive in schools. I'd want to dispel the idea of maths being a necessary thing in computer science. Near the end of she++, there seemed to be a lot of emphasis on that. You know what? In the last 5 years (basically my entire working life in IT), maybe a little more, I haven't needed major maths, just some understanding of addition and multiplication. I think the last thing I needed it for was some pretty heavy and trippy stuff involving neural networks. And before that, when someone tried to teach me lambda calculus.

Let me just say: No. I mean, yeah, lambda calculus is a fairly core theorem in computer science, but it doesn't impact on my day to day life. In stuff like neural networks, it's domain knowledge. Similarly, if I was programming a simulation of particle collision, I'd need to know, and understand, some formulæ that model the world. But aside from domain specific knowledge, and understanding some of the seminal contributions to the theory of computing, I can't say it's absolutely crucial.

What I think is essential is language, and task subdivision. Can you break down a task into its most fundamental elements. Could you take those fundamental elements, and then sit down with a creativity-impaired 4 year old and communicate those fundamental steps to that kid? When you see the kid mess up, can you put yourself in their very literal shoes and figure out where you went wrong in your instructions? If you think you can, then congratulations, I think you could make it as a computer scientist.

A computer is a like a really dumb, but really fast, toddler. Don't believe me? If you have an hour to spare, listen to Richard Feynman on the topic11. Realistically, in this day and age, unless you're working on a really low level, you'll be treating a computer like a toddler giving it simple instructions. The difficulty of my job is not in the maths, it's the careful and unambiguous expression of what I want the computer to do.

That said, I'm biased. The way I learned programming, and general tech stuff in my adult life was by telling myself stories about I thought things worked, and refining and retelling those stories until I had a small working model of computers in my head. To me, programming is about words, stories and clear expression.

That's not to say that maths isn't a bonus; it really is a bonus. Chances are, if you're good at the maths side of things (or any science), you're probably good at the sort of logic needed for programming, and for breaking a problem down into its constituent parts. Also, if you happen to end up making a program to analyse statistics, you probably want to understand the maths behind the stats calculations.

So, what about the stuff like lambda calculus, should that get thrown by the wayside? No, I think that understanding that really helps you understand other things, but I've seen lambda calculus expressed in interesting non-mathematical ways.

Anyway, communication doesn't stop there. Communication and collaboration is needed in pretty much any technical job. More than likely you're not going to be the solo techie on a project. Even if you are, you'll either have a customer, or a boss, or someone else that you need to talk to. In general, if you're skinny-dipping in code, you're not going to able to speak to humans that well for a few minutes after surfacing. No really. Specific words take on very specific meanings in the field; one word is not always substitutable for another. It has the effect of limiting your active vocabulary for a while, so that when you're talking to non-techies you may sound like you're speaking a different language for a little bit. That said, if you're someone who's good with their words, you will have less of a problem getting back to a point where you can speak human. If you really know your stuff, and are articulate enough, you can be a good intermediary between non-techies and techies. I honestly believe that the tech sector lacks diplomats and translators (purely because of the mismatch of expectations on both sides) - this is somewhere I would love to end up, although right now I enjoy working in pure tech too much to consider an intermediary role.

Communication is necessary in all levels of my job. I need to be able to talk to, and collaborate with my colleagues. I need to be able to tell my various bosses what's going on in various levels of detail, while still giving them what they need to know. I need to be able to train in, and mentor, new joiners. I need to communicate what I'm doing to the customer. Each needs varying degrees of detail, and I need to deliver it in an effective way that conveys what they want/need to know, without too much embellishment. Last, but not least, I need to tell the dumbass computer what it's bloody well meant to do.

There were some other little things in the video that rankled my wrinkles, namely the implication that being good at tech meant you were better at everything. Yes, the skills of being able to break down a task into its constituent parts is a good thing, but the general hubris can be annoying. Almost every time I go on reddit, I want to smack that attitude out of some CS student who seems to think that because they can tell a computer what to do that they know how to do everything and that they have a solution to all the world's ails. Yes, you are trained in the use of a very powerful cognitive tool, but if all you have is a hammer, everything looks like a nail, and this world isn't made of nails. You also need to know when to turn off that bit of your brain. It's only a minor snag, but I reckon the less encouragement we can give folk to think that they can rule the world because they're a computer whisperer, the better.

That said, an excellent point was made that programming lets you look at your hobbies a different way, and your hobbies help you look at programming in a different way. Have a look at juggling some time. I see a beautiful marriage of a simple set of instructions, motion, and hand-eye coordination. I've recently taken up crochet, and find it really satisfying in the sense that there's an order that I could probably model in a machine. Who knows? Maybe those things will help me think of a solution to a programming problem I have some day.

Anyway, on the subject of how I'd sell my field to kids in school, I haven't thought further than trying to express the fact that it's down to communication. Sure, if you're good at maths, that's great, we want to hear from you. But if you're good at communication or are able to express yourself in different languages (which always felt like I was using the same bits of the brain for that as I do for programming), we also want to hear from you too. I just wish the guys who came to my school managed to put it that way, rather than alienating the self-identifying nerds.

As for the video, I really did love it, and want to see more like it. It just got folded into my general rambling rant because I happened to see a link to it when I was thinking about writing a blog post talking about the habit of misrepresenting CS as a maths-only kind of deal, which I think does an injustice to IT.

The final thing I want to say is for anyone starting in IT. The she++ video does a really good job at identifying and calling out the sort of stuff that leads to impostor syndrome. The really funny thing is, even though I looked like one of those speed-ahead folks in the labs, I was still trying to figure my way out. I also slowed right down in the "weeder" modules in the following year; it humbled me.

If I could offer one bit of advice to anyone looking the others speed ahead it's: Don't. I know it's hard, but don't look at those speeding ahead if you can at all. The last time I was in fresh meat, I was struggling along, and could only see the skaters who lapped me time and time again. It was incredibly hard not to feel like I was the runt of the litter. The funny thing was, when I stood off-track for a session, I noticed the really good skaters but how few of them there were, and how the rest were in the same position. I even remember telling another trainee skater, at the end of that session, how she honestly wasn't doing as bad as she thought she was; she was keeping pace with most of the rest, but could only see the really good ones overtaking her. I realised she was doing the same thing I was13, and I managed to feel a bit better about myself. Unfortunately, because of an injury I wasn't on track again to put that knowledge to the test.

Anyway, I know how hard it is to conquer the feeling that because one person is racing ahead, that everyone else must be doing the same as well, so the simplest advice (even though it's so much easier said than done) is to ignore it, and keep doing what you're doing.

If that doesn't work, comfort yourself with the fact that, like a lot of the people who made me feel like tech wasn't for me, probably a lot of them are churning out crap in the name of looking like they're racing ahead, or because they think they know it all already.

Herein lie the (gargantuan) footnotes )
There's an idea that's been playing in the back of my mind recently: given the diverse background of people involved in roller-derby, why aren't more of the resident techies making things to facilitate officiating the sport?

Actually, that's a bit of a loaded question. They already are. One of the most visible examples is the scoreboard you see projected on a board/wall at most bouts.

A bunch of people took time out to make stuff happen.

As a personal project, I want to write yet another penalty box timing app, one that suits my needs, given that I've done the job and know what irks me about my current system. (Also, I just want an excuse to code up a simple android app for a tablet I plan on purchasing)

After a random conversation at a practice session, it seems other people have other problems they want solved, and other than cost for a pre-packaged solution, I don't see why some of these things can't be done.

For instance, if you're tracking penalties, it's frequently hard to hear referees' calls. What would be interminably cool is some sort of headset system so the people on the inside could listen to the penalties on headphones and deal with them. The main issue is the transport signal (radio/bluetooth/whatever) and the ergonomics of it (and maybe the communication structure).

What I'd love to see is a timing device that could tie into the scoreboard so that the timekeeper could ensure correct time was displayed to the audience/skaters. The easiest solution in my head would be a smartphone app that utilised some method to communicate to the machine running the scoreboard software. Hell, then we could maybe have the penalty box software listen in to sync with the timekeeper so that the timing starts and ends with the jam.

Even if it was beyond the skillset of the league's members, I wonder if something like the Science Day Hackathon could work? Sometimes the hardest thing about figuring out about making something is what to make, or deciding what problem you want to solve.

I think improving some of the technology used could solve a lot of our problems, and it'd be really interesting to see if it works. It's mostly a matter of getting the right people together.
Conferences are fun. They're a great way to share skills with other people, chew the fat, and an excellent chance to just take off your blinkers and look at the technological world outside of your job. It's also good for getting drunk and telling war stories.

Sometimes you even get employers paying for employees to go to conferences to learn stuff. Unfortunately, working in QA there aren't a lot of technical conferences geared to my profession. QA have the best, and most damaging, war stories and they'd probably count as confidential information. So, companies don't pay for us to meet and trade tales of happenings that they'd really rather not let the public, or their competitors, know about. This means I tend to just go to some local OSS conferences and mill about playing the technological magpie, and also socialising.

One group that I like is the monthly Python Ireland group (although I've not gone to a meeting in far too long), and I also attended 2011's Pycon Ireland. It's great to see a number of talks and presentations that make me aware of new technologies, or novel uses for what I already use.

These days, in lots of meetings like this, there's a tendency to record the presentations and distribute the slides and source code. This is really cool, although frequently I find myself miffed that I get a choice of one or the other (recording or slides), but generally not the one I want at the time; that's just Murphy's law at work.

Recordings make interesting presentations like 'Daemon Slaying! Or, Unix Daemons in Python for fun and profit!' available to me, and I'm able to start thinking of how I might want to use them or if I should squirrel away that information for a rainy day. Having also been involved with Toastmasters, I immediately began to write up feedback for how that presentation went, so that I could have a list of tips for what I'd do if I had anything to present (this is from the speaker's point of view, not that of the organisers/camera folk):

What went well
  • He spoke clearly - he obviously had some sort of sound check as well

  • He knew the material he was going to present - it's actually amazing how many don't, and think they can wing it. That said he did surprise himself once with his code.

  • I didn't notice any verbal crutches or audible hangtime - that means he had no 'umm's or 'ahh's. Blank space was either left blank, or he repeated a point while giving himself time to think.

What could have gone better:

He forgot he was being filmed. Normally this is a good thing in that you don't get self-conscious or talk to the camera when you really should be addressing the people in the room. However, there were occasions where it worked to the detriment of the video audience (which is potentially bigger than the people who are in the room):
  • During one slide, he pointed to elements of his slide that he thought were and were not important - he didn't bother to say what those points were, he just pointed to them, leaving the camera operator to quickly orient and focus the camera not just on the speaker but on the points he was making.

  • Question time - he didn't repeat the questions he was being asked by the audience. In fact, I'm pretty sure there was a whole bunch of audio problems as the sound didn't cut back to him until he was half-way through his answer, but it's good practice to repeat the question back on the mic so that the video audience will know what's asked rather than trying to infer it from the user's answer.

It should be noted however, that I work for a multinational where I'm not always in the same room for a presentation. Sometimes all I have is a pdf and a phone, and I have to keep up with the rest. After enough of those, you start to consider the above to be a hanging offense, and you become conscious of it FOREVER MORE!

But overall, I really enjoyed that presentation and its content. He did nearly everything right, except for ignore the video audience, and it reminded me of some basic points which still apply to pretty much every talk:
  • Speak clearly

  • If you're being recorded, be aware of what the video audience can and cannot hear, and relay anything that may be of interest back to the video audience

  • Know your material and its flow

  • Avoid verbal crutches in the main material - it never comes across well on recordings (video or audio)

Hopefully I'll remember them if I ever have to do something like that.



September 2015



RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 21st, 2017 03:27 am
Powered by Dreamwidth Studios