9 Questions with a Professional Coder - Jim Lynch
by Tim Combs | Jun 1, 2020
Schools and media often make it seem like the average coder works at a small startup when this is not necessarily the case. This series profiles coders who come from art and enterprise and startups and indie shops and teaching, asking them about their path into coding, why they love it, and how they continue to learn and grow in their profession.
This is a profile of Jim Lynch, who mixes full-time jobs with contract projects. He's been working as a software engineer for the past 7-8 years. As he was writing the answers to the 9 Questions he was excited because the next day he was starting a new full-time job after taking three months off. As always, I want you to see the different career paths that professional coders take.
Is coding your primary career and what did you do before coding?
Coding has been my primary career since graduating college. For the first 2 - 3 years I wanted to be an actuary, I actually had two summer internships related to actuarial science. I realized the part I liked most about it was automating Excel spreadsheets with VBA, and I knew I needed a job where I could do more with code.
How did you get into coding and how did you learn the skills to use code on a professional level?
I have always been passionate about building things, and as a kid I loved playing video games. I grew up in the 90s and early 2000s when Flash games were huge and always wanted to build my own super-popular browser game. Even as a young teenager, I hacked away with an old version of Adobe Flash Professional with almost no knowledge of coding. I just kept searching how to do things and running the program ‘til it worked!
Two weeks before my last college final, I landed a job at a company that made MMO Flash games for kids. It’s always tough getting your first job, and I remember making a little project for them as part of the application process, then sending them another one after building the wrong thing the first time...haha. I guess they saw my enthusiasm and decided to give me a chance. I was kind of thrown into the fire, didn't really know anything about agile development, unit testing, best practices for deploying, etc. So there was a LOT of learning my first few years.
I have jumped around to different jobs and short-term contracts in my career, and I’ve seen many different working styles at different types of companies. I think it’s important to be aware of what styles and processes work for you and what don't so you can make future decisions. No company, person, or process is absolutely perfect 100% of the time, but you can collect little things you like from each and incorporate them into your workflow as your career progresses.
Where do you live and what is the development scene like where you work?
Well, I’m hiding out in New Jersey during the quarantine, but I usually live in Manhattan. In general, it’s a great place to be a developer. It’s a huge city with tons of companies and job opportunities, and on any given day there are at least a few software-related meetups and events where you can meet other coders.
Do you work for an organization/company/yourself, what does the organization do?
I have been an hourly employee, a salaried employee, a freelancer, and a contractor at many different companies so I’m not really sure how to answer this one. I haven’t started yet at Aon so I can’t say much about them, but I’m expecting it to be a large organization with lots of teams each working on different applications or different pieces of something bigger in a finance-related context. There are pros and cons to each type of employment - being a consultant is pretty interesting because you are a bit outside the political drama of the company and can bring a different perspective to the client team. Though, as an employee, you often have better insurance benefits and more stability on that the team and projects you work on.
What is your title and what do you do day-to-day as a coder?
My current title is Senior Full Stack Engineer. I’m thinking at least the first few months will involve working on a greenfield browser application in Typescript. The team I’m joining seems to have a preference for NoSQL databases (as do I because it’s so close to JSON) so we’ll probably start by thinking about what collections our database should have and what their documents might look like. Then I like to see sketches or mock-ups of the UI design to better understand how a user is able to see and modify data. Then we'll wire it all together with some back-end REST routes (and possibly websockets, cron jobs, and other fancy technologies.)
I’m a huge fan of automated TDD and BDD testing. I hope to put good testing practices in place for the new project at Aon so it can be a successful and relatively low-stress project. In the past, I’ve worked on teams that write UI automation tests which map user stories written in Gherkin syntax. These are great for quickly letting you know when you are ready to deploy. Then unit tests to checking that all the functions and components return the expected output when given some input. Writing automated tests is not easy, but when done well teams can catch pesky edge case bugs early and prevent them from being deployed. This keeps productivity and confidence high as the project grows.
When I’m not thinking about the high-level architecture or writing automated tests I’m in the weeds coding! I've enjoyed pair-programming in the past because you have someone there to bounce ideas off of, to share typing duties, and to catch silly mistakes that slow you down. It’s a great way to transfer knowledge around the team, as it fosters a supportive and collaborative environment once the team "buys-in" to the “everyone mentors everyone” and “we wrote that line of code together” mentality.
How do you keep up with technology trends and what are you studying right now?
There are always interesting new libraries and projects popping up so I try to be in that communities where people are talking about them! For any niche area that I’m interested in I keep an eye out for local events (which are often at especially cool places in NYC) which I like because I feel that talking to people in “real life” and seeing what other developers of various skills levels are excited about at the present time can be super enlightening. Virtual meetups can be just as effective and sometimes even more so because you still get that face-to-face contact, all participants can share their screen, they can break out into rooms, etc. In addition to events there are usually other online communities around those niche areas like forums, Slack workspaces, Reddit boards, email newsletters you can sign up for... Here’s a fun one- go to your local bookstore and look for all the books on that niche subject, flip through one or more of them, and then give a shout out to the author directly on Twitter!
What do you like to do for fun?
Learn new things.
Exercise by going to the gym or playing sports (mostly tennis, golf, and snowboarding.)
Play video games once in a while - usually either League of Legends or Li Chess on my phone.
Socialize - it seems like a distant memory, but going out with friends is something I really enjoy!
Listen and play music - I’ve been playing and taking lessons in piano and guitar just over the past few years. I love listening to music and have been dabbling in producing tracks in Logic.
What tips would you like to give new coders?
There are loads of free books, videos, tutorials, and code repos out there on the internet so don’t be afraid to just dive in and start coding. Don’t be afraid to ask for help, and find a community of other people interested in similar things. If you’re looking for your first coding job and you don’t have the job experience to prove to an interviewer that you know how to code, the best way to make the argument is to show them good code that you’ve written! That means have your a public Github repository and try to push something to every day.
I also highly recommend exercism.io for practicing code problems. The site is totally free and has over 50+ different language tracks. Each exercise is a little project with pre-written unit tests to help you work through the problem. Not only can you practice TDD, but once you submit a solution that passes the tests, a volunteer mentor will comment on your solution with tips to improve the efficiency of your solution.
Do you have favorite resources, creators or projects you would like to share?
There are so many awesome “famous coders” that it’s hard to pick a favorite. Each niche of software development has advocates, heroes, library authors, blog posters. So try to be open-minded, stay positive, and follow the people and projects that resonate with you. If you aren’t on Github, definitely make an account and start coding! Follow like-minded people on social networks, and periodically check for interesting articles. Definitely get comfortable with the command line, but checkout online coding playgrounds like repl.it and stackblitz too.
I give back to the coding community on my blog - jimlynchcodes.