Week one of the new job: I don’t feel like a real developer yet.
I’ve learned a fair bit, of course. I’m more of a developer than I was a week (really, a week and two work days) ago. But I continue to get basic structures confused (how do I tell a list from a tuple, and are they even different*? does x-thing return an empty string or None?), and I still don’t have the fluency to pull out the right method for most tasks I want to do from memory, unless by “memory” you mean “Google.”
I am fully aware that fluency comes with time and practice, and in my defense, a large part of this week was given over to [important!] meetings about architectural design, which, despite the coding I didn’t do while we discussed, I’m really pleased to have been part of.
As far as that goes, I get the sense that I sometimes asked questions that cost the discussion some steam, but I tried only to ask things I needed to know, to be able to contribute to planning. I hope it wasn’t too frustrating for the folks who already knew what was up… but I was also kind of asking for two, because we have an intern who started within a couple of days of me, who is also on this project and who I think was more afraid of risking derailing things than I was. (Legit. Nobody wants to be that intern. But it made me more willing to risk being that new developer, since I knew nobody else would ask, if I didn’t, and odds were good that at least one other person in the room didn’t know the answer.) Plus, this thing we’re architecting is what I’m doing for the next month, along with the rest of the team, so I felt some responsibility to understand and contribute to planning it, as best I could. I hope that at least I made useful contributions. I know I am—and the rest of the team is—happy with the decisions we made and confident that they were well-reasoned and make sense. That’s really the important thing, more than what part I played in it and whether or not I annoyed anyone in the process.
Who knew I’d already be worrying about the social side of all of this, so early on? (I should have foreseen it. It makes sense. Projects are all done with other people, and I really want to be a good coworker and a good programmer, both of which require social skills.)
A smattering of things I’ve learned
I had hoped to document all of the stuff I was learning each day, or at least each couple of days, through my first few weeks in this job. I knew I’d have a lot to share. But I’m so tired at the end of each day that I don’t really have a blog post in me. I hear one gets used to non-stop thinking for 8+ hours per day and functions better over time. :)
I’ve learned a whole lot about SHARE (Shared Access Research Ecosystem), which we’re partnering on with the Association of Research Libraries, Association of American Universities, and Association of Public and Land-grant Universities (with funding from the Institute of Museum and Library Services and the Alfred P. Sloan Foundation). I guess it wasn’t a foregone conclusion that I’d be working on this project, but I also had very little doubt, what with all the focus on metadata and the chance to work with librarians. (Do I know anyone who’ll be at the October meeting? If so, let’s do coffee!) … I think SHARE will get its own post, soon. :)
I learned a bit about pair programming, but I picked up a lot more about what doesn’t work than what does. (Valuable, still, I know.) It’s really challenging when the teammates have different styles, either for coding or for communication, and I’m still thinking through how to make that better. Either way, I enjoy pairing for an hour or two, and then I really want to use the keyboard and/or think inside my own head, depending which part of the pair I’ve been. … I think maybe it could be done for a full day, less painfully, if the team swaps places at the keyboard every couple of hours, and, should I find myself in a situation where I’m pair programming for a full day again, that’s what I’m going to insist on. My introverted side tells me it will always be extra tiring to pair all day, but maybe less so if I get to play both parts.
I learned about linting, which is a kind of automated error-checking of one’s code. One of my coworkers wrote a linter for one of the major SHARE components, and I’m just really impressed with him for it.
Some Python packages that are really cool:
- Faker, for generating all kinds of fake metadata, like email addresses, coordinates, and corporate-speak
- Liaar, its close cousin, for making a fake RESTful API
- lxml (specifically eTree) for making XML just a little less painful to deal with in Python (JSON is still easier, seriously, can XML just die now?)
I learned that PyCharm (an Integrated Development Environment (IDE) for Python-and-things) is apparently super awesome, in that it gives you more debugging information than PDB, at least by default. Some people eschew GUIs, and often I’m one of them… but I think I’m going to make the switch. (I won’t ever fully give up Sublime Text, but PyCharm seems like a good thing to have in my toolbox. I did learn that there’s a linter for Sublime Text, though, too!)
I also learned that there is such a thing as a “global .gitignore,” which is pretty cool. I have the details of that open in a tab in my browser (which is to say that all I really know is “that’s a thing, and I should look into it”).
This isn’t programming-related, except that sometimes you need to make graphs… but I had never noticed Google Draw in my Drive before. It’s fairly simple to use and has a lot of options, for a web-based stripped-down version of Visio. ;) It’s a little tricky (in a hilarious way) to use collaboratively with multiple other people at the same time.
And, finally, the fact that reminded me to write this post: shuffle(list) shuffles the list you pass into it in place; it does NOT return a shuffled list, like you might think. (Here’s an article on Python’s random module.) How odd, right?
That’s not everything I’ve learned this week, but it’s a good smattering, I guess. Anyway, it’s Friday, and I’m one beer into my evening; I think I’m going to read some fairly mindless fiction and then try to get some sleep. :)
* I just looked it up, it’s cool.