How is your 100daysofcoding challenge going?
It’s going well! I have to be honest and say that it’s competing with a couple other priorities that I currently have (like finishing the laundry), but I truly believe in the movement. It’s refreshing to see the development community band together and support each other like they have. Just today I tweeted about some of my struggles with NextJS, only to have its lead developer tweet back with some assisting comments.
My one disappointment that I have, though, is that I think some people are missing one of the key principles to the movement and that’s publicly sharing the code through its progression. It’s one thing to say that you’re doing something and another to show it. Especially with code. I think it’s really important to show examples of your work. Development requires a bit of “artistic interpretation” and its great to see someone else’s approach. Even if you disagree with the person’s execution, it challenges the mind to think differently.
I never actually became a 3D game artist, but I did go to school for it. Game design is actually my second degree and computer networking was my first. What ended up happening was me working for a help desk at a company where one of their developers ended up leaving for another job. I approached my boss and asked for a shot to become a developer, and they took me up on it. To say I was a complete beginner wouldn’t be accurate either. I proved that I had some skills by writing scripts that assisted with the day-to-day on the help desk. I later decided to continue my schooling, but I wanted to do something that combined my technical skills with my love of the arts. Game design is what I landed on, but by the time a graduated, I was well established in my career as an software engineer.
I grew up in a household in which both my parents were software developers. I was that rebellious teenager that claimed that I’ll, “never grow up to be like my parents.” Early on I had a highly energetic creative side, dabbling in all …sorts of things including, mix martial arts, music, and digital arts. Ultimately, I ended up in that exact position that I promised myself that I wouldn’t be in. I just didn’t take a direct path to get there.
With all that being said, I wouldn’t change anything. I attribute my successes to having a wide variety of experiences. It’s extremely helpful to be able to “switch on” the artist side of my brain and look at a situation from the opposite perspective than that of an engineer.
Coding is a challenge in itself; what are the biggest challenges you have faced so far in your career?
The people. Before you say, “every career has to deal with people,” let me explain. Every sector needs developers and developers need to deal with every sector. Executives want developers to move quicker and stick to timelines. Designers want developers to understand the human element of using software. Accountants want to be able to predict the budget of a software project. Etc, etc, etc. It’s a never ending cycle. Then try to explain why programming is more an art form and less of a science. After all, to computers software is nothing more than 1’s and 0’s. Finally, try to get 5 different coders to agree on something without some difference of opinion.
It’s just as important for us as developers to educate the world on what we do as it is to execute on the development life-cycle of a project.
Besides the typical sites of Pluralsight, Udemy, LinkedIn Learning, and Stack Overflow? Really pay attention to what people are mentioning on social media. I try to look “nuggets of gold” where people are mentioning technology that I’m not familiar with and then research the hell out of it. Early on, I found really valuable topics through “digital word of mouth.” Some of the topics that come to mind are Domain Driven Design (the precursor to microservices) and Command/Query Responsibility Segregation (CQRS)
As a self-taught developer, what resources worked for you and which would you recommend?
In the last 5 years of my career, it has mostly been about online learning, mainly with Pluralsight and Udemy. Prior to that, I spent thousands on books. I still buy a lot of books, to be honest. You’ll find that the majority of online courses or tutorials only “scratch the surface” or not focus on some the advanced topics. Online sometimes is just not a great medium for deep topics. Machine learning or predictive analytics comes to mind. Could you image the effort that would be needed to convert a large probability and statics programming book into an engaging online course and it have the same level of detail?
Two things: learn all you can and understand the power that comes with saying phrase, “I don’t know.” I think first is pretty self-explanatory, but let me explain the second. People in the technology sector (especially the good ones) tend to have a “chip on their shoulder” thinking that they know everything (or at least know better than the person next to them). And why shouldn’t they? Understanding the complexities that come with technology is difficult a the very minimum and these individuals have relished that challenge. HOWEVER! If you’re willing to say (or at least think) the words, “I don’t know,” it puts you in the position that allows for you to become a listener instead of a speaker – to be put in a vulnerable position. This scares a lot of people, but if you put up an artificial wall so that you don’t appear vulnerable, it prevents you from understanding all aspects of particular circumstance. I’m not just talking understanding things from a technical approach, I’m also referring to the “soft” aspects (like usability). Change the conversation from, “You’re wrong and I’m right,” to, “I don’t know why you feel that way, so can you explain why you do?” You’ll be surprised how much further this approach will get you.