First off, what do you do, where do you work, and how long have you been in the industry?
Hey there! I’m Mickie. I’m a platform developer at Atlasssian, and I help build our chat product, HipChat. I get to work on all sorts of interesting problems— ensuring low latency for real-time messages, globally distributing data, and scaling our platform to suit our customers’ needs. I’ve been a software developer for 5 years now after transitioning from a former life as a policy analyst and union organizer.
What’s something technical you do to become a better developer[/designer/PM]?
- Sub-topic: what are resources you find helpful to keep your skills sharp?
Great question- it’s a good deal of work to stay fresh in this business. There are so so many great resources, and my God, the internet is a wonderful glorious place of endless information.
Here are a few ways I stay current and work to improve myself as a developer:
- I write tests. Always. Tests are a great way to detect flaws in your code and improve maintainability. I subscribe to the idea that legacy code is untested code. I try not to start a project in a “legacy” state.
- I try to regularly practice coding challenges and interview questions to stay fresh. I adhere to a philosophy that code is a language. There are different levels of fluency, but truly being a proficient programmer is only achieved through practice. Some excellent resources:
- Project Euler
- Advent of Code
- 100 Days of Commits
- Pretty much all of the Cracking the Coding Interview book
- I contribute to Open Source projects— diving into new code is a sure-fire way to improve my skills.
- I read others’ code. I work to truly understand it and see how other people approach a problem I’ve dealt with.
- I refactor old code and find ways to optimize it.
- I read blogs, newsletters and twitter. In particular:
- Julia Evans is the best. She has a blog that makes technical topics easy to digest. Her philosophy about programming is that understanding the underlying systems you use (the kernel, the operating system, the network layers, your database, HTTP, whatever you’re running on top of) is essential if you want to do amazing work and be able to fix hard problems.
- Hackernews (of course)
What’s a soft skill you think is important to become better?
Oh man, so many:
- Patience. For yourself. For others. For working to understand the mystery internals of a system.
- The ability to ask good questions, especially in a way that engages others in a thoughtful dialogue. Don’t be afraid to ask questions because you think it might “out” you as not knowing something you think you should know- you can only understand by asking!
- An old mentor told me “Undercommit, over deliver” and I think that’s a really valuable trait to foster.
- But ultimately, I believe that being a nice human being is the most important way to become better at anything. Be someone others want to help and are willing to teach. And pay it forward. Teach others, mentor, collaborate. Help. I think you can grow a lot by not being an asshole. I strongly adhere to the ‘no asshole’ hiring rule, and only want to work at companies that do the same. Doors open for nice people.
Do you do something outside of work that you think makes you better?
Oh yeah, I:
- Teach girls to code. I think teaching is a great way to cement your knowledge and come at problems in a new way. You truly have to understand something in order to teach it, and I’m passionate about encouraging more girls to consider software development.
- Hackathons! They’re a great way to hit challenges head on and engage with your local developer community.
- Attend local meet ups on relevant and interesting topics.
- Take online courses! Coursera, udemy and pluralsight are great ways to gain deeper insight into traditional computer science topics.
What’s something you wish you could tell your younger self?
That hairstyle you had in 3rd grade was really, truly lame.
If you could learn one new technology, what would it be?
Oooh, that’s a toughie. I guess it’s not a technology but a space- I’d like to dig more into Artificial Intelligence.