Career Perspectives: The Life of a Programmer

At Fireside Insights, we believe the best way to learn about potential career opportunities is through exposure. In this Career Perspectives article, we took a deep dive into the technical world with Ryan Bacastow, who told his story of what life is like as a Full-Stack Programmer. Bacastow graduated with a BA in Political Science and Spanish from the University of Wisconsin Madison, and has an MS in Predictive Analytics from Northwestern University. His current role is that of a Programmer for William Blair, a global investment banking and asset management firm where he is a data guru…and magician.

 

What are your roles and responsibilities?
I’m in the Investment Management Research division of Information Technology (IT). If I had to give myself an accurate title, it would probably be a garbage man or amateur magician. Let me explain: programmers in the division of the bank that I work at fall into two camps with a lot of crossover depending on where their specialties or duties lie: the back-end or the front-end.

By back-end I’m referring to Data-Warehousing, Data-Management, Business IT Infrastructure, etc.; and these are the aforementioned “garbage-men.” They take all the data from online or in-house which would otherwise be trash sent out into the great abyss of cyberspace or left to rot in a spreadsheet and they channel it into a pipeline that gives it structure, meaning, and makes it mobile or available to the frontend devs. It is hard work to keep this machine running, and most of it is done exclusively in languages like SQL. This is all done in the background and out of sight of the average user. It’s very technical work.

By “magician” I am referring to the front-end work which represents the forward-facing client side of applications which deliver the previously garbage, now polished data to the clients in a shiny interactive software or application. In this case, the garbage is financial data that is both public and proprietary—collected by the company—and it is being channeled through a web application designed and maintained by the front-end magicians. This is the tool by which the users—analysts and portfolio managers in our case—interact to do their daily workflow, so it’s critical to get things just right. You can’t have a finished working product without either group, and I hover somewhere in the middle of the two trying my best to solve any problem that falls on my plate. This is often an issue on either side of the front- and back-end divide which makes me a sort of jack-of-all-trades and master-of-none. I might be doing SQL one minute, and the next minute, I have to debug a javascript file that’s gumming up the works on a particular part of the web service. This is what you call a “Full-Stack” Developer, and like the mythical unicorn, not many truly full-stack devs exist because, without specializing, it’s extremely difficult to become adept at any one domain. I certainly struggle with it, though I am grateful to try the waters on both sides. For the foreseeable future, however, I’ll be training to be more of a garbage-man with my graduate studies in predictive analytics at Northwestern.

What does a typical day look like for you?
Usually, it involves checking the logs for errors in the morning or seeing whether my inbox has any user hate mail. From there, it’s problem-solving and keeping the ship afloat until the morning stand-up meeting for the current project sprint planning. We go over priorities, and as we draw closer to deadlines, things get more intense. We have people trading millions and millions of dollars on our platforms, so the margin for error is tiny. Managing a team of devs all working on their little pieces of code in their own little worlds can be hard work, and I don’t envy the project managers who are essentially herding cats to get the product to market and get the job done. From the sprint review/planning, I really sit at the computer and just type away, testing the changes, making changes, testing the changes, making changes, and so on. By the end of the day, we work on coordinating a “push” of our code changes to the main working code branch, or the master branch, and the servers are restarted and reconfigured to reflect the changes and give us fresh data. Then, we observe for problems or hiccups and the whole cycle begins again.

What is your favorite aspect of the work that you do? 
I solve puzzles all day. Every algorithm or debugging situation is like a little game that I can challenge myself with. I feel like I’m getting paid to solve problems that the general public does not want to see and the average person cannot solve, and in doing so, I am constantly learning and growing in my knowledge in the process.

What are some of the challenges faced by someone in your role?
It’s an unparalleled feeling to make computers do exactly what you want them to do, when you tell them to do it, and exactly how you told them to do so. Simple intuition has not been made obsolete yet, and for that reason, computers need to be told literally every single thing about the task that you want them to complete. No “I” can go undotted, no “T” uncrossed. Computers are only as smart as the instructions we give them… for now. And that’s what keeps me employed, so I’m all the better for it, but it sure can be frustrating when the program refuses to cooperate because you left a semi-colon instead of a comma on line 372 and you’re three coffees deep looking for a bug.

What advice would you give someone pursuing a career in this field?
It doesn’t take a degree in computer science to be a good programmer. All it takes to be successful in this career path, or any path for that matter, is sustained discipline. You have to be willing to go through the painful rote learning, taking baby steps like a child learning to walk, falling and failing constantly. You have to round out areas of knowledge that you might have neglected like math and logic or dive into new ones you’ve never considered before like machine learning or systems engineering. You will have to code, code, code, and code some more.

Read other people’s code. Design your own personal website. Put your ideas onto paper then program them into existence. It’s an empowering process, and you learn by doing. Lastly, there is the harsh reality of the modern economy to consider. There is a reason so many people are technical recruiters these days and that the demand for programming skillsets are through the roof. We are on the frontier of another wave of globalization and mechanization, one that will squeeze the middle classes of advanced industrialized nations even more than the transition to a post-industrial service-based economy has since the 1970s. The post-service economy based on AI and more automation that is on the frontier will prove just as challenging to the American workforce, particularly those who can’t or those who refuse to retool their skill sets. I was a translator out of college, and a machine took my job, so I asked myself, “Should I get upset about this or should I learn to program that machine,” and I haven’t looked back. Many people will be forced to do likewise in the future, and learning to code and program now is a valuable investment in job security, not to mention an amazing learning journey. If I can be a garbage-magician, you can too.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s