Learning to code in 2024, on a yellow legal pad, and a command_line:
Like many young people this past decade, I saw the swelling income of a workforce with a technical skillset and job titles ranging from developer, engineer, scrum master. All related to making virtual, dynamic, and interactive products. These castles made of sand were being programmed on a wafer of silicon.
"What do these people do?" More than once I asked myself, "maybe I should learn how to code?"
I had a knack for programming in Middle School and High School. MS-DOS scripts, and VBA to automate formatting on homework assignments and explored a curiosity with file-systems and networking. I took a web-design course and was quickly proficient in HTML/CSS. In college I had a 'developer workflow' with dynamic and non-destructive edits in Adobe Photoshop earning a Bachelor of Fine Arts in Photography. I had programmed for different paradigms at University of Montana's Digital Fabrication Lab during Art School. Figuring out and teaching other students how to operate for CAD laser engraver, etcher, and 3D printing technologies while working as a lab technician.
In 2020 I gave a coding bootcamp a shot. Attempting to learn Python from a YouTube 'guru' who insisted I needed to use a GUI, the newest development environment and IDE. Yes, a powerful platform, but an overwhelming amount of buttons, features, and paradigms, that wasn't contextualized in a proper curriculum.
After crashing a "Hello World" program for the n-th time, I gave up.
I started studying Finance, focusing on fundamental analysis, securities, and market dynamics. I was enthralled by the virtual mechanics of financial markets. I proved adept at parsing through financial, business and legal statements, and being able to read between the lines to realize the true economic phenomena they were meant to describe or obfuscate. I passed FINRA's SIE and enrolled in the CFA Institute as a Level 1 Candidate.
Committed to build a career in Finance I began an in depth research and analysis of the financial and investment industry and current labor market. I found two competing paradigms of "must-have" technical skills in the marketplace. Excel, or Python. I already have a working familiarity with Excel, noticed a large overlap of capabilities between Excel/Python, and thought back to my frustration years prior with Python... All while resisting the AI-apathy I saw many of my peers succumbing to.
I decided to tackle the steepest angle of the learning curve and learn Python. This time I took a different approach. I reached out to friends and acquaintances for conversations on how to get started. These weren't YouTube Guru's selling some magic path to success. They were real developers and analysts sharing their day-to day experiences on the job and resources they use to learn, develop, and refresh their knowledge continually. Now I was intrigued...
This time I opted for the simplest development environment I could find, the command-line. Embracing the infinite possibilities of a black screen waiting for input I armed myself with books (real physical books), and a yellow legal pad to teach myself how to code. I spent my first 100 hours or so #!/bash-ing my head against a wall. Writing my first 5,000 lines of code by hand in a yellow legal pad, taking the time to understand the underlying concepts, performing the computations by-hand, and finally typing my inputs into the command-line.
It was so satisfying when coding finally 'Clicked'. On a blank black screen I watched all my hours of hardwork pay off instantaneously as I striked return.
>>>"Hello World, now I am hooked."
Sure now I fancy advanced editing tools like Vim, auto-completion, and syntax highlighting... But I wouldn't appreciate them or leverage these tools as much without the solid foundational understanding I built for myself from scratch.
Persevering through hardwork, attention to detail, and dedication, while ignoring the voices of naysayers "Chat-GPT can do it!", I have developed a strong foundational knowledge in Computer Science that can only be achieved through personal experience.
As I reach an intermediate skill level I find I can pick up new languages and skills quickly. I can be agile, adaptable, and flexible in my approach to problems. I can quickly identify direct, simple, and effective solutions for most problems on the command line faster than your average amateur skating around on a high-level language, libraries, or GUI-tools. It has also laid a very solid foundation for me to learn systems programming, software engineering, and system administration. I have begun to 'think like an engineer' and can participate in high-level discussions on technical topics with mentors that have decades of experience on me.
I am grateful for what working on the command line has taught me, and am excited to have it in my skill set as I continue to learn and develop professionally.
10_11_2024 - nicholas_alan