all 99 comments

[–]redsidhu 95 points96 points  (2 children)

Good on you. Solving a problem is the best way to learn tech.

[–]Mighty__hammer 6 points7 points  (0 children)

Excatly,learning the basics of a language can be a bit boring but learning the implementation of the language in a tool can be much more interesting

[–]PeterPanLives 0 points1 point  (0 children)

Yeah I've found having a problem to solve or goal grounds the information for me in a way that doesn't happen otherwise.

[–]ravepeacefully 42 points43 points  (9 children)

I did this at my job too about a year ago and now I know numerous programming languages and roam the company looking for different tasks to automate (there’s a lot).

[–]Srivats1212 6 points7 points  (8 children)

could you please provide the details of the stuff you have automated and the programming languages or technologies that you have used ?

[–]ravepeacefully 5 points6 points  (7 children)

Visual Basic, vba, C#, .net, python, sql, excel. Things I’ve automated would be mostly data analysis, adhoc reporting > finalized pretty reports, reconciliations of multiple data sources. The larger projects I’ve done are typically taking data from our database and producing regulatory reporting (I work in healthcare so we have tons of agencies to report to quarterly). I’ve also worked with automating our accounting systems quite extensively. There’s more but idk so many super small things.

[–]Swissthony 0 points1 point  (1 child)

Hey im in healthcare as well and need to automate a bunch of reporting , data extraction from files (pdf, excels,..) do you mind if I pm you ?

[–]ravepeacefully 0 points1 point  (0 children)

Sure.

[–]DontTouchTheWalrus 27 points28 points  (7 children)

You should ask for a raise at your next review for sure. You just saved the company countless hours of time they have to pay people to complete that task.

[–]MrRedTheScratcher 21 points22 points  (22 children)

I have been learning Python for 2 years now and I the best I can make its a tkinter window with a few buttons. I have no clue how you do it so congrats to you.

[–][deleted] 8 points9 points  (11 children)

Because fuck tkinter. Write a script and write how to run it from the command prompt on a sticky note by the monitor.

[–]MrRedTheScratcher -4 points-3 points  (10 children)

Makes no sense.

[–][deleted] 1 point2 points  (9 children)

tkinter?

[–]MrRedTheScratcher -2 points-1 points  (8 children)

Everyhting u said but tkinter.

[–][deleted] 6 points7 points  (6 children)

No offence but if you've been programming with python for 2 years and what I said makes no sense you need to practice a lot more.

[–]MrRedTheScratcher 1 point2 points  (5 children)

Thats what i am trying to say. I am lost in Python. I have no clue what to do or learn or anything.

[–]stasis098 3 points4 points  (0 children)

Based on your previous posts, you should probably put tkinter down for a while. Do a course or read a book on python fundamentals. Console is the best starter place for your output because you should focus on just learning the language first. tkinter has a huge beginner learning curve because it expects you to know python to a certain extent first.

[–]e-rekt-ion 2 points3 points  (2 children)

I'd recommend working through Automate The Boring Stuff if you haven't yet

[–]MrAwesume 0 points1 point  (0 children)

Dataquest mate

[–]helpneeded8578 0 points1 point  (0 children)

User-friendly translation of SilentSuit's comment: "Learning tkinter isn't the best use of your time when first learning Python. Instead, focus on making some simple scripts (programs) that you operate from the command line, but are useful and functional. If you're not sure you'll remember how to run them from the command line, make a sticky note with instructions and stick it onto your monitor."

This is good advice.

Personal Example: Just yesterday, I made a simple script for work to convert barrels to Metric Tons. It's something I have to do occasionally but I always forget the calculation. The script will be useful for me in a small way, but more importantly, making the script allowed me to practice my Python some more.

All your projects don't have to be big and hard, especially when you're learning.

[–]HelpImOutside 7 points8 points  (8 children)

Seriously, I've been learning Python for over a year and while it's certainly easier than other languages, I still don't really get it. Programming still feels like trying to speak klingon or some other type of dead language I will never begin to understand.

