Military veteran with over 10+ years experience in Software Engineering. I help individuals and organizations implement AI solutions, advise Startups, lead software development teams, and more.My principles:1. Keep it simple. Complexity kills. Cleverness for cleverness sake is bad.2. Work backwards from user pain. 3. Design twice, code once. Code is expensive.4. Explore the risks in a project before diving deep.5. People over processes. Don't just embrace entire systems, use the components that work for the team.6. Cross-functional teams over silos. Design is important. Engineering is important. Marketing is important. So on and so forth.7. Engineers are not ticket-takers. They need to be a part of creating the solution, not handed the solution. That being said, experience matters. Juniors can handle tasks (tickets), seniors can handle goals/features, etc. Some teams are comprised of many Juniors, leading to the assumption that the rest of the business needs to provide them with tasks (tickets).8. Building a product is science. You have a hypothesis that must be proven/disproven, an experiment (the product, MVP, etc.), and data from the users. This is a loop that must be iterated.9. The first response to a new idea is 'Maybe Later'. Maybe, because it must be evaluated. Later, because it shouldn't disrupt current work.10. Git is a powerful historical tool. When you put too much on one branch without documentation, you muddy the history. Use Git as documentation.11. Culture (in Software Engineering) is what we do when no one is looking. Use systems to enforce culture, enforce architecture, etc. such as linters. The system must reflect your culture.12. Use Diataxis for creating documentation: https://diataxis.fr/
Listed skills include Leadership, Mathematics, Programming, Artificial Intelligence, and 11 others.