13 Hi everyone, thanks for coming out, I’m super excited to be here to speak with you! Today. So today we’re going to be talking a bit about programming and programmers.
DSF board member, current PSF board member • Engineer at Rackspace Saturday, July 6, 13 But first, I thought I’d tell you guys a little bit about myself. I’ve been hacking a lot of open source python stuff for a while. I’m also an engineer at rackspace, and I’m on the board of the PSF.
opened a datacenter in Sydney, so that’s pretty cool. I work on the developer relations group, so feel free to find me and ask questions about Rackspace later.
I get into the meat of this talk, I want to spend a few minutes and speak on behalf of the PSF. We’re extremely excited about PyCon AU and PyCons around the world. Hundreds of pythonistas gathering across the globe, that’s fantastic!
Represent the community • Not the developers of (C)Python What is the PSF? Saturday, July 6, 13 What is the PSF. We raise money, we protect Python’s trademark, we operate the python.org servers and other infrastructure. We give grants to people and groups to help them do great things. The PSF doesn’t do great things itself, we’re here to empower you, however we can.
how many people in here are PSF members. Show of hands, how many people consider themselves “members of the Python community”. Everybody’s hands should be up, if you’re at PyCon you’re a member of the community. So the PSF’s membership model is currently “you get invited by an existing member”, we’re shaking that up.
13 We’ll have three membership classes, sponsor members are corporate sponsors, supporting are individuals who choose to become members, anyone can join. Fellows are elected by existing fellows, as recognition of technical excellence, be it in software, documentation, working with the community etc.
Saturday, July 6, 13 This is the PSF’s mission. To build the best Python community we can. To open our doors to as many new people as we can. To build a technically excellent community that welcomes everyone.
you think we’re doing ok now, we plan to keep getting better. We need to strive to continuously improve, to be the best that we can be. And we really hope you’ll be a part of that. Because we know we can be even better than we are now. This is why we’re so focused on education, and diversity; because we’re making a long term investment in the health of our community.
2014 http://us.pycon.org/ Saturday, July 6, 13 PyCon US is coming up. It’s in Canada. We are not good at naming things. It’ll be in April next, year and the call for proposals is up. Everyone should submit a talk, and we’d also love if you served on the program commitee to help decide which talks to accept, come talk to me about that.
me and my best friend, many years ago. This is actually relevant to the talk, stop laughing. So a year ago I graduated with a degree in computer science. And this year he graduated with a degree in computer science. We’re both programmers. His degree was in engineering and mine was in science.
led me to thinking about, what kinds of professions are there, and how is programming like them, how is it not. Programming is a really young profession, at the absolute oldest 70 years, and in practice as young as 40 years; and I don’t think we’re good at it.
About half the time when I take my MacBookPro out of sleep it immediately goes back to sleep. If I were a normal person I would think “computers suck”. Because I am talented professional software engineer, I can tell you definitely: “computers suck”. (Talk a bit about the NASA bug reduction thing, order of magnitude or more cost increase).
doubles every 18 months. In practice this means over the course of my life, computers have gotten more than 16,000 times faster. Why do they still feel so slow? Every resource the hardware engineer giveth, the software engineer taketh away.
it’s probably not that slow to deliver. But we really suck at estimating how long it’ll take. And I think this is probably indicative of a broader issue.
13 And I mean this in a very fundamental way; we build software, but there’s no methodology to it. How do you folks design your programmers? I think about it for a while, then I scribble on paper for a while, then I remember I hate writing, and I start typing. This isn’t a way to build an industry, it’s something out of a bad comedy sketch. I have no idea what I’m doing.
whatever makes sense, and that’s working out really nicely for me. I ship a lot of code, people think it’s good, it seems to go fast. But I can’t explain to anyone how to achieve the same result. And reproducibility is kind of an important thing.
• “Science, technology, and society” Saturday, July 6, 13 So engineers right. What we do is kind of like them. My friend has a degree in engineering. They’re methodology is based on the application of science. Does anyone here feel like the way they write code is based on the application of science, or based on good modeling of the world?
Research Saturday, July 6, 13 Scientists, I have a degree in science (tell graduation anecdote)! Formal science is based on a pretty rigorous methodology for how to know if we know something, which is really important for research.
when I see it’ Saturday, July 6, 13 I tried to write this slide for a bit, I read a bunch of resources. And I failed miserably. I don’t know how artists work, I can’t define art, but I think our profession is pretty connected to it. Who here thinks the aesthetics of their code is important?
epistemology: it’s the philosophy of how we know things. How do we know that the sky if blue, that gravity makes things fall, or that human cells contain DNA?
Saturday, July 6, 13 How do you know? Common answers: I ran it and it looked about right, we have some tests, and my personal favorite; we have millions of users and none of them are complaining.
want to better know that our programs do what we want, and ideally uses this as a basis for developing them, from the ground up. So I want to step back and think about what makes programming cool.
programmatically instrument out code to know what it does. Is it printing to stdout, is it firing off network packets, we can observe all these things automatically.
put our programs in a box, and observe that they do the right things, and the computer will tell us when our programs are wrong. Is there an equivalent to this for any other industry?
what our programs are doing, how quickly they do it, how often they do it. We can reproduce the steps out programs took, and when they explode we can see the exact state they were in before.
we should probably apply the scientific method to all of this. I’ve got a whole slide deck on how to do the scientific method with benchmarking. We need to be more methodical. We need to design to take advantage of the best our profession lets us.
And we need to get better at teaching it. Why are most people who want to be programmers studying computer science? CS is great, but it’s not the same as programming, and it’s not sufficient to being a good programmer.
data structures, and algorithms, and type theory, and other theoretical things • Learn about design patterns Saturday, July 6, 13 If someone let me design a 4 year software engineering curriculum, there’d be a semester long course on how version control. You’d spend a month talking about the philosophy of logging. You’d write a compiler and learn type theory. You’d learn to build giant programs. We need to give SE as a discipline this level of focus.
13 That’s the main takeaway I want. I don’t know how I reach the decisions I do, I stare at some code, I have some intuition, and it seems to work, and I believe I have an underlying methodology, I want to identify it, and I want to be to analyze it. And I need your help in making software engineering a better discipline.