I’m a self software developer and have held professional positions in software development, architecture, and management at various small and mid sized startups.

I started by teaching myself how to program Visual Basic when I was 13 years old, which was around 24 years ago. Back then I was on AOL and hackers made “progz” which added functionality on top of the platform. I was curious how they did made them and wanted to make one myself. So my father took me to compusa to talk to someone about programming. I left with a cd to install Visual Basic and a learn vb in 24 hours book. From there I spent a good portion of my childhood learning various languages, platforms, philosophies, and frameworks.

The first money I made was building ASP classic websites for local businesses when I was around 17. In college I started as a CS major but at the time the curriculum hadn’t caught up to the web and I wasn’t interested in what they were teaching. I was always a pretty entrepreneurial, so I transferred to the business program.

I try not to have regrets, but in hindsight I wish I followed through with CS. It took me many years and a large investment of time to build the required fundamentals I think every software engineer should have. Also, all that stuff they were teaching later become interesting to me.

After I graduated I wanted to be a product manager. But no one would hire me and they kept pushing me towards software development. I decided if I was going to write software for a living I had to go work somewhere fun. So my first job was at CollegeHumor as a software engineer. It was the perfect transition from college to the real world. We worked hard and we had a tremendous amount of fun too.

Early in my career I had a chance to go into management and have mostly stayed in management since. I still program (outside the critical path), contribute to architecture, and try to keep my skills up to date and sharp.

I’ve joined various companies early enough where I’ve been the first engineering hire. I’ve had the chance to develop everything from scratch and then build a team to hand it off to. I’ve also joined mid stage startups and helped grow the team and tech.

I love what I do.

My advice...

- Do it because you love it. The best engineers I’ve worked with also happen to be the most passionate. They are curious and never stop learning.

- Learn CS fundamentals and how the things you use work under the hood

- Learn to create value for a business. Unless you are in academia or research you are being paid to create value for the business. I can’t believe how many engineers miss this point. This means that you should forget the pursuit of perfection and learn to balance good enough and technical debt.

- Learn how to speak to software people and business people. You’ll be more valuable if you can translate and be the bridge to both sides.

- Experiment with lots of different languages, philosophies, and paradigms. You’ll find the ones you like and take some lessons away from all of them.

- Dont get caught up chasing the next hot thing (language, framework, database, etc). At the same time don’t become obsolete either.

- Learn SQL. Really learn it. I’m not talking about the little bit to make your ORM work. A database is just another service you interact with. You should know what value it brings and how to interact with it.

- Money is good. Most people in this perfession seem to be doing okay. But don’t do it just for the money.

- If you plan to join a startup learn about Stock options and how they work. It’s amazing how many engineers work at startups and have no idea about their options and how it fits in as part of their comp package.