So before we get started with this post, I want you to know that I know I'm still behind on backfilling this blog. Things are on hold for the moment, as I prep for my gaming marathon on Saturday and figure out how to manage several new software projects that have cropped up. And speaking of the gaming marathon, if you're interested please donate to support me. It's a good cause! There's more info on my charity page about what I'm doing and why I'm doing it.
Now for the post at hand! Lately I've been thinking about my skills as a programmer, and for various good reasons: I'm taking CS courses for grad school, I'm trying to land software development jobs, and almost all of my "free time" projects include coding of some sort. Barring any doubts I may have about my "qualifications" as a programmer, I can safely say that it's something I'm clearly interested in.
What bothers me, though, is that there is so much I don't know. Which on the surface doesn't say much more than the "whoa" you Keanu-muttered to yourself when taking Philosophy 101. But when it manifests as existential dread day-in and day-out, it becomes something personal and much more problematic. And you do what you can to push back against it, whenever possible.
So that means spending more time learning, right? But there isn't enough time in the day! And it's at this point that you realize that you can't be as busy as you were in high school, that you can't have everything. The scope has changed, your responsibilities as a fledgling human have multiplied, and you have to make hard choices.
Yeah I know, great YouTube video placement. (: Anyway, the point I'm making is that in discovering how I want to build myself as a "software person", I have to make hard choices. Some of those choices have already been made, such as when I stopped playing double bass regularly. I could've worked really hard to find groups and gigs after college, but I decided this whole software thing needed my full attention if I was going to be any good at it.
Something similar has cropped up recently with video games, my chosen field for the future. These hard choices involve things like, "Do I record an episode of a Let's Play, or do I spend time learning how to develop mobile software?" Or take software estimation, for example: I don't know how to do that well. Today I should receive a book on software estimation that I ordered from Amazon. (It's the book Software Estimation: Demystifying the Black Art by Steve McConnell, for those interested.) Will it be boring? Probably. But I'm making the hard choice to power through it because I know it'll make me a better software person, even if it doesn't seem very related to video games.
And yes, even hard choices about working on this blog. I think that's all I wanted to touch on for now. Time is of the essence, and it looks like my software estimation book has just arrived.Posted at 8:16 pm on Oct 15, 2014
I mentioned in a post last week that I though I had laid to rest my naive
approach to using
while loops. And while I know I definitely understand
while loops better than I did that "first" time trying to use them, here I am
admitting I probably used one incorrectly in an exam I took about an hour ago.
On a surface level, I'm really only worried about how it might impact my grade. I've already thought about the problem and figured out what I did wrong. If this were production code, I would go in and make the change. So that's not really why I wanted to write this post.
I wanted to write this post because I had some time after turning in my test to think about why I'm in grad school. I stated in that "While loops" post that I'm doing it to fill in gaps in my knowledge. I don't think that's really the case.
The bottom line is, I'm treating grad school like a security blanket. When I code with others, I psyche myself out by comparing my work to theirs -- even when the work isn't comparable or my superiors aren't actually evaluating us as such! So when those mind games came to a head earlier this year, I took a step back to think about all of my choices should I continue in the software industry. After a few months of unemployment but still playing mind-games with myself, I chose to apply to and eventually attend grad school for video game development, an area I knew would also ground me in computer science.
Even after pointing all of this out, it's still important. Why? I'm still going to have down days. When I'm feeling like crap about my abilities and do dumb things like get into silent ego wars with my co-workers, I need to have a slip of paper that says I know what I'm talking about. To some degree I've always been like that, so it makes sense to get that bit of assurance now for what will undoubtedly be a cornerstone for the rest of my life.
On another note, I realize I am now late with backfilling this blog. That's okay. I've had a few extra projects come up recently, and I just bought Hyrule Warriors which has been a ton of fun. (: You can also tell I went through sort of a "bender" this past weekend: what I would typically call a period where my sleep schedule gets totally pwned and I have a tough time getting anything done. It is clearly evidenced by my lack of tweets and GitHub commits.
I think that's it for now. Look for more updates via my YouTube channel, since I'm due for a video or two soon anyway.Posted at 8:11 pm on Oct 8, 2014
At my last job I remember writing some code to help illustrate a design I was
working on. I don't remember the particulars, but I needed to loop over
something to convey the iterative nature of my design. However instead of using
for loop (seeing as I knew how many times to loop), I chose a
While the design I was trying to convey was left intact, when the CEO came over
to inspect my design, he teased me about it.
Of course, the CEO teases everyone about all sorts of things, so this wasn't out of the ordinary. At the time, though, I was very aware of my lack of knowledge in all things Computer Science. What first emerged as harmless criticism evolved into an important mental note that I had to be aware of holes in my knowledge in order to adequately sidestep them.
I'm happy to report that today in class, we're tackling
while loops. I can
"officially" lay this knowledge gap to rest.
When I was taking the train to to Omaha, I completely burned out trying to build my game. I closed my laptop and stared at the seat in front of me. After a few minutes I took a deep breath and said to myself,
"It's okay, you're not good at this."
That's all I needed to open my laptop and continue with my game. I had to remind myself of the reality of my situation -- I'm not good at programming.
"I'm not good at programming." Let's take a step back from that statement and describe it in something familiar: music. I can say, "I'm not good at making music," and you'll surely spit out your drink and shout, "What the hell are you talking about?"
The thing is, I know I'm right. Most of the double bassists I know are technically and expressively better than me. I may have had an edge when I first started, but that lead has certainly eroded over time.
But then again, I'm not hired as a musician because I'm the best at it. I'm hired because I show up on time, I'm a quick learner and I do my best to be prepared for anything that is thrown at me. That is why I'm hired as a musician.
Now back to programming. I don't get hired to write the best code or solve the toughest problems. I get hired because I understand good UX, keep up with industry trends and be honest about my strengths and shortcomings. That is why I'm hired a programmer.
Or at least, it would be if I could get hired. As a musician, I got most of my gigs based on who I knew, not blind auditions. I wonder if I must do something similar to succeed in the software world.Posted at 12:07 am on Oct 2, 2014
I realized while working on the v0.3 release that I didn't exactly specify where to put my docs. In the end I'm settling on the wiki format, because the documentation doesn't need to be code. I could also spend hours of my life trying to argue for one medium or another for documentation, but I don't think it's worth my time. I've been using the wiki for my fantasy football league to great effect, so doing so for the blog project isn't that weird for me.
I've also taken to writing more softly on my laptop. I picked up a lot of bad habits at my old job, such as banging away at the chiclet keyboard that all Mac computers come with these days. While this may feel natural banging out code during your 9-to-5, it's terrible for the fingers and I've felt a lot of pain within the last year. (This coincides with me writing more code.)
This is where I totally plug the awesome mechanical keyboard I bought and where I prefer to use that. But since I keep it downstairs with my iMac, I need a more practical solution for typing on my MacBook. And no, that doesn't involve buying a second mechanical keyboard. (:
The next milestone involves porting old posts back into this blog. Surprisingly the due date on that is when I have a midterm. I'd like to get back ahead of schedule, but we'll have to see how much time I have in the near future. I still have several videos to edit and post, including my Omaha trip (which was very fun, btw).
That's all for now. Here's to getting this blog up and running again, and finding more time to write. ^_^