How I Built an IT Automation Project as a Self-Taught Software Developer
I have at all times been obsessive about how applied sciences work, particularly computer systems. But my ardour was hindered by a voice in my head that echoed time and time once more – “you are not smart enough to study computer science.”
I thought I wanted to be extremely expert in quantitative arithmetic and be a genius to even take into account a computational endeavor, not to mention pursue a full-time profession in Software Development.
That all modified in March 2020. I was laid off from my job as a Business Development Manager at a main Data Analytics and Marketing Automation startup, as a result of Coronavirus pandemic.
It was then that I determined to embark on a journey to lastly pursue my desires of changing into a Software Developer.
You see, I graduated from the University of California, Los Angeles in 2012 with a Bachelor of Arts in Political Science, assured that I would go on to legislation college and turn into a lawyer.
Since then, I have labored for a variety of startups holding quite a few roles, together with Technical Account Coordinator and Business Development Manager. I even dabbled within the high-powered world of Finance, working as an Investment Banking Analyst for a few years.
But none of those jobs even remotely appealed to me, and I knew I wanted a change for good.
Roadmap to Becoming a Software Developer
This was my first actual entry into the distinctive world of know-how, the place I constructed mini tasks, such as re-creating the Google Homepage. I would use Bash instructions, then push my Git modifications to GitHub. It was fascinating to see one thing tangible come to life with simply a few strains of code!
Because HTML and CSS are markup and types languages, I needed to study a true Programming Language. After thorough analysis on-line (largely Reddit), I selected Java or Python. I selected the latter.
I started to learn two introductory books on Python which actually bought me enthusiastic about this lovely language. They had been Automate the Boring Stuff with Python by Al Sweigart and Python Crash Course by Eric Matthes.
These two authors are as sensible as they’re hilarious, and I totally loved going by means of every chapter, finishing the requisite assignments.
I knew the fundamentals at this level, however I needed to discover ways to construct with this newfound data.
So I enrolled in a 5 course specialization on Coursera referred to as Python for Everybody Specialization by the good Charles Severance, aka Dr. Chuck. This was precisely what I have to bridge the hole, between newbie and intermediate Python.
That specialization took me nearly two months to finish. I realized SQL, Internet Protocols, JSON, XML, and a number of Python libraries, together with Beautiful Soup and Urllib (used for internet scraping).
Dr. Chuck is an absolute legend on the planet of know-how, and it is no shock that his programs are amongst essentially the most enrolled in on Coursera.
At this level, I had sufficient data in HTML, CSS, SQL and Python to confidently say that I was an Intermediate Software Developer.
How (and Why) I Built my IT Automation Project
At this level, although, I realized that I had not created something significant that will catch the eyes of potential employers. Nothing that I may submit on GitHub, that will be cloned lots of of occasions, forked 1000’s of occasions. In a sense, my open-source presence was non-existent.
I sifted by means of the web, trying to find venture concepts in Python. Sure, I may have created a web-scraper or one other boring Twitter bot, however I needed to construct one thing that was totally different.
Racking my mind, I thought again to my earlier job as a Business Development Manager. There, I was tasked with the arduous and mundane job of discovering duplicate accounts on our Salesforce CRM (there have been over a million information!).
How I wished I may have written a easy script to make my pc do the work in minutes, as an alternative of weeks.
Then it got here to me – why do not I construct a utility that will undergo the entire recordsdata on my pc and search for duplicates? The common individual seemingly has a ton of recordsdata on their pc, lots of that are created a number of occasions and fully forgotten about.
Ideas began to pour out. I considered many use instances for industries such as Finance and Healthcare that might undoubtedly make the most of one thing like this to undergo their information very quickly.
I determined to leap into VS Code, create a .py file, and title it duplicate_files. It was lastly time to put on my Software Designer hat and assemble my masterpiece.
Building the Duplicate Files Utility
One of the toughest components about designing your venture is deciding what libraries you wish to use.
- I knew that I needed to entry the recordsdata on my pc, so I added the OS library.
- I knew that I needed to seek out the distinctive hash of every file to distinguish them, so I selected the hashlib library.
- I knew that I needed customers to offer their very own arguments when operating this utility, so I picked the argparse library.
- And in fact, I needed to time the overall processing time of the utility, so I added the time library.
Another tough half about designing your venture is deciding what knowledge buildings work greatest. After some trial and error, I selected two dictionaries and one checklist (that will apply user-ignored directories throughout Windows, macOS, and Linux).
It was extraordinarily necessary to me that this did in truth embody “A simple yet powerful program that searches for unique duplicate hashed files on your Windows, mac0S or Linux computer”.
Which I why I needed to make use of the fundamental constructing blocks Python needed to provide – loops, conditionals and FUNCTIONS. I did not use any advanced Object-Oriented Programming that you simply would possibly see in different tasks. This program merely has three main features, that is it!
I wrapped up my design by including a README file, and likewise included a .gitignore file each time I pushed my modifications to GitHub. I totally examined this program by way of the VS Code Debugger (enhancing the launch.JSON file), as nicely as on a number of computer systems that had the entire main working techniques.
In truth, this program was run on a Windows machine, the place the given path had a 6GB file inside. The program appeared to cease quickly when it reached that file, then continued and completed in blazing quick time.
In that instance, the trail had 100,000 recordsdata, and completed in 5 minutes. Months in the past, I was amazed with how one thing I wrote in primary HTML and CSS was displayed on a web site.
After operating this program present-day, I am really fascinated with the pace and complexity with which computer systems can run when given simply a few strains of code!
It has been an extremely tough, but rewarding eight months (and counting) studying turn into a Software Developer.
For a whereas, I considered attending a bootcamp. I even thought of a Master’s program in Computer Science.
But with the superb free and open-source supplies out there on the Internet, I felt assured that I may study by myself.
I wish to give a big shoutout to Quincy Larson for motivating me to start out my journey on freeCodeCamp. I additionally wish to say thanks to Al Sweigart, Eric Matthes, Charles Severance, and Guido van Rossum, who both straight or not directly had been instrumental in aiding me all through my journey to date.
I hope this submit accomplishes two issues:
- That I inspire others on the market who’re both not sure about what they wish to do when it comes to a profession, or are merely scared, to exit and begin coding!
- That an employer will take a probability on me, in order that I can obtain considered one of my largest desires of changing into a Software Developer (albeit a self-taught one).
To conclude: One of my largest idols, Naval Ravikant, a famend Computer Programmer, Investor, and Modern-Day Philosopher, has a quote that has at all times resonated with me.
“Learn to sell. Learn to build. If you can do both, you will be unstoppable.”
Well, I’ve constructed a profession on promoting within the Finance and Technology industries, and now I have realized to construct. I WILL BE UNSTOPPABLE.