Developer Spotlight - Mike Trpcic

In a new & ongoing series, the Weebly Developer Relations team asks Weebly developers to share their background, thoughts, tips, and plans for world domination. In this post, we talk to Mike Trpcic who offers great advice on how to get started in the Software Development field.

Developer: Mike TrpcicOccupation: Director of Engineering, overseeing 5 development teams: Growth, Internationalization, Internal Tools, Billing, and a Super Secret Future Product That is Really AwesomeTime at Weebly: 2 years and a few months Favorite thing at Weebly: Aside from all the perks, the freedom to choose and use the tools that are best for you.

Sometimes, you just know what you want to be when you grow up. At age 12, Mike loved playing MUD (Multi-User Dungeon) games; those text-based, role-playing games where you use commands to go on adventures like slaying dragons. Once he started to master them, he wanted to create his own adventures and worlds. But to do any really cool customizations, he had to know how to code. So he set out to learn C++. From then on, he's been programming, taking any sort of programming class or opportunity that came his way.

Example of DragonRealm, a popular MUD

Because all he's ever wanted to be is a developer we've asked Mike for some tips on how to become a developer, continue to grow as a developer, manage developers, and how to lead a happy developer life. Here are his tips:​

​Do what you love

Mike loved gaming so much in high school that he researched working in game development. He felt his creativity would come in handy (not in the graphic-heavy UI, but behind the scenes, in the code) and he wanted to help create the next big game. The deeper he got, the more he learned that game development wasn’t for him. The industry thrived on long hours, tight deadlines, and hectic schedules. After some research, he decided to get into Web Development, where fast turnaround times and instant gratification rule supreme:​

design -> code -> deploy -> view

​So find what you love, try it, and don't be surprised when you end up going in a slightly different direction.

​And do more of it in your spare time

Although Mike didn't join the gaming industry, he did enjoy working on games and other types of software in his spare time. But after spending 8+ hours a day, 5+ days a week coding for his job, he started to lose his passion for it in his downtime. Now that Mike's in management, he spends most of his time away from the code, and the passion for coding is back, and he always has a pet project going on at home. Sometimes, he'll create an app because he wants to know how another company did something interesting, and wants to see how close to the mark he can get. For example, he wanted to get a deeper understanding of how our infrastructure talks to the database from the top to the bottom, so he decided to build an ORM (Object Relational Mapper) from scratch. It was a fairly complicated process with tricky problems to solve and tons of functionality to implement. It took trial and error and looking at existing solutions for inspiration, but because Mike loved what he was doing, he learned a lot and the project was rewarding.

​Look to others for inspiration (and peek under the covers when you must)

​When Mike is working on his pet project, he doesn't simply reverse engineer what someone else has done. If he did that, he feels he'd miss out on learning why something was done a certain way. As he said, "It's sort of like the difference between tracing a drawing and learning how to draw - you need to understand all the techniques to fully create something." Often, he'll start from scratch and try to recreate the software on his own. Inevitably, he’ll get stuck along the way and have to look under the covers to see what the other developer did, and then decide if that's the best solution for him. For example, when he was coding the ORM, he referred to the documentation for existing solutions to see how other ORMs worked. It's more like making sure you're on the right track. Look to others for guidance and inspiration, not for complete solutions.

​Never, ever be afraid to fail

As he continued to work in software, Mike realized that more often than not, your code fails. And you almost never get it right the first time, so you can't be afraid to fail! Misplace a bracket, or forget a semicolon, and the code breaks. But the time you spend troubleshooting is as valuable as the time you spend coding (if not more valuable), and when it's for something that you're passionate about, figuring out and solving that puzzle is completely rewarding (Even if it is just finding that wayward bracket).

​Use the right tool for the job

As a manager, one of his responsibilities is helping his team determine the technology to use to solve a particular problem. Weebly mostly uses PHP (backend) and JavaScript (frontend), with a slew of software that keeps things running smooth (like Memcached to keep things snappy, or RabbitMQ to manage long running processes). At times, the team elected to use Node.js, Ruby, Perl, and Python when a solution called for it. As he put it, "While you could use the back of a screwdriver to hammer a nail, a hammer is much better for the job. And while we probably could code everything using PHP, sometimes another technology is the better tool." But he warns that you do need to find the right balance between using the right tool (and needing to find or grow that expertise on staff), and consistency in your code. You don't want to end up with different technologies everywhere simply to use those technologies. That's too difficult to maintain, especially as the team and the code both get bigger, and more projects may be interacting with that code in the future.

​Share your knowledge

Aside from pet projects, Mike also spends his time as one of two moderators of the "Learn Programming" subreddit, which has over 230,000 subscribers! Along with answering questions from folks wanting to get into software development, his responsibilities include making and enforcing rules, and checking for any reported issues. He truly enjoys mentoring future developers. Sharing your knowledge allows you to hear from other people solving similar problems. They often have feedback that makes your solution that much better.

The Learn Programming subreddit.

There is no "I" in team

His focus is now on his teams, and he's as passionate about them as he his about coding. Mike emphasizes that the team comes up with the plan, not just him. He likens managing a software team to being a coach on a football team. The coach doesn't run everything. He guides the team, assigns the people who can execute the plays, makes sure everything goes smoothly, and handles any issues before they can impact the individual players. The team health is his #1 priority. If the team is happy, they're going to enjoy the work they are doing and be more likely to put in the extra effort if needed.

​Remember to disconnect

It seems to be a fairly common personality trait among developers - they can't turn their brain off at the end of the day. After spending 8 hours building some cool functionality or debugging the latest build, it's really hard to turn off the problem solving. He also reads and tries to keep up with current events. All code and no play makes Mike a <crazed> boy!

​So get started already!

If you're looking to get into software development, take a look at your day to day work and see if there's a process that you can automate with an app. In finance? Maybe learn Python to see if you can automate some of your reports. Love gaming? Learn Java and create a mod for Minecraft (ok, maybe not the coolest game ever, but it is one that allows, and even encourages, mods). Love photography? Create a web-based app that allows you to edit photos. Whatever it is you're doing now, it can be made better with a little bit of code. And if you get stuck? Find a similar app that inspires you and try to recreate it, looking under the covers if you have to (Chrome's developer tools are a great way to do this if it's a web-based app). And then share that knowledge!If you're wanting to hop on the management track, remember that your team is your most important asset. And use all the problem solving skills you’ve learned in your coding days to help protect them, nurture them, feed them, and watch them grow.​And at the end of the day, remember to unplug. Not every problem needs to be solved today!