Bring me all the learnings!
Jan. 18th, 2018 02:54 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
I keep talking about this, but I'd really forgotten how much I love learning and how much that influenced by decision to go into IT as my career.
Last week, I remembered that my local library has a subscription to Lynda.com for all users, so I went over and poked around and set up an account. There were a surprising number of courses relevant to my interests and ambitions. I've just completed a beginner's Hadoop course, to support other things I want to take, and now I'm running through a data engineering basics course.
Er, apparently that's what I do. Huh. Listening to the descriptions of what a data engineer does, that fits my work very closely. It's never been the term used (my job title is senior programmer analyst, which is excitingly vague), but that's what I do every ay. I'd started to suspect that's how my job would be described on job ads and that's one of the terms I've been using when doing some scouting around about job prospects in London, but it's nice to have that confirmed and feel more confident about applying for those jobs.
I'd like to work on big data systems and play with cooler toys, although it sounds like my experience with RDBMS's will translate well enough to get me in the door for those jobs. I'm still doing some up-skilling to get myself into a better position for the job hunt. And I'm taking a look at some data science stuff, because that's where I'd like to start moving my career towards long-term.
Either ironically or coincidentally, I can't decide which, last week (the day after I started poking about on Lynda, in fact), my work set up a group plan for Pluralsight and gave me and a couple of colleagues access. Woohoo! ALL THE AWESOME IT COURSES ARE MINE.
There are some courses that are directly relevant to my current work, so I've been working on those. There's probably a dozen Oracle-specific courses plus an ITIL foundation course that is probably the ITIL training we keep getting promised and never actually get. I spent a fair bit of Friday on a PL/SQL fundementals course that was more useful than I expected. I picked up everything I know about PL/SQL from using it and reading books/hitting Google/hitting Stackoverflow whenever I needed to something I haven't done before. So even though I've been using it for nearly ten years and I consider myself fairly expert, this basics course showed me a few things I'd never seen before.
This is why I'd argue it's important for companies to fund training when developers are picking up new tools and languages. Supplement that with books/Google/Stackoverflow, but you need that core organised training to really use things well.
There are some more advanced courses around Oracle query tuning, star schema database design etc, plus some advanced SQL courses that talk about both SQL Server and Oracle that sound interesting and relevant, so I've got plenty to do for work training.
On my own time, I've been taking a Pluralsight course on basic Python (if I have access to the courses, why not?). I'd been teaching myself a bit already, because learning is fun and Python is fun, but it was good to go through this course and realise how much I've already absorbed. Unlike the other sources I've used, this course has been emphasising Python as an object-oriented language and explaining OOP theory as they introduce classes and so on.
The last time I used an OOP language was at uni, thirteen years ago (Java, C++, Smalltalk). Apparently I retained all that theory, because this part of the course has been more reminding me of OOP theory and teaching the Python syntax rather than introducing a whole new programming paradigm. It really is true that when you've learned a basic programming construct, it's pretty easy to pick it up in other languages.
The remaining modules are going to teach me entirely new things: how to deploy a webapp using Flask, and how to package up a stand-alone app using PyInstaller. I'm nerdily excited :-)
And after I've done that, I'm really excited about moving onto the more advanced courses and really digging into Python properly.
This is, actually, relevant to my discussion of data engineering and data science. Python is a skill that's called for a lot in both paths (there are entire libraries in Python for data science!), so I'm having fun learning something new that will hopefully pay off later in the year.
And hey, Pluralsight also has a whole bunch of courses in SQL Server and Microsoft Azure, so I can do a bit of cross-training to widen my net of possible jobs. After all, the important part is being used to dealing with data and an RDBMS. The differences between specific vendor distributions can be learned and adjusted to, it's the core understanding of what the hell all this stuff is and how to manage it that takes the time to learn.
(And yes, my Mac is still performing beautifully as a development platform. So far, I like PyCharm better than Spyder for my Python IDE, but we'll see. Both are much nicer than IDLE. And if I want to add some C# to my diet or try out yet another Python IDE, Visual Studio 2017 even has a MacOS version. My Mac is so great.)
Last week, I remembered that my local library has a subscription to Lynda.com for all users, so I went over and poked around and set up an account. There were a surprising number of courses relevant to my interests and ambitions. I've just completed a beginner's Hadoop course, to support other things I want to take, and now I'm running through a data engineering basics course.
Er, apparently that's what I do. Huh. Listening to the descriptions of what a data engineer does, that fits my work very closely. It's never been the term used (my job title is senior programmer analyst, which is excitingly vague), but that's what I do every ay. I'd started to suspect that's how my job would be described on job ads and that's one of the terms I've been using when doing some scouting around about job prospects in London, but it's nice to have that confirmed and feel more confident about applying for those jobs.
I'd like to work on big data systems and play with cooler toys, although it sounds like my experience with RDBMS's will translate well enough to get me in the door for those jobs. I'm still doing some up-skilling to get myself into a better position for the job hunt. And I'm taking a look at some data science stuff, because that's where I'd like to start moving my career towards long-term.
Either ironically or coincidentally, I can't decide which, last week (the day after I started poking about on Lynda, in fact), my work set up a group plan for Pluralsight and gave me and a couple of colleagues access. Woohoo! ALL THE AWESOME IT COURSES ARE MINE.
There are some courses that are directly relevant to my current work, so I've been working on those. There's probably a dozen Oracle-specific courses plus an ITIL foundation course that is probably the ITIL training we keep getting promised and never actually get. I spent a fair bit of Friday on a PL/SQL fundementals course that was more useful than I expected. I picked up everything I know about PL/SQL from using it and reading books/hitting Google/hitting Stackoverflow whenever I needed to something I haven't done before. So even though I've been using it for nearly ten years and I consider myself fairly expert, this basics course showed me a few things I'd never seen before.
This is why I'd argue it's important for companies to fund training when developers are picking up new tools and languages. Supplement that with books/Google/Stackoverflow, but you need that core organised training to really use things well.
There are some more advanced courses around Oracle query tuning, star schema database design etc, plus some advanced SQL courses that talk about both SQL Server and Oracle that sound interesting and relevant, so I've got plenty to do for work training.
On my own time, I've been taking a Pluralsight course on basic Python (if I have access to the courses, why not?). I'd been teaching myself a bit already, because learning is fun and Python is fun, but it was good to go through this course and realise how much I've already absorbed. Unlike the other sources I've used, this course has been emphasising Python as an object-oriented language and explaining OOP theory as they introduce classes and so on.
The last time I used an OOP language was at uni, thirteen years ago (Java, C++, Smalltalk). Apparently I retained all that theory, because this part of the course has been more reminding me of OOP theory and teaching the Python syntax rather than introducing a whole new programming paradigm. It really is true that when you've learned a basic programming construct, it's pretty easy to pick it up in other languages.
The remaining modules are going to teach me entirely new things: how to deploy a webapp using Flask, and how to package up a stand-alone app using PyInstaller. I'm nerdily excited :-)
And after I've done that, I'm really excited about moving onto the more advanced courses and really digging into Python properly.
This is, actually, relevant to my discussion of data engineering and data science. Python is a skill that's called for a lot in both paths (there are entire libraries in Python for data science!), so I'm having fun learning something new that will hopefully pay off later in the year.
And hey, Pluralsight also has a whole bunch of courses in SQL Server and Microsoft Azure, so I can do a bit of cross-training to widen my net of possible jobs. After all, the important part is being used to dealing with data and an RDBMS. The differences between specific vendor distributions can be learned and adjusted to, it's the core understanding of what the hell all this stuff is and how to manage it that takes the time to learn.
(And yes, my Mac is still performing beautifully as a development platform. So far, I like PyCharm better than Spyder for my Python IDE, but we'll see. Both are much nicer than IDLE. And if I want to add some C# to my diet or try out yet another Python IDE, Visual Studio 2017 even has a MacOS version. My Mac is so great.)
no subject
Date: 2018-01-18 08:14 pm (UTC)We also have https://skillsmatter.com - they host a lot of free meetups (and a lot of $$$ conferences); and that's another place to engage in learning (plus they put videos online; signup is free and there's A LOT of stuff up on their website.)
I've decided to focus on Swift for the time being because there's just so much to learn in even one language, and I found that there are major differences even between Objective-C and Swift: they may use the same IDE and the same frameworks, but you can't just translate word-by-word, so I'd wonder how well even basic OOP translates from one language to the next. (What I've seen of OOP Javascript looked... strange.)
no subject
Date: 2018-01-19 12:33 pm (UTC)The first real language I learned (apart from HTML/CSS) was Smalltalk, which was taught because it was a pure, simple implementation of object oriented programming, to make sure we understood the ideas underpinning the concept before different implementations confused us. So the ideas around classes, instances, inheritance, polymorphism etc. were hammered into us and then we started learning how other, more common languages implement them. That core theory is what I find people have trouble getting their heads around, particularly if they're coming from a procedural language background. I found Java had the most confusing and ugly implementation (and Javascript includes a lot of that ickiness) and I'm not sad that I couldn't get a Java job after I graduated. I preferred C++, but there weren't many jobs out there.
So I ended up using the relational databases course I'd taken just to fill in higher-level credits by taking a data analytics job :-) And then going to my current data engineering job when I moved to Canada, because I couldn't find an analytics job here. And I really do love with data, it turns out!
So far, Python's implementation of OOP suits me really well. I might change my mind once we get deeper into the language, but I'm really enjoying it so far. The way the whole language works fits my brain.
It's a bit weird working in a language that relies on indentation and line breaks instead of curly brackets and semi-colons, but I'm starting to really like the whole "Python does this to enforce readability" approach. One of the things you learn when you start working as a programmer is that at least 50% of your work will be maintaining and updating (and fixing) code written by other people, and suddenly readability becomes really fucking important. The hours I've wasted attempting to figure out what someone was doing because they used utterly useless variable names and didn't feel the need to ever indent a damn thing, or even use a line break sometimes, and didn't put in any comments anywhere is...well, it's a lot of hours.
Making your code maintainable has become my big THING. It needs to be readable and it should be self-documenting, so I don't need to hope the developer wrote a guide to the dratted code and then curse them when they didn't and I've got to trace through the logic just to figure out what it's doing and then ask someone what business rule that actually implements. Python actually has a lot of that readability (and from there, maintainability) baked in. Love it.
Even with my very basic Python skills, I can open a file and make a reasonable attempt at reading and comprehending what its doing.
< / Python love-in >
Focusing on becoming expert in one language is a good call, especially when you're early in your career. I've found that I've picked up odds and ends in a lot of things over the years (including some COBOL, heh), but it's good to have a deep and solid understanding of the main language(s) you're going to be working in.
no subject
Date: 2018-01-19 07:33 am (UTC)Once I'm finished my MBA I need to work on my technical skills again, since I've rediscovered my love of learning!
no subject
Date: 2018-01-19 12:04 pm (UTC)Yay MBA! You should totally work on your technical skills after you've finished your MBA. It's so much fun :-)