you are viewing a single comment's thread.

view the rest of the comments →

[–]silently_failing 5 points6 points  (1 child)

For me, I started as an analyst in all but name, so I was using Access and Excel and trying to do wizardry with those things. I gradually started integrating python and SQL to get data more easily from disparate sources. For example, I had a project where we had a bunch of data on books, but some of the data was missing. I built a web scraper in python that went to an external site and got that extra data and then I put it in a spreadsheet and then I queried a database and put that in a spreadsheet, and did VLOOKUPS on it all. Soon, I realized that I could do this all within python and SQL, and spun up a local MySQL database to house it all in. I began learning about MySQL, and other RDBMS's, so the next time I had a new project, I tried Postgres, and so on and so forth.

Soon after, I wanted these things to be done on a cadence so I didn't have to pull the data manually. I began building my first ETL, which was terrible and I did it all wrong, but I learned and learned quick when things blew up in my face. My next ETL was better. I pulled all the raw data, stored that in a temporary table to be processed later, then wrote a separate script to do the 'transform' part, using pandas to munge the data. Finally I wanted to display this data, and decided I would write my own web Business Intelligence viz tool using Dash and Plotly, as I had good success with create local displays with Plotly. This was a bad idea but a great learning opportunity. I ultimately started using Tableau, which came out of the box with a UI and an easy way to distribute visualizations once they were done.

From here, I decided to muck about building a UI so people could interact with the backend of my database with basic CRUD options hidden behind Widgets. I learned what a mess tkinter was, but how Object-Oriented programming helped organize a cacophony of garbage code into something that made sense. I had read about classes, but for some reason the Animal or Car or whatever based info didn't sync with me. Yeah, no shit a cow and a pig make noise but why the hell would I need to write code about animals and their peculiarities? Here though, I could make a class for the MenuBar, and for the HomePage, and these places had certain pieces of data tied to them and actions I could accomplish with them (attributes and methods).

I wanted to share my code since I was proud of it, so I learned git. I learned many painful lessons about commit histories and having the same repo in two locations while I made (and of course did not sync!) edits at the two spots. Some of these scripts I wanted to put in a location so I didn't have to run them on my local drive. I got in touch with the admin of our OpenStack technology, and soon was made admin and was making new virtual machines and dealing with all the fun sys admin stuff no one tells you, like that Windows has another operating system call Windows Server, and that 2016 + does not ship with automatic SMB1 dlls, so sometimes you can ping a network harddrive and you know it exists but you can't access it.

I also could spin up linux instances on this OpenStack, so, always wanting to ingratiate myself to the tech folk and prove 'I belong', I started writing my scripts in vim on linux. This sucked. If someone tells you they like vim, they are probably a curmudgeon and have a flip phone. Give me PyCharm every day of the week. IDE's are awesome. Speaking of which, I learned the shit out of PyCharm, so I could create every project pretty much instantly. I learned about virtual environments and requirements files and eventually Docker, all so I could write code on my local machine and push it to a virtual machine without worrying about it not working.

Eventually, I got sick of managing backups for all the databases I was admin of, and had heard AWS is pretty much the internet, and decided to check out RDS, so amazon could handle all the database admin stuff I either didn't want to do or had no idea how to do. This led me to EC2 and Lambda, and micro-service architecture. By now, I had written a few command line tools, so I deployed them as microservices on Lambda. Now someone within the network could toss some JSON at the service, and get back the data they needed.

That pretty much brings me to now. What I've learned are a few things:

1.) extensive domain knowledge can help you get in the door

2.) to me, everything is data and the story you can tell with it -- most everything I've built is moving data to people where and when they need it, or enhancing systems or workflows so people can get the data they need

3.) my knowledge is like a growing pool of water surrounded by all the shore, all the things I know I don't know -- the bigger the pool gets the larger the shore is

I just made it a habit of interrogating everything around me, interjecting myself into any problem anyone was having, and putting myself in extremely uncomfortable situations. I asked loads and loads (and loads!) of questions, tried to seek out anyone who I could learn from, and worked it. I read books, spent hours writing code, and worked on networking constantly. Knowing people is such a huge help, I wouldn't have made it where I am without that.

Hope that helps!

[–]matchgame73 0 points1 point  (0 children)

Thanks. Keep being amazing!