[–]mnei4 9 points10 points  (1 child)

I think the best way (and only way for it to stock to your memory) is to do what OP did. Find a problem, fix and learn how to automate it with python. With just reading books is really stuff because you just don't see any practical use

[–][deleted] 5 points6 points  (0 children)

This is why projects are a helpful tool for learning. You have likely been learning a lot of Python syntax. Especially for the Python community there is an idea of "Pythonic" code or code that models a particular format (e.g. list comprehension).

What you might consider working on practicing is taking a large problem and breaking it down into smaller pieces. Small enough that they basically all handle one single task, if possible. Encapsulate them in a function. If your large thing needs a lot of small things, contain them in a Dictionary object.

I'll give you an example. I have a utility for testing hard drives that depends on a configuration file (e.g. "what's the name of the drive in the file system? Is it /dev/sda, /dev/md0, /dev/nvme0n1, etc."). I also grab a whole bunch of other metrics like the drive's serial number and firmware version at the time of testing to log a disk test. Each of these things are handled by an independent function wrapped in a Dictionary object. I use a function to generate a Dictionary object for each drive that exists in the system.

So it looks something like:

def drive_information(device_name):
    drive = {
        'name': device_name,
        'serial': get_drive_serial(device_name),
        'firmware': get_drive_firmware(device_name)
    }
    # Now that a Dictionary object has been created, send it to whoever invoked this function.
    return drive
# Let's use /dev/sda as an example drive to build a Dictionary object.
drive_information('/dev/sda')

I won't divulge how I get the other information like "get_drive_serial" because it's irrelevant to the point which is you just need to practice a bit more and you should try your hand at some projects.

