There is a lot of stuff I'd like to achieve this year. But my eyes, they tend to be bigger than my stomach, and I find it is often easier to be disappointed by what I don't achieve than to take satisfaction in what I do achieve.
I'm not exactly saying that's a problem, though. Keeps me hungry, I think. Though it's also easy to feel unbalanced, which I think was a point I was circling around near the end of 2016.
So while I'm not a resolutions guy, as I've noted elsewhere, I'm growing more interested in putting a little more structure around my plans for and ideas about what comes next, so I can try to make more rational decisions about where I put my time and what I'm actually focusing on learning or attempting to accomplish. So that way it's easier to forgive myself for, if not require myself to, turning up my blinders a bit when it comes to every cool new thing or idea or interesting looking challenge that comes along, and I can keep some perspective in place on how, yes, I am, in fact, moving forward, almost all the time.
So.
None of what follows is intended to be complete, comprehensive, exhaustive, or exclusive; rather, it's a starting point, something I can look at when I'm wondering where I'm going next. Things will slip and things will slide and that's good, that's fine, but hopefully this brings a bit more focus and calm into my personal and professional development for the next year. (Or years.)
It's also not all strictly goal-oriented, a list of specific action items I need to check off a list; I don't exctly expect I'll ever be able to say, "Mastered Drupal today," before standing up and heading to the nearest bar. Rather, it's more a loose collection of broad directions I'd like to head in basically all at the same time.
It's also probably still an overly ambitious list, but, hey, where's the fun in not wanting too much, right?
Personal project: my dumb web app
This could be my big one for the year. One of my big ones, at least.
I've been working on a web app for a while now, a personal take on a links bookmarking app, and late in 2016 I reached what felt like a good resting point, a solid alpha version or v0.1 release or something like that. It was a huge mess, but it was my mess, and it was a largely functional mess, one that did the basic things I had initially sought to make the mess do. It felt really cool. I learned a ton along the way, and I'm pleased with all the stretching this thing represents.
That said, it's still a mess. one that I really do actually want to use, and there's a second phase of functional development I need to complete if it's actually going to be a usable thing in my daily life. The rough bit though is that the next phase includes some rather big items, some of which are way outside my comfort zone, stuff like setting up MySQL databases and creating login/authentication systems and such, and while I'm definitely still excited to learn what I need to learn to get to done on this thing, it's kind of imposing, and I know it's going to require some concerted effort and focus on my part; it's not stuff I can read up on during the kid's nap and then just, like, go and do. I expect to fail hard and repeatedly.
So I'm challenging myself to get over that hump and get back to moving forward with this thing, however challenging it might feel.
Aside from that functional phase two, the project also requires a design phase, to make it actually look like a real thing, which is more in my comfort zone, and is something I'd very much like to tackle, probably after I push through the functional phase.
I also know the entire project could stand a major (i.e., scorched-earth) refactoring. There's a lot of sweeping up to do. This feels like it might be a lower priority, in favor of pushing forward with this project, but if I hit a point when I realize the mess is so messy I can't move forward through it or around it, I might have to fall back and put some bits back in a row.
Personal project: Web-Stuff Blog Thing Design
The design of this site is what you get when you're mostly just dicking around, figuring out the lay of the land, trying some stuff out on the fly and seeing what happens. I mean, it works, but, meh, right?
I'd like to actually...design the site, a bit. Turn it into its own self-contained porfolio piece. I think the challenge is here to engage with the design process more closely but to also keep it simple enough that I can get a new version of it done without it requiring an absolutely massive time investment. It can always be tweaked and refined further down the line.
it might also be time to promote it to its own URL and normalize the site name as well. Heh.
Personal project(s): Folded Note Design portfolio site
Oh man, what a mess. This is the bit that probably makes me feel the most deeply itchy of anything on this list.
I started a big redesign/redevelopment site in 2015, and then 2016 took me away from it, and now it feels like so much has changed for me that I'm questioning what the purpose of this site is, anyway. I'm not entirely certain I know what a design portfolio for me looks like in 2017 and beyond, especially as I've started pushing more into the development side of my life.
I think there's a stop-gap solution here, where I need to just dump all of it and put together a basic "about me" placeholder for the time being, so I can at least feel the psychic weight of it fall of my shoulders for a bit. At least until I get a better handle on what I'm trying to achieve here.
Drupal life
After a year of not really actually doing all that much with Drupal, Drupal is going to become a primary focus for me at my day job this year, and I'm looking forward to taking advantage of that to start pushing my knowledge and understanding of Drupal forward once again. Ongoing site maintenance, theme refining and updating, extending and enhancing an existing site to meet new goals, and so forth.
I'm on the hunt for good excuses to extend my baseline knowledge of module development, for healthy problems that basic modules could solve. I'm not sure how far I'll need to go down that road to feel like I've gone as far as I'd like, but we'll see where I'm at next year and how I feel then.
This is all going to spill outward into my personal projects, where I can take what I'm learning here and apply it in new ways over there (and take what I'm learning over there and apply it back over here). Ideally, I would find an opportunity to chip in on the design and development of a new site from the ground up, like I did for the BECA site a while back, but I'm not sure how overly ambitious that is these days.
Languages: front-end
As a designer/developer, my primary jams remain HTML, CSS, and JS. I'd say I'm generally pretty comfortable in all three, but I'm probably lying, because you could probably expose who knows what holes in my knowledge at a moment's notice. There's clearly room to push into new territories in each and to shore up my knowledge of fundamentals and to solidify knowledge that I possess already that often feels a little...floaty. I mean, I'll always be checking the docs, of course, but there's maybe some things I could digest a bit more, ingrain more deeply into my head and hands. Free up some spare minutes each day, at least.
So like, with HTML, learning more about proper structure and accessibility and ARIA roles and what's actually useful and used in the wild and what's just noise; with CSS, learning some of the less-frequently used techniques and properties and giving myself more creative leeway with code; with JS, just, like, generally knowing more JS and how to better handle progressive enhancement techniques and such. A lot of this should dovetail nicely with the design sides of my web app project or my WSBT site design project; I'm such a happier learner when I'm being practical instead of theoretical.
This is probably also the year when I need to dip back into jQuery and learn to more fluidly slide between jQuery and vanilla JS. I'm not exactly sure what that means though or how I'm going to go about that. I've debated learning how to do some basic plug-ins or something—coding my own carousel or something—but I need to think this one thorugh a bit.
Languages: back-end
I need to flesh out some of my PHP knowledge a bit. But that's mostly tied up in how I work with Drupal. While it seems sort of interesting to learn more PHP and think about building something from the ground up with it, I'm not sure this the year for it. Or at least maybe if I find something really small I can do with it, that might be helpful and accomplishable. But I'm not going to kick myself in 2018 if I don't become a PHP ninja in 2017.
My web app project is a NodeJS/Express project. Using JS as a back-end language still feels silly, like, what, really? This is a thing? But I'm so deep into it by now and it does feel useful to know, especially since it's so hot these days. On the flip side it might be an interesting experiment to port the whole thing into PHP or something else at some point, but that might be the coffee and fresh-off-vacation-week-feeling talking.
Languages: other
Beyond my web life, I've played a bit more over the last year with Python, and I like it, and it has come in handy to know a bit about it here and there. But I haven't found that thing that gives me free reign to use it more often than not. That said it's probably worth continuing to dip into it now and then, work through some tutorial projects, at least to keep gleaning some of what it offers and let that push and prod my brain into some other shapes and directions. As I've learned from the web app project, that kind of sideways learning is possible and helpful: things I learned in that project have shaped a bit more how I understand how Drupal works, even if only a little bit, and so I think of it all as good knowledge to have, even if only briefly. Use it or lose it and all.
There also seems to be this thing where I'm kind of just interested in learning more about new-to-me languages though I might have little practical use for them. Though certainly learning new things doesn't hurt, as per the previous paragraph, this is one point I probably need to recognize that I'd be better served playing with some of the toys I've already got rather than picking up new ones. But who knows. Maybe I'll need a vacation some week and I'll go binge on Haskell tutorials or something. But really I should probably spend more time pushing my knowledge further into the languages I'm already regularly working with. Darn.
Paradigm: functional programming
So sometime last year I started reading through a book about functional programming in JS and I'm really interested in it, I like the idea of it, but man, that is some heady reading when you're not actually working with it hands-on page by page. So I want to get back into that book but start over from the beginning and type things out and trace things out line by line so I can geet a deeper familiarity of what exactly is going on in that style of programming, how it compares to objected-oriented stuff which I'm more (or less) familiar with, and where or how I might be able to make better use of it in my daily life.
One side benefit of what I did read of the book, I'll note, is that it gave me a far better understanding of what the Underscore library is there for, and, ever since, that's started getting linked into various projects I've been working on. But even then I'm still pretty surface-level with it, and I'd like to dive in a bit deeper, see what else I can do with it.
Paradigm: test-driven development
Is that a paradigm? I don't know.
This just feels like a huge gap I need to fill, so I can at least say I know how to do it, at least a basic level. I don't know how much room there is or need for it in my day to day life, but not having even touched it yet just feels like a miss I need to address, at least based on 2016 and how many references to it I skulked past, sad Charlie Brown music playing in the distance.
I think part of my issue though is finding the practical application of it: finding projects where it's going to make perfect and immediate sense to use it as a primary approach. I don't know if or how I could fold it into my web app project, for example. But one way or another I need to find some time to sort this out a bit for myself.
Milestones: make a pull request already
I got a better handle on git in 2016 and I've started putting my personal stuff on Github and some of it is even or will even be open sourced at some point—once I've got that web app in slightly less embarrassing shape, for instance—but one thing I haven't quite done yet is gotten around to making an actual pull request on someone else's project. For many reasons, some of them maybe even good, I think: I haven't found a project I feel comfortable contributing to, I feel like an imposter and really maybe I actually literally am an imposter and have no business doing pull requests or touching computers in the first place, I haven't learned test-driven approaches yet so if a project requires that I'm out, I haven't actually sat down with a code base and an issue that makes even remote sense to me and tried to do anything with it yet. And on and on. It feels like it's probably time for me to suck it up and get this done and off my "imposing things I haven't done yet" plate and onto my "imposing things I've at least done once by now already" plate but at the same time to be honest I would not be surprised if I find myself a year from now copy-pasting this paragraph into a post about next year's goals because, yikes. But also maybe it's actually just fine to not do pull requests because, well, I got other things, right?
Milestones: submit a talk topic
File this also under list of things I probably don't actually need to do right now but which I think about anyways a lot and it probably wouldn't hurt if I did it. There's a lot of imposter-y feeling stuff here as well going on and also not being sure what to talk about and on and on but I'm noting it here regardless because at least then I'm able to look at this list and consciously forgive myself of it if other items are getting checked off and this one is not.
But at the same time, stage fright and social anxiety aside, I do like the feel of presenting information in a somewhat well-organized fashion. So who knows.
Skill building: read more code
I started that Let's Read jQuery thread because I recognize I'd like to and need to be able to read code more efficiently in order to learn code better and forcing myself to step through a project like that would be a great way to do it. So I think I either need to resurrect that project and push it forward, or, find a version of it that's a bit less ambitious, with a more clearly defined endpoint in mind, so that I can actually start and finish a code-reading project in a well-defined period of time. But also just generally at the same time do a better job of consciously recognizing when I'm reading code that I need to, like, *actually* read it, and learn from it.
Skill building: loosen up
One of my general, ongoing front-end goals is to find new ways to incorporate animation and interactivity into my work, and one way I think I can expand my horizons there is learning to spend more time on seemingly disposable projects. I find myself falling into the self-defeating habit of believing that if what I'm doing right now isn't serving a clear and present goal, it's time wasted. When, in reality, time wasted, in my life, might often represent of the time most well spent. So I need to find a way to incorporate more of that effort into my daily life, to do more toss-off projects and more hello-world style experiments with various animation libraries and such as they come along, all with the goal of having more tools available in my kit for solving real problems when they do come along.
And one big stupid thing I'd like to stop trying to pretend I need to master in order to be a worthwhile human being
For some reason, every time I try to start doing things with Docker or Vagrant I wind up blacking out for thirty-six hours and then when I come back to awareness I find myself in the middle of a bar fight inside a stinky dumpster on the moon.
I don't know exactly what it is about me and these things that doesn't mesh well, but we don't, and I need to get over that and give up my innate desire to master into understanding anything that gives me trouble and focus on what I'm actually trying to achieve and doing whatever I need to achieve that, instead. Like, you know, maybe I don't need magic Drush integration inside my Vagrant VMs to auto-sync everything everywhere all the time, when I could maybe just do SQL exports and imports instead. Maybe? Either way, interacting with these things is often necessary, so there's still times when I've got to figure it out, but...if it's taking me away from doing things to do these other things, I gotta find a way around that sooner rather than later.
Because, really, wouldn't I rather be doing literally anything else on this list?