In this Cosmic Developer Spotlight, we sat down with Trey Huffine, a Software Engineer in San Francisco who currently works as a frontend engineer at Postmates. Trey is also the founder of BlockAce, gitconnected, and Radion. Check him out on Twitter or Medium, and enjoy the Q/A.
How long have you been building software?
What is your preferred development stack?
For the client side, I almost always tend to pick React as the tool of the choice. Whether I'm building a small project or a large scalable interface, React is mostly unbeatable and the community around the technology is incredible. If I need more powerful state management, I'll also add in Redux.
Recently though, I've found myself really enjoying working in a JAMStack. On the client side, I build static markup with React using react-static and then provide API's with AWS Lambda functions written in either Node or Go. By pre-building the markup, apps feel blazing fast to users, and you don't need to wait for database calls. By using Lambdas, it forces me to keep the logic small and modular, producing better overall code quality. It also makes your server horizontally scalable since you don't manage your own CPU's. Working in this stack is also what has gotten me interested in Cosmic and thinking about how to use that to manage my data backend.
What past projects are you most proud of and why?
I think the project I'm most proud of is gitconnected which was created as a way to help developers connect and offer social learning community. I know first-hand that making a career change into the software engineering field can be intimidating. Many developers suffer from imposter syndrome, and it can feel very difficult to find and connect with other engineers. Gitconnected was created to help build a community as well as support collaboration and open source software development.
Recently I've also been enamored with blockchain technology which made me decide to start BlockAce and Radion. I've bought into the hype that blockchain can be transformative and disrupt the way we do many things. Since blockchain is so new, there is a disconnect between developers and companies, and BlockAce is a job platform to people get hired for careers in blockchain.
Another issue with blockchain is adoption. The companies that do offer blockchain software solutions expect the clients to make radical changes to their current business model, and we believe this is the wrong approach. Radion focuses on building software that allows companies to integrate blockchain immediately without needing to change any of their day-to-day operations.
I'm also a software engineer at Postmates, and we've been doing some very exciting things. We recently rebuilt our entire web application as well as the view layer on the mobile apps. Being part of a ground-up rewrite for a product that is used by millions of people is a learning experience that I'm very grateful to have been a part of. We were able to choose the exact technologies we wanted to use and build a software stack that's great to work with as a developer and offers all the features needed to grow the company. The team itself at Postmates is very talented, and I really believe that the sky is the limit on what we're now able to achieve.
Talk a little bit more about your process for building apps. Are you working on a team, and if so, what types of roles within the organization are you collaborating with?
I've both built applications individually as well as worked on larger teams where I need to collaborate all different roles - other engineers, designers, product managers, marketing, customer service, etc. I think regardless of the size of the project or number of people, I tend to find following these principles lead to successful outcomes and happy individuals.
- Focus on completeness over perfect and then iterate.
- Individual ownership is critical. Everyone should feel like the CEO of their own work.
- Get input early and often from everyone involved, and make the process of building a product a conversation among all stakeholders.
- Focus and prioritize the things that will make the greatest impact.
- Keep business objectives in mind when making decisions.
- Don't make assumptions. You should validate ideas.
- Always find ways to make the process fun - try new technologies, add your twist on ideas, work on building features with other people. If you're enjoying what you're doing, a lot of the other things will fall into place.
For me personally, I tend to start putting down code as quickly as possible. It helps me think through the entire problem and identify areas of concern or opportunities early. It also allows people to see results and provides the chance to get feedback.
What are some technologies you are excited about that you are using today, or want to learn more about?
The technology I'm really excited to continue to learn more about is Blockchain, Solidity, and Hyperledger development. It's fun to be working on something that's so new to everyone and collectively finding the best way to utilize the technology in a practical context. The blockchain space has also embraced the open source mentality maybe more than any other field, and I'm eager to see how things develop.