A Jack of All Software Trades: Meet G.T.D.

Welcome to the first installment of our Web Dev Interview Series.

In this series, we interview working developers on what got them started, where they are now, what they’d do differently, and more.

We’re excited to introduce you to G.T.D., a longtime supporter of RealToughCandy, and a regular over at the RTC Discord.

We asked G.T.D. 10 questions about his web developer journey. And his answers did not disappoint.

Read on to gain some valuable insight and suggestions from a longtime industry dev.

Note: Answers have been edited for clarity and formatting.

This blog post is brought to you by RealToughCandy.io. Check out the course How to Get a Job in Web Development and put yourself far ahead of the pack.

1. Tell us about yourself: Who are you?

I’m G.T.D., a software developer and also a slight productivity enthusiast. My primary activities include: coding (work and recreationally), productivity, budgeting/finance, and reading about software development, programming, and productivity.

I listen to a lot of music as I am working. I do wish I was less neat, and less perfectionist oriented about my digital records/files/etc.

2. How long have you been in the industry?

I have been in the industry longer than I care to admit but suffice it to say that I have grown out of caring about what the one true language, style, methodology, etcetera is and really do not get into too many religious or fanatical arguments regarding software development.

The only exclusion I make is for JavaScript because the language is just fundamentally broken and frustrating (the general nature of the language’s design being just wrong/an afterthought).

3. What’s your role at your current job?

I am currently a software developer manager responsible for a team of software developers.

I primarily do the meta-management of software development and less general coding (e.g. I may do about four hours of coding per day on an average day).

I focus more on making sure processes, team/external coordination, and administrative concerns are handled and do not bleed down into the team.

This includes corralling tickets, developing test suites, updating/fine-tuning checklists & documentation, and meeting with business experts/users as well as developers.

Meetings like these would range from project planning, sprint planning/work break down, budgeting and helping other developers if they’re stuck or want to discuss broader topics that impact the codebase like systems design.

I also do more general developer activities like code reviews, diagnostic sessions, peer-programming, and mentoring of other developers.

4. What languages and technologies do you use?

For personal projects, it can vary but I typically use Java because it just fits the bill for the large majority of projects I may want to do.

For work projects, I have used Java, C++, C#, Visual Basic, JavaScript, TypeScript, HTML/CSS, PHP, etc. with varying levels of proficiency/memory in each.

Currently, in my job we have a proprietary language based off of C++ that we use for our development in what we do on our team. That’s all I can say about it.

5. What previous tech roles have you had?

Mostly it has been software development related just using whatever title de jour the company I worked for at the time decided to call me ranging from application developer, software developer, lead developer, senior developer, project manager, development specialist, etc.

Honestly, looking back I see minimal difference in most roles’ actual day-to-day responsibilities compared to the titles.

6. What made you get into software development?

I would say realizing that a computer could do certain repetitive tasks faster, easier, and with 100% accuracy much more often than myself or any other human could.

I am the person who will find a way to automate things as much as possible even if I only save a few minutes.

We call these people programmers and we really do love spending hours making code to do a task that might take us 15 minutes each time by hand, but we’d rather not have to do the task again and thus spend 15 hours to make a program for it.

Who knew, right?

7. What’s the most valuable skill you think devs should have?

The ability to self-govern. This includes things such as:

  • Finding effective ways to self-learn new things: Get a book on the topic and sit down and go through it AKA Just do it!
  • Knowing what your weaknesses are and compensating for them: Are you bad at communication? Say “Hello, good morning” to fellow teammates every day. So many problems can be solved by just communicating and talking with other people.
  • Managing your time and resources effectively: Do not spend 3 hours on a single bug, going down rabbit holes. My recommendation is anywhere between 15 ~ 30 minutes to try to solve a coding bug.
  • Developing strong critical thinking and problem-solving skills: Be systematic in handling issues such that you do not get stuck rethinking/redoing work or in analysis paralysis.
  • Develop your executive brain: Be honest with yourself. Make a decision and move on it.
  • Do not ever give up and use everything to your advantage: Life is not easy, and you will fail. Use failure as a motivator and a resource to know what to not do in the future.

8. What languages do you find to be the most challenging and why?

I do find JavaScript to be very annoying and frustrating largely because it does not follow logic or work, really.

For example, ` [1, 2, -1, -2, 3, 4, -4, -3].sort();` does not work as anyone would logically expect it to (try it).

I just find it to be a very poorly designed and haphazardly thought of language (which makes sense given its history). I tend to find myself often needing to either write my own standard library or just constantly check/test against the language itself and assume it does not work or function correctly as a language would be expected to.

I prefer to avoid it when possible.

9) What do you wish you knew as a beginner?

I would say there are three key things that I, as a beginner, think would have been helpful to know:

Do not take things religiously or as an absolute truth, unquestionable fact: Develop a passion to question things by garnering research and discussing with other open-minded developers.

Do have fun programming and doing things “the wrong way” on your personal projects. You will learn a lot of by doing and doing the wrong way. It’s ok and actually very helpful.

Pride cometh before the fall. You will encounter many programmers who have a chip on their shoulder and are eager to show their elite skills and point out your inefficiencies and inadequacies as a beginner programmer.

If it all possible, ignore them and find more helpful people/groups.

Communicate, communicate, communicate. Just picking up the phone solves so so so so many problems.

10) You’ve been tasked with making a time capsule to be revealed in 2100. What technologies do you include and why?

I would perhaps say languages such as JavaScript in an attempt to show “what not to do” when creating a programming language.

I guess I might say Java for the positive case because it was really quite unique in its own way of being one of the first most ubiquitous x-platform languages that is fairly well architected and able to effectively develop large codebases with sanity.

Otherwise maybe macOS or iOS as examples of great end user software that “just works.”

For a piece of hardware, I would say the iPhone because it quite literally changed the world and the way mobile technology was perceived.

For an example of “when to follow your own way of doing things” I would say Windows 7 as it was the last good OS Microsoft made.

Bonus: What was the learning stack that helped you land your first tech job?

For my first technical role, it was .NET (all the pieces from C#, Visual Basic, ASP.NET WebForms, WinForms, and JS/HTML/CSS).