Refreshing stagnant technical skills
March 16, 2017 12:10 PM   Subscribe

I'm a web developer who's been stagnating in a very low-effort job for several years. As such, my technical skills are way out of date. I'm not happy at this job, but I need to get up to speed again before I can get a new job that will be more satisfying.

I was a competent front-end web developer when I took this job six years ago - HTML, CSS, JS (including jQuery etc). But the work at this company has been so minimal and so basic that I have basically never been required to learn anything new and as a result I'm way behind the rest of the world. We have very little actual work to do and almost all of it's ridiculously easy. You might think I would use my free time to stay on top of my industry, but you would be wrong. I'm very embarrassed about this but I'm ready to do the work to get caught up.

What should I even start with? I think my sorry-ass Javascript is probably the most urgently in need of update since there has been so much progress in the past few years, so I've been starting with some Node.js tutorials - is this the way to go? Should I also be looking at Angular and/or React? What about non-JS front-end stuff - where should I go to catch up on recent CSS developments?

Are any of the online courses / bootcamps worth it? I was looking at One Month but $300 isn't nothing, so I would want to know it's a solid way to go before I shell out for that. Are there any great technical books you can recommend? What else am I not even thinking about?
posted by anonymous to Computers & Internet (17 answers total) 26 users marked this as a favorite
 
Boing Boing store has some very affordable online courses. I'd check anything I was interested in very thoroughly before buying it, because that's what I do.

I understand letting one's technical skills get stagnant. I have trouble updating my skills unless I have something to work on. I am not good at making something up in order to learn something. On the other hand, I can learn things really quickly when there is a problem to solve/solution to design.

My local library also has a ton of online classes available for free.

Just a couple of ideas. Hope this helps.
posted by Altomentis at 12:40 PM on March 16, 2017 [1 favorite]


For getting back into the swing of vanilla JS, I recommend the Javascript 30 - it's free, and you build 30 cool little things using just JS and CSS.

Then, yes, I think it would be helpful to learn a framework, more helpful than learning node. I trained as a full-stack web dev, but honestly most jobs seem to be either front to back end, so specializing is good. Lots of places seem to be using frameworks these days, so it's good to have that experience. Plus you'll have to deal with vanilla JS a lot as you get up and running.

React and Angular are both fine - I found React a little easier to learn, but Angular is still more popular. If you do go the React route, I suggest pairing it with Redux. I've found Udemy to be a great resource for courses - some of them have expensive sticker prices, but they're constantly running sales where every course is $10 or $15 (seriously, NEVER buy a course from them for more than $15).
posted by Ragged Richard at 12:46 PM on March 16, 2017 [14 favorites]


If the ultimate aim is to get a better job down the line, you might start by asking yourself what platforms you really want to work in - Magento? Demandware? Wordpress? Drupal? And then get involved with those communities (if only as a lurker) and start finding out bits of the technology stack you need to know (or knock the rust off of) to be considered hirable in those areas.

IANAD, but I manage them*, and when our team leads start in on the technical part of the interviews most of the questions tend to revolve around the candidate's familiarity with the specific platform we use (Magento, in our case). We tend to assume the candidate either knows the nuts and bolts or can brush back up quickly on any particulars if they know the platform.




*I hate to say it, but in Dilbert terms I probably occupy the pointy-haired boss strata, although I try not to be that stupid...
posted by randomkeystrike at 12:56 PM on March 16, 2017


I've found Udemy to be a great resource for courses - some of them have expensive sticker prices, but they're constantly running sales where every course is $10 or $15 (seriously, NEVER buy a course from them for more than $15).

Just FYI: I went to check Udemy for a friend, and found out they do run a $15 sale right now.
posted by ringu0 at 1:06 PM on March 16, 2017


Don't be embarrassed. I'm in the same boat. I've learned a ton at this job, don't get me wrong, but all of it was in soft skills and industry and business acumen, and virtually none in actual web skills. My initial thought was to basically look at job listings and see what skills they ask for, and then start there. Bone up on the rusty skills I already have, then branch out.

But, think of it this way, we learned it the first time around, no reason we can't learn it again. #olddognewtricks
posted by Autumnheart at 1:12 PM on March 16, 2017 [1 favorite]


Hello, I was just this very morning part of a hiring committee that interviewed several candidates for a senior web developer position. (I'll preface this by saying we aren't the most bleeding-edge tech environment ever.)

Specific things we were interested in: JavaScript, Angular, Drupal, HTML5, CMS's in general, SharePoint, .Net, Java, Agile. (We've got a lot of different systems that need to speak to each other.)