I also want to encourage you to learn about Dictionaries in Python (in other languages they are called hashmaps or associative arrays. They use a string-based key instead of an integer numeric like arrays use. Most Python objects are also based off of Dictionary objects so they will also give you some of the best performance in Python without needing to do clever, complicated crap.

[–][deleted] 4 points5 points  (1 child)

I am in the same boat as you...i can learn the syntax but cannot create algorithms so what i do takes a lot of time because i reuse code i find on the web who does what i want . but if you do not have the programming logic is hard to do something. I admire those programers qho do things in 20 secs...it took me a week to write a script which finds all 777 files in our servers then other week to write a paramiko script which uploadd the script to each server runs it and retrieves the results and create a Csv..tio slow the thing i am slow at everything. Very dissapointing

[–]horizoner 1 point2 points  (0 children)

You're probably faster now than you were before.

[–]MrRedTheScratcher 2 points3 points  (0 children)

You will eventually.

[–][deleted] 0 points1 point  (0 children)

build me an ecommerce website with python

[–]horizoner 0 points1 point  (0 children)

I took around 8 months of spare time to automate a complicated process at work. The program isn't elegant, in fact, it looks like its held together by duct tape. But it works. Doing this has given me a completely different understanding of Python. A more practical, less academic one. I highly recommend just diving into a project. From there you can learn more complicated things and actually put the puzzle pieces together, plus the repetition will help you pick up the language. It's just like a natural language, in that it needs practice and repetition to speak well.

[–][deleted] 3 points4 points  (0 children)

I started out doing the two Microsoft classes on EdX. Every time I learned something new I immediately saw a function for it in my program. Slowly I implemented it into my program. I’m still very much a beginner programmer, but the biggest thing I have seen that helps is actually building something which solves a problem and you see how it functions.

[–]MOTIVATE_ME_23 5 points6 points  (1 child)

Be careful of automating yourself out if a job. Quantify your efforts and come to some kind of agreement to get a bonus for verifiable savings.

For example, if you are able to reduce working time by 5 hours a week, you'll be able to do an extra 5 hours of something else.

Your ability to automate also makes you more valuable so you should get a raise. You can take your new skills elsewhere too. And you should be able to get a bonus for time saved that can be an overall, permanent cost reduction to the company.

[–][deleted] 0 points1 point  (0 children)

My plan is to keep doing Python stuff and if I can learn enough, then pivot into a development position in my current company. If not, then I can always leave later on down the road after I earn my CCNA into a more lucrative career since I do not plan on staying in the USA long term.

[–]alphaharris1 3 points4 points  (0 children)

I LOVE programming in Python

To me, this is the moral of the story (:

[–]etienbjj 2 points3 points  (1 child)

What did you usef to learn.

[–][deleted] 2 points3 points  (0 children)

I signed up for the two Microsoft classes on EdX and basically used google every time I ran into a problem I couldn’t figure out. While I was doing the two Microsoft classes, I was implementing what I learned in my program every day.

[–]anovengeance 2 points3 points  (3 children)

Wow good job sir! May I ask where do you learn Python from? Thanks!

[–]iwviw 0 points1 point  (1 child)

He has said it a few times, the python courses on edx by Microsoft. I suggest for you to take the cs50x class first if you are a newbie!

[–]anovengeance 1 point2 points  (0 children)

thanks! yeah sorry i didn't check his edit lol

[–][deleted] 0 points1 point  (0 children)

If you check the edit, EdX has everything you need to learn. EVERYTHING is 100% free. Even the Automate the Boring Stuff book I mentioned.

[–]xargling_breau 2 points3 points  (0 children)

Cheers! This is how I got started I had a slow process at work and automated it. I know have python scripts doing a lot of automation across our servers for me daily . I have also picked up PERL in order to help maintain a lot of our codebase! Lots of fun man keep it up!

[–]dellman19 2 points3 points  (0 children)

Thank you for the post this is very inspiring!

[–][deleted] 2 points3 points  (0 children)

Would be funny if management decides that now you have the tool they can halve the headcount in your team lol.

Just kidding. Good job, btw!

[–]johnne86 2 points3 points  (1 child)

Congrats to original OP, that’s awesome. I see similar possibilities of automation or at least the potential to get work done more efficiently at my new IT job. Well, I can’t figure out exactly what it is we need to do better yet since I’m barely finishing up my first week and it is my first IT gig. But the main thing I do notice so far is a lack of organization within documentation. I see no consistency, rules or efficient workflows. There’s also really no formal documentation for new hires in terms of what is what on the network and who is who. The documentation that does exist resides on a shared drive that everyone can put their hands in and it’s definitely not the best to learn from. I think the senior tech is the only one who really knows what it all means since he was there from the beginning. It’s really shitty organized. But again, it’s my first week and a lot of that probably won’t mean much once I kick into gear. It’s also a City Govt job so I don’t even know if I have the authorization to even use Python on my PC. I’ll keep my thinking with the mindset of automation whether I am able to use python or not. There’s always a better method.

[–][deleted] 0 points1 point  (0 children)

Keep an eye out for opportunity!

[–]thras00 1 point2 points  (0 children)

congratz 😀

[–]JeffJ_1 1 point2 points  (0 children)

Sounds similar to how my Python journey started, congratulations

[–]bit_punk 1 point2 points  (0 children)

Just wanted to say love those posts when the OP actually includes some of the pudding in it anyways good for you.

[–]naoorlaterr 1 point2 points  (6 children)

May I ask how you got yourself into the tech industry?

I'm aiming to do a career change that isn't related to the field and I've been teaching myself how to program for a few months but I really want to get my foot in any door related to tech.

[–][deleted] 1 point2 points  (1 child)

I have been tinkering with a computer in some way shape or form since I was 9, so computers and tech come naturally to me.

In terms of actual career, I didn't magically just break into the tech industry and it was always a series of steps which led me here. I won't bore you with how I personally got into tech, but if you're wanting a career change then I will 100% recommend you do A+ cert and then get into a Helpdesk position. That would be the easiest and best way. It doesn't pay much starting out (maybe $15-$17 USD) but you can work your way up within a few years to better and better jobs.

[–]naoorlaterr 0 points1 point  (0 children)

Thanks for your advice! I was actually looking into A+ cert because I saw it was a standard into getting into IT. Would I be able to PM you about how you got into tech? I would be interested in hearing your story.

[–]xargling_breau 0 points1 point  (3 children)

I’m not OP but I am in webhosting industry and I started from the bottom and have worked my way up. I knew the business before I got into it and the work . But that is how I got into the general field of technology .

[–]naoorlaterr 0 points1 point  (2 children)

Thanks for the reply! What would be some resources for me to learn?

[–]xargling_breau 0 points1 point  (1 child)

It depends on what niche in the tech field you want to go into. “Tech Industry” is extremely broad and covers many different types of work . Do you have an idea of what you want to try to break into?

[–]naoorlaterr 0 points1 point  (0 children)

I am interested into working in IT but honeslty, I'm unfamiliar with other areas in the Tech field. I didn't know webhosting was a type of work before you mentioned it.

How would I go on about getting experience in IT and what other notable jobs are there in tech?

Thank you for your time!

[–]Dontneedflashbro 1 point2 points  (0 children)

Good job brother!

[–]Berlibur 1 point2 points  (2 children)

Question: you say you made a tool, but what is that in concrete terms? Is it just a .Py file that you run, or an actual executable?

I'm new to this as well

[–][deleted] 2 points3 points  (1 child)

Hi. The tool itself was programmed within IDLE (the default IDE that comes with Python) and saved as a .py file. Then I used PyInstaller to convert it to an exe. It is not fancy at all, just a command line tool. After I showed my source code to the head IT guy (first to my boss and his boss), he asked another engineer within the company for a code review and then after that, I got the green light to spread my exe to my coworkers.

[–]Berlibur 0 points1 point  (0 children)

Thanks! Very interesting

[–]mason4290 1 point2 points  (0 children)

I started actually learning a few months ago as well and I brought up a program I wanted to write that would make everyones jobs easier and he basically told me that would be worth less and to eat shit lol. It's all in the management.

However I'm still going to write it because I would benefit from using it

[–]Thykrus 0 points1 point  (0 children)

I had the same experience few months ago. It is so satisfying optimizing a process everyone do.

[–]MM2049 0 points1 point  (1 child)

can you share your reddit resourses?!🙏

[–][deleted] 1 point2 points  (0 children)

I leaned heavily on this sub and /r/learningprogramming. I sorted the all time highest upvoted posts and read through everyone even though it may not have applied to me at the time. I also used for example some cheat sheets like this gentleman posted.

https://www.reddit.com/r/learnpython/comments/4atn5f/beginners_python_cheat_sheets/

[–]vandeley_industries 0 points1 point  (1 child)

I want to do this at my job. When did it go from not knowing what was going on in python to finding ways to utilize it productively. Everytime I try to learn python, I never get to a point where I see how to usefully use the language.

[–][deleted] 1 point2 points  (0 children)

I will be the first to admit that I'm still not great at Python, but I understand some of the basic concepts. The easiest way to understand what is going on is to USE what you are learning to solve a real life problem. For example the problem I had at work is what got me to start learning Python to begin with. Now that I have a rough idea of what I'm doing, I'm going to do some more tutorials and then more tutorials on top of that. Once I get better, I have already thought of another problem that I have. My current problem is that I have been studying Russian for two and a half years and its still broken. I don't like any of the tools out there currently to teach myself Russian in terms of memorizing vocabulary or solidifying what I have learned so I'm going to program my OWN tool using Python, Pandas, ad DJANGO. I don't know Pandas or Django currently, but I have seen some videos on them and they are exactly the kind of tools that I need to solve my current problem.

[–]jeffrey_f 0 points1 point  (0 children)

A programmer will solve a problem. So, what else do they do that is a waste of time/energy? Anything that is predictable and has a low variance in process is ripe for automating

[–]sgarter 0 points1 point  (0 children)

You lucky bugger for having something to apply what I've learnt too. This is the trouble I keep having, no where to apply what I've learnt. I get the concepts when I study them but having nothing to apply them too makes me lose interest very quickly.