{"id":196,"date":"2016-05-05T02:47:01","date_gmt":"2016-05-04T20:47:01","guid":{"rendered":"https:\/\/redqueencoder.com\/?p=196"},"modified":"2023-02-13T00:34:38","modified_gmt":"2023-02-13T05:34:38","slug":"practicing-scales","status":"publish","type":"post","link":"https:\/\/redqueencoder.com\/practicing-scales\/","title":{"rendered":"Practicing Scales"},"content":{"rendered":"<p>I have been rather discombobulated over the last several months. I had a number of upheavals in my life. I left a job and started another. I traveled to a new place every other week. I spoke at many conferences.<\/p>\n<p>I have been running ragged for a few months now and I am trying to get myself back into a better mental state. Since I get to stay put for a while, I am trying to figure out a better routine for myself to help me shake off the last of my burnout and to prevent future burn out.<\/p>\n<h2>What I Do For a Living<\/h2>\n<p>One thing I have been struggling with is making time to code. I know this sounds incredibly stupid considering I am a professional programmer. Don\u2019t I spend at least 40 hours a week coding? Isn\u2019t that what I am being paid for.<\/p>\n<p>Well\u2026 not really.<\/p>\n<p>A lot of my job over the last year has been looking at other people\u2019s code and debugging it. Or looking at other people\u2019s code to learn how they did something. Or reading documentation to make a sample project to show how to do something.<\/p>\n<p>I had a few large projects over the last year such as <a href=\"\/wrapping-libxml2-for-swift\/\">wrapping libXML2 in Swift<\/a>. This project took between two and three months. The first month, at least, of this project consisted of me staring at code I did not understand and then staring off into space waiting for my brain to compile it. I had panic attacks that it would never click and I would fail and all hope would be lost. Then at some point I woke up in the morning and I understood the code. This happens to me a lot and I find the process quite terrifying. I keep worrying that it won\u2019t all pull together for me this time and I am just living on a prayer.<\/p>\n<p>Regardless, during this compile time, I did not code very much. I didn\u2019t understand the code I was supposed to work with, so I couldn\u2019t write anything. I couldn\u2019t work on a tutorial or something else because it wasn\u2019t what I was supposed to be working on. So I spent a good chunk of time walking around outside with headphones on waiting for my brain to make sense of things.<\/p>\n<p>I don\u2019t like this process.<\/p>\n<p>Right now I want to learn C++. I am interesting in game engine programming, audio programming, and other low level programming that at this point is only being done in C++.<\/p>\n<p>I went on Twitter and asked for some advice for resources. I got these responses:<\/p>\n<ul>\n<li>Why are you learning C++? Why not just do it in Swift?<\/li>\n<li>You can\u2019t learn from books. You can only learn from projects.<\/li>\n<\/ul>\n<p>First off, not everything can be done in Swift. It just can\u2019t. It would be nice, but we\u2019re not there yet, so this is a non-starter.<\/p>\n<p>I <a href=\"\/self-destructive-tendencies\/\">have written about my personal experiences from not learning from books<\/a> so it isn\u2019t that I completely disagree with this statement. I just think that there is a happy medium between \u201clearn from books\u201d and \u201clearn from projects.\u201d That medium is the tutorial.<\/p>\n<h2>In Defense of Tutorials<\/h2>\n<p>I have heard a lot of people talk about learning code from videos and podcasts. They put a podcast on their iPhone or just take the audio track from a WWDC video and throw it on while they go for a jog.<\/p>\n<p>I envy those people.<\/p>\n<p>I know this is ironic from someone who used to do a podcast (and plans to get back to doing so soon, I promise!), but I don\u2019t like listening to podcasts or videos. It drives me crazy. I need something interactive. Listening to someone else talk and not being able to have a back and forth and ask questions makes me completely insane. I have no idea how anyone learns this way.<\/p>\n<p>I went to school for programming twice. The first time I dropped out because I followed the \u201cJust learn from projects\u201d line of advice. I would do a bunch of research into how to do my homework. I would do it once, then I would never do it again. I never learned or retained anything I did. I aced my exams but I had no fucking clue how to code.<\/p>\n<p>It was only when I had the worst job I ever had that I learned to code. I was told that the team lead didn\u2019t know what we were supposed to be doing and so he told all of us to look like we were working. To avoid having a nervous breakdown, I started doing tutorials on <a href=\"https:\/\/www.codecademy.com\">Codecademy<\/a>.<\/p>\n<p>By just typing code forty hours a week, I learned so much more than I had when I spent most of that time thinking about what I was doing. Mindlessly typing code like a monkey for a really long time was a far more effective learning tool than anything else I did.<\/p>\n<p>By typing code a lot, my brain processed how it worked. It didn\u2019t work on the first try. It took doing it three or four times before my brain processed it.<\/p>\n<p>I feel incredibly worried because even though I am a professional programmer I don\u2019t get to code enough hours in a week for me to feel I am still proficient at programming. I keep having good intentions of working through code after work, but I usually am tired and want to cook dinner and take a bath, so it never happens.<\/p>\n<p>I do not want to try to learn C++ by reading the code base for the Unreal Engine. Most of C++ looks alien and terrifying. I can\u2019t just do a project with it because I have no idea how to begin. It\u2019s like telling someone who is interested in architecture to just build a house. You need to have some kind of practice so that you know what the fuck you are doing.<\/p>\n<p>Programming is one of the only skills I have heard of people doing where we don\u2019t emphasize practice. If you want to be a great pianist you have to do scales. A lot. You don\u2019t just do them once and assume you\u2019re done with them. You keep doing them. You keep practicing the pieces you want to play. You don\u2019t become a better piano player by just reading sheet music or listening to recorded songs. You get better by putting fingers to keys. A lot.<\/p>\n<h2>What I am Doing About It<\/h2>\n<p>I have spent the last year getting more and more depressed by trying to adopt the learning style I see everyone else around me adopting and getting more and more frustrated when it doesn\u2019t work for me.<\/p>\n<p>I had my epiphany about how I learn. I learned programming by doing a lot of tutorials and practicing my coding by just typing code a lot. Just because everyone else around me tells me this isn\u2019t the way to learn doesn\u2019t mean that I have to listen to them. It\u2019s possible my way would work better for them and they\u2019ve never tried it. It\u2019s also likely that we\u2019re all different people and we are all capable of learning differently. I should stop trying to conform myself to another person\u2019s learning style just because they think they are \u201cright.\u201d<\/p>\n<p>One thing I have done since I have tried to establish my routine is I set aside two hours each morning to code. Right now I am working through <a href=\"http:\/\/www.amazon.com\/Beginning-C-Through-Game-Programming\/dp\/1305109910\/ref=sr_1_1?ie=UTF8&amp;qid=1462415857&amp;sr=8-1&amp;keywords=C%2B%2B+programming+games\">Beginning C++ Through Game Programming.<\/a> Each chapter has about half a dozen programs in it that you can either download from their website or you can code yourself. I have been coding each exercise and I am already feeling far less freaked out by C++. Yes, I know how conditional logic works, but just getting used to typing out all the double colons and the semi-colons at the end of each statement is really helping me mentally process how the language feels.<\/p>\n<p>This is one of many things that I have not been assertive about when I go to a job. I feel like working through my scales doesn\u2019t count as part of my job because the code I am working on isn\u2019t production code. But it does help me keep my skills sharp and makes me a more productive worker. I may not tell people that I am doing this, but I do hope to make this a normal part of my routine in the future. I want to be an amazing programmer and you can\u2019t do that if you don\u2019t code. A lot.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I have been rather discombobulated over the last several months. I had a number of upheavals in my life. I left a job and started another. I traveled to a new place every other week. I spoke at many conferences. I have been running ragged for a few months now and I am trying to [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[6,34,35],"tags":[],"class_list":["post-196","post","type-post","status-publish","format-standard","hentry","category-career","category-programming","category-programming-exercises"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/redqueencoder.com\/wp-json\/wp\/v2\/posts\/196","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/redqueencoder.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/redqueencoder.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/redqueencoder.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/redqueencoder.com\/wp-json\/wp\/v2\/comments?post=196"}],"version-history":[{"count":0,"href":"https:\/\/redqueencoder.com\/wp-json\/wp\/v2\/posts\/196\/revisions"}],"wp:attachment":[{"href":"https:\/\/redqueencoder.com\/wp-json\/wp\/v2\/media?parent=196"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/redqueencoder.com\/wp-json\/wp\/v2\/categories?post=196"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/redqueencoder.com\/wp-json\/wp\/v2\/tags?post=196"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}