Other things we looked for: ability to teach/train/mentor others, how a candidate handles projects that go bad or morph into other things, working with end users and a variety of stakeholders with disparate goals, project management.

One question to candidates was exactly your question: How do you maintain your web development skills? The general consensus of the committee was pretty much ANYTHING was fine, as long as the candidate demonstrates some initiative. For example, the response "have not really done much other than cursory googling to maintain or increase my skills because I had no time" didn't go over well, because who has time? Other answers, such as "I built an app", "I've got a github" and "I built a site at $url where I try out things I want to learn" went over much better, regardless of the actual topic of the project. Just doing *something* set these candidates apart from others.

Online training was positively received, although PluralSight was the only one specifically mentioned.

Personally, I am familiar with Udemy, Udacity and StackSkills, although there are a ton more. I don't think you can go wrong by just choosing one and getting on with it.

And seconding Udemy's sale pricing.
posted by SuperSquirrel at 1:50 PM on March 16, 2017 [3 favorites]


A good marker of progress would be to read this every month or so, and try to move from identifying more with the non-italicized person, to identifying more with the italicized person.
posted by Kwine at 2:01 PM on March 16, 2017 [1 favorite]


A good marker of progress would be to read this every month or so, and try to move from identifying more with the non-italicized person, to identifying more with the italicized person.

This is good advice, actually. The gist of the satire is that JS developers cause themselves pain by making JS development as complicated as possible, for no good reason. However, if you had enough knowledge of the mentioned technologies to find the post funny, then you'd be pretty far down the path of having a handle on modern JS engineering.
posted by sideshow at 2:44 PM on March 16, 2017


tl;dr: Make a thing that you can call your own, it is a great way to learn, you get to make it the way you want and take all the time you need.
--

Totally identifying. When getting paid to work in a stack, there is little extrinsic motivation to look at other tech.

So now that you have a little intrinsic motivation, I would spent it on making things. I've done hello worlds for so many bits of technology, it gets me no where. I suggest doing the hello worlds and immediately moving into a project you care about.

Pick a project, pick a stack, and (action montage) get it shipped. Later, maybe you've picked the wrong tools, but that's fine, you pulled something together, it's something you can talk about, and point at when talking to others. Once you have your own project deployed, it is live, and a starting place for more incremental learning.

Which technology: it seems like you've got that almost figured out. Yes, pick a front-end framework. Maybe if you had a dream job, you could figure out what they are using and emulate that. Otherwise read the docs and tutorials linked from the official sites, see which one resonates, if at all.

My preferences:
JS:
If you feel like you need more JS discipline, I still (many years later) love Javascript: The Good Parts by Douglas Crockford. It was vital for me to make the switch from make-it-work to write-quality-code. I suggest using jshint with your code, and obey. When you are working on your own project you have the time to be strict.

When you are happy with your ES5 javascript, do move on to learning ES6, it's great.

JS Frameworks:

If you want to get a full SPA experience without doing a lot of the work, check out Ember.js, they make a lot of good default choices. It has the bonus of everything being in ES6 as well.

If you want to explore the ultimate hotness, go the route of react+redux. With react apps you have to bring a lot of components together. A lot more work up front for more choice.

Avoid Angular, this is not a good place to start right now unless that is where you need to be. The transition between v1 and v2 is dumb and I'm abandoning it. (Angular 1 was fine, but it always seemed unnecessarily complex to me)

Unless you have a strong desire to work on server code, I'd stick with creating a client-side app since your focus has been front end work. Choose how much you want to bite off.

With any choice, do as many tutorials as you can and then struggle with making a simple version of your project. Ask questions in forums, and if they are available, consider tech meetups.

CSS:

MDN is great for learning about web standards, HTML5, CSS3, etc. For example: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS3

CSS3 is great, flexbox and grid layouts standardize what people have been trying to make CSS do forever.

I have (along with the rest of the internet) used Bootstrap (too many times) for standardized CSS and widgets. It's a good thing to know.

If you're not already doing it, pick up SCSS, (or use the CSS compiler one your framework brings). They are standard now, as much as I don't approve.


---
I apologize if this is too marchymarchy, but that's just where I am. I'm now on the job search and interviewing has got me wound up.
posted by concavity at 5:24 PM on March 16, 2017 [4 favorites]


No way, that's excellent information. I can't speak for OP, but after doing the same thing for so long, it's overwhelming to just look for some direction and a starting point. All of that was good direction.
posted by Autumnheart at 6:04 PM on March 16, 2017 [1 favorite]


Codeacademy is good for some basic stuff. Look into MEAN stack projects/tutorials. Also check out Project Euler for practice projects. Get a github account and keep your code there.
posted by bendy at 6:43 PM on March 16, 2017


I found myself in a similar position over the last few years. I could tell you what I think you should learn, but I'm going to suggest a metaphilosophy instead:

* The industry has a pathology where it often can't tell the difference between fashionable churn and progress. There are human limitations and career incentives driving this. It's probably not going away.

*Recently and currently this is arguably worse in front-end web development than other places.

* It's hard to escape this entirely, but try not to chase the fashion (and in particular, investing in Angular is a very good way to get yourself hired with an organization where there is no one with influence who is capable of thoughtfully evaluating their tools). You want to be working for people who can evaluate your projects on their true merits (how well does the application/system serve the needs for which it was written, and how effectively were development resources used?), not whether you used KeyCurrentWord and FashionablePractice as a poor if plausible stand-in for thinking. Does your app do what it needs to do, was it written in a reasonable timeframe, and is the codebase legible? It doesn't matter if it was built with jQuery or AcidReflux.

* Instead, pick app you'd like to see, an itch you want to scratch, and use some tool you're curious about to build a project you're interested in.

* While there's always going to be the necessity of retraining, if at all possible, prefer to reserve new learning for new capabilities, not for doing something you're already capable of in a different way. A new framework is basically a (potentially) slightly novel suggested plumbing configuration with some (probably limited) code-reuse value thrown in. Unless that's at least somewhat inherently interesting to you, why not pick something to study that will actually extend your ability to create interesting software (say, machine learning)?
posted by weston at 6:57 PM on March 16, 2017


weston, i have some experiences myself, but could you please weigh-in more comprehensively about your particular aversion to Angular?
posted by j_curiouser at 7:04 PM on March 16, 2017


I'll try. I feel like it's potentially a derail, but I guess it's relevant to the portion of the question that's "Should I also be looking at Angular and/or React?"

Incidentally, the short answer to that question is probably "yes." If you intend to go on the job market as a front-end developer in the next year, you should look at Angular and React, get to know both a little, and then more heavily invest in one or the other. If possible, actually take a job with a place that would potentially let you use Backbone or Vue or Ember or something else if you made a case for it, but know how to build an app using one of those two. I suggest React.

Angular... my experience with two (Angular 1.2.x & 1.3.x) projects at my last employer was this: Angular's data binding abstractions impose a lot of overhead on the developer, partly in terms of groking the scoping models and then keeping track of applicable scope, partly because they leak performance issues that you will run into with anything beyond a pretty modest app (or on most mobile devices circa 2014). On top of that, part of a framework or library's central conceit is about a philosophy of what the problem with development on that platform is. Prototype.js developers thought the problem with front-end development was that JavaScript was not enough like Ruby. jQuery developers thought the problem with front-end development was that the DOM and other browser APIs. More recently, SPA frameworks seem to be focused on giving more expansive front-end apps legibility that back-end frameworks like Rails have conferred (potentially legit point), but Angular seems to be driven by the idea that the real problem with front-end development is that we aren't using enough of the idioms from static manifestly typed languages like Java and C# more than the idea that it should provide a common recognizable form of organization around request routes corresponding with controllers and models corresponding with views. Finally, I really found suggested tools built around it were overrated (for example, then-current version during the Batarang was actually outright broken while I was working on these projects). The edges, they bleed.

This isn't to say you shouldn't learn it (building an Angular app is an education!) or that there aren't people who can't wield it successfully. Also, perhaps it has improved as v2 has moved along. I just find it's more common that people are adopting it because they hear it's the current / enterprise-y / professional thing to do than because they've thought about what they think the problem with front-end development is and decided Angular provides the best fitted set of solutions within their problem domain and range of personal preferences/tradeoffs. And if you invest in Angular, well, you're likely to end up working for people who chose it. YMMV.
posted by weston at 7:49 PM on March 16, 2017


thanks!
posted by j_curiouser at 10:24 PM on March 16, 2017


Might be obvious, but take a look at what jobs are available in your area. I just spent 3 months on Angular after a tip from a recruiter, but React is much more popular around here and I wish I would have done that first. Nthing Udemy - I have a React, Angular, Web Developer Bootcamp and Ruby on Rails class all on my plate and I just do one at a time (and buy more on sale). There's an Angular 2 class that is fantastic, and it's $10 today.
posted by getawaysticks at 9:15 AM on March 17, 2017


Check out the Big Nerd Ranch front-end book.
posted by runningwithscissors at 12:00 PM on March 18, 2017 [1 favorite]


« Older How do I respond to this email?   |   Online mortgage vs. with a human mortgage broker Newer »
This thread is closed to new comments.