Navigating the Challenges of Modern Software Development: An Exclusive Interview with Shai AlmogMarch 27, 2023
Welcome to our exclusive interview with Shai Almog, an accomplished entrepreneur, author, blogger, and Java expert with over two decades of experience in the software industry.
Shai has been instrumental in developing innovative tools and solutions at Codename One and Lightrun, significantly impacting how Java applications are debugged and monitored in production.
In this fascinating conversation, Shai shares his journey, from his early exposure to programming to his growth as a developer and entrepreneur.
In addition, he discusses the importance of mentorship, overcoming impostor syndrome, and the challenges facing today's developers, and offers valuable advice for those entering the software industry.
Dive in to learn from Shai's unique experiences and insights, which will resonate with aspiring and experienced developers alike.
Fun facts: "I support my spouse, who is a yoga instructor, by assisting her in creating her teacher training program with anatomy and slide preparation using my tech teaching skills. While yoga instruction is a different discipline, she still uses the slides for technical aspects of her training. Additionally, I subbed for her after our first child was born, and I might pursue yoga instruction if programming doesn't work out."
- Early exposure to programming and diverse programming languages shapes a developer's career and approach to software development.
- Finding experienced mentors or spiritual guides is crucial to overcoming overconfidence early in one's career.
- Personal and professional growth requires objectively seeing oneself.
- Everyone experiences impostor syndrome, but it can be overcome by faking confidence and gaining experience. It's essential to understand the depth of one's ignorance and be willing to learn and improve constantly.
- Balancing scalability, reliability, and ease of development is challenging due to rising costs and complexity.
- AI can solve low-hanging fruit but won't solve developers' actual problems, making bad code and practices perpetuate.
- Career satisfaction is vital for well-being and earnings, and it's beneficial to try various things and pivot through one's career.
Bazlur Rahman: Can you tell us about your background and how you got started in the software industry?
Shai Almog: I have had a passion for computing since a very early age. I “programmed” a Sinclair before I knew how to read or what I was doing. I went to programming classes and did all the typical geek stuff in the 80s, then chose a technical high school where I didn’t really learn much because my peers and I knew most of the stuff already.
My bookshelf was bursting with computer books, which was the only way to learn at the time. But I did get to work on interesting machines there, like the PDP-11 and learn stuff I would never have learned, like COBOL. At the time, I was a huge Pascal fan.
I got my first paying job at 16 as an educational game programmer. I didn’t work continuously during those years, but I did keep working on side projects and for companies when the option arose.
I also had an operating system obsession; I was a team OS/2 member and very active in the local community meetings. I bought Solaris x86 with a friend and was so excited by it. I ran an early version of Linux etc.
So when Java came out, I fell in love with its simplicity, which reminded me a lot of Pascal. I was working with C++ at the time, and it was a nightmare of complexity, Java was a breath of fresh air. The portability aspect was a huge selling point for me as an OS geek.
This led me to write for an online publication, where I composed a very early Java tutorial (Grinding Java) in 1997. I was also very active in local and global Java communities and was one of the early members of the JavaLobby.
Shai Almog's self-guided, hands-on journey in the software industry demonstrates the power of passion and adaptability. Embracing Java's introduction and engaging with the tech community helped shape his career. His story underlines the value of staying informed, embracing change, and contributing to the broader community for success in the software world.
Bazlur: That’s fascinating to hear about your background and how you got started in programming at such a young age. How do you think your early exposure to programming and your passion for operating systems and different programming languages has shaped your career and approach to software development today?
Shai Almog: At a very early age in the industry, I felt very overconfident. I knew many things that my peers didn’t know, and that ego helped me land jobs as a consultant. You need a lot of egos to walk into a company and have confidence that you can solve the problem they’ve been struggling with for a long time.
The ego isn’t necessarily bad. We need the confidence it brings to do great things. But it was also a significant problem early in my career as it wasn’t balanced. I was a big fish in a small pond. I wasn’t challenged enough at my own level, which made me somewhat abrasive. Luckily, I met an amazing set of experienced mentors relatively early and mimicked their compassion and patience.
Shai Almog's experience emphasizes the need to balance confidence with humility. Mentorship played a crucial role in his personal growth, revealing the importance of continuous learning, adaptability, and embracing compassion and patience in one's career.
Bazlur: It’s fantastic to hear that you had mentors who played a crucial role in developing your soft skills and helping you balance your ego early in your career. Finding the right mentor can be critical for success, so I’m interested in knowing more about how you identified and connected with these mentors. What strategies did you use to find good mentors, and what advice would you give to someone who is looking to find a mentor in the software industry?
Shai Almog: I call them mentors, but we never had a mentorship relationship. I consider them my spiritual guides. I studied their actions and learned by example. They were project managers and senior developers I worked with along my career path which I noticed specifically. These are people with whom I had a pleasant working experience and could learn from.
I never felt I needed a formal mentor relationship. I just needed to understand my own problems and see an example of someone who represented a better alternative.
For example, I just got a job at a new company and didn’t even work a single day. The project manager invited me to his home on a Friday (the day off). He made me coffee, and we sat down to talk. He spoke slowly, patiently, and listened. I was pretty young, so it was hard for me to understand the nuances of what he did there, but I did get the sense of respect and attention to detail that was missing from prior engagements with a senior staff member.
Then at work, he would always communicate with an even, measured voice. He’d pair programs and was always subtle with his suggestions, giving credit to a less experienced programmer. He got a fierce level of loyalty from his team.
This was such a contrast to my previous manager, who was so invested in the technical details and didn’t even get them right. That manager never verified that his point got across, and his projects were such a mess as a result.
Shai Almog's experience demonstrates the impact of observing and learning from the people around us, even without formal mentorship. He absorbed valuable lessons from project managers and senior developers who displayed qualities he admired. His story emphasizes the importance of self-awareness, adaptability, and learning through observation, which can help anyone seeking guidance and growth in their career.
Bazlur: It’s clear that you were able to learn a lot from the people you worked with throughout your career, even without formal mentorship relationships. I’m curious, what advice would you give to junior developers just starting out in the software industry and looking for guidance and support in their career development?
Shai Almog: It’s a bit hard for me to give proper advice since every path is unique. Many of the opportunities and situations I faced in the 1980s and 1990s don’t apply today.
One thing I needed that might be universal was a way to see myself objectively, so I could gauge the problems I had. This was sometimes painful. For example, I would teach a lot and used to think I was great at it. Then, in one particular class, I got terrible feedback. That was shocking to me since my feedback was universally good; the class had to be the problem. Not me.
I had to disconnect from my emotional investment to see the point the students made. That helped me become a better teacher.
The same is true about my public speaking skills. I love public speaking, and I’m a natural at that. But I wasn’t a good speaker, despite the praise I got from people close to me. I had to see myself on video at an event where I thought I was good...
That’s a painful experience, but we need to put ourselves through those experiences to improve. There’s no other way.
Shai Almog's insights emphasize the importance of self-awareness and objectivity in personal growth and career development. By being open to feedback and willing to face uncomfortable truths, junior developers can learn from their experiences and continuously improve their skills. Embracing self-reflection and adjusting one's perspective, even when it's challenging, is crucial for long-term success and personal growth in any career.
Bazlur: It’s great that you mentioned public speaking. What do you think? Is it essential for a developer to speak at conferences? There is a common belief that most developers are shy and not confident enough to share their knowledge with others, and some would consider this imposter syndrome. What advice would you give those hesitant to speak at conferences or share their expertise with others? How can they overcome imposter syndrome and develop the confidence to share their knowledge and experiences with a broader audience?
Shai Almog: No. It is not essential to speak. We each have our strengths, and many great developers just don’t feel the need to stand on stage. My best friend and long-time collaborator, Chen Fishbein, was on stage with me many times. But he doesn’t like doing it. That’s fine. Public speaking is a skill that can be honed, but one shouldn’t go for it unless one actually wants it.
Yes, we tend to be more introverted than the median. I’m very awkward in social situations. I’ve been described as a “character,” and I get that. I don’t think that a person is one thing.
The trick is to understand that everyone is an impostor, not just you. At least initially, we need to fake confidence. Unfortunately, this becomes harder as we gain real-world experience. Had I not started my career very early, I wouldn’t have had the unwarranted overconfidence that let me gain real experience. Friends of mine who spent too much time building up to this ended up missing the mark. Wisdom understands the depth of one's ignorance. As an experienced developer, I feel more like an idiot when I speak today than I did 25 years ago.
The one difference is that I’m not embarrassed to admit that today…
Shai Almog highlights that public speaking isn't essential for all developers, and everyone has unique strengths. He acknowledges the prevalence of imposter syndrome and suggests that embracing vulnerability can help overcome it. His advice encourages those hesitant to share their expertise to recognize that everyone starts somewhere, and by embracing both confidence and humility, one can grow as a developer and communicator.
Bazlur Rahman: Let’s shift gears and talk about the current state of software development. In your opinion, what are some of the biggest challenges that developers face today? Additionally, do you have any advice on how to overcome these challenges?
Shai Almog: Costs and complexity are rising instead of declining. Throughout my career, costs have constantly gone down; this has been the one constant in computer science that can be applied decades back. This flipped with the advent of serverless computing and microservices.
They were both billed as simplifying tools and as cost-saving tools. However, this is only true for a relatively narrow niche of usage. When applied at scale in an enterprise setting, these solutions both increase complexity and make costs harder to control.
The challenge is in finding the right balance between scalability, reliability, and ease of development that produces maintainable, affordable systems. This means better observability tools and a return to systems that provide high performance in resource-constrained environments.
Another challenge is noise. When I started programming, there were no IDEs, code completion, internet, Google, or StackOverflow. Until now, the improvement has been tremendous and made it much easier to pick up programming. Unfortunately, two trends are making it much harder than it was 5–10 years ago.
The first is SEO. Modern SEO has destroyed search engines. They have become useless, so getting decent, authoritative answers to trivial questions is impossible. The second trend makes it worse. AI generates code instantly; it looks authoritative but has no idea what it is doing. It provides answers that are flawed and wrong, especially for the more intricate problems. This can harm developers both directly and indirectly.
- It makes the SEO problem much worse.
- It lets developers skip learning, which leaves them unprepared for the hard problems.
- It gets polluted with lousy code and perpetuates bad practices/bugs.
Shai Almog identifies the increasing costs and complexity in software development, along with the challenges of information noise, as significant issues developers face today. He emphasizes the need for finding the right balance in system design and honing skills in resource-constrained environments. Furthermore, Shai highlights the importance of critical thinking and continuous learning to navigate the cluttered landscape of SEO and AI-generated code, ensuring developers can address complex problems and maintain high-quality work.
Shai Almog: The death of programming has been predicted since the 1980s. Back in the StackOverflow days, programming was so easy that everyone could do it. The reality is that they had two different effects:
- They made the barrier of entry lower and increased demand.
- They solved the creation problem but did not debug, scale, etc. The real hard stuff.
AI continues that trend. It solves the low-hanging fruit. Occasionally, it will find a great answer, and if your job is mostly doing trivial stuff... It will make it easier. This is good. It means you’ll be more productive. But it won’t solve the actual problems we face.
Some people already try to use the currently limited tools as a shortcut. We see this in StackOverflow or on Reddit, where a new user comes out of nowhere with an answer that looks good at first. The thing is that these answers are really easy to spot. They look very serious, as if someone who is knowledgeable wrote them. But they are often confident in their mistakes.
This will make our jobs much harder. We will no longer be able to trust StackOverflow postings or random articles on the internet. This will make it harder for younger developers to make a name for themselves, as the community won’t trust them as much as it does.
I think more people will gravitate toward getting their information from trusted sources to stop that noise. It’s already a problem with online blogs, where content volume rises as quality declines.
Shai Almog points out that while AI advancements, like ChatGPT, can help automate some programming tasks, they primarily tackle low-hanging fruit and do not replace the need for skilled developers. He believes AI-generated code may make programming more accessible and productive but acknowledges that it can also introduce challenges, such as a decline in trust for online resources. Shai suggests that developers should focus on honing their skills, working on complex problems, and seeking trusted sources of information to stay relevant and successful in the industry.
Bazlur: As someone who has transitioned from a developer to a developer advocate, what advice would you give to someone who is just starting out in the software industry and unsure of which career path to pursue? Could you also provide insights into the various roles within the industry, such as developer, quality assurance, manager, and developer advocacy, and the specific skills and interests needed for each of these roles? In particular, could you discuss the advantages of pursuing a career as a developer advocate in software development and offer advice on how to pursue that path?
Shai Almog: I don’t think I transitioned to developer advocacy. I did it for a while, but I’m still a developer, first and foremost. As an entrepreneur, I always felt that my biggest problem was overfocusing on technical and coding aspects. So in that sense, I thought I needed to learn developer advocacy properly to make myself a better entrepreneur moving forward.
I’m a person who is comfortable with uncertainty and independence. This is hard for most people, who need to know where their next paycheck is coming from. Both financially and psychologically. In that sense, I let my career move in odd and sometimes regressive directions just because I didn’t feel passion for a specific direction.
I don’t advise people to take this path, as it’s harder to walk through, but you should try various things and pivot throughout your career, even if it means going back a bit. Career satisfaction is one of the essential things not only for well-being but also for earnings.
About the financial freedom for our younger readers…
Save as much as you can and put it all into index funds. But unfortunately, I made a lot of money in the early years of my business and didn’t save nearly as much as I could.
Shai Almog emphasizes the importance of being open to exploring different roles and pivoting throughout one's career to find satisfaction and success. Although he doesn't explicitly detail the specific roles within the industry, his experiences highlight the need for adaptability and a willingness to learn new skills. Shai also underscores the significance of financial freedom and advises younger professionals to save and invest wisely to maintain stability and flexibility in their career journey.
Bazlur: Thank you, Shai Almog, for sharing your insights. I’m sure our readers will find them immensely beneficial. On a different note, do you have any enjoyable or memorable stories from your time in the software industry that you would be willing to share with us?
Shai Almog: So many…
- I was in a burning building and kept coding, oblivious.
- Working in accelerators to create Codename One was a unique experience.
- Working on an international team at Sun Microsystems was an eye-opening culture shock.
- My first business trip to Sun was a unique experience.
- I was sent to a literal palace to learn course material so that I could teach that course.
- So many trip mishaps, like booking the wrong week for my AirBnB and walking the streets of Oslo at 2 AM looking for a place to stay.
For my recent co-recursive interview, Adam listened to me talk for 4 hours. I didn’t mention most of those.
Shai Almog's anecdotes reveal the diverse and sometimes unpredictable nature of a career in the software industry. From coding in a burning building to unique work experiences at Sun Microsystems, his stories demonstrate the importance of adaptability and maintaining a sense of humor in the face of challenges. These experiences serve as a reminder that a successful career is often built on a foundation of unexpected moments and lessons learned along the way.
Bazlur: Wow, that sounds like an incredible experience. Thank you so much for sharing your insights with us. We really appreciate your time. If we have any further questions, we will be sure to reach out to you. Before we end, is there any parting advice or resources you would like to share with our readers, such as a list of recommended books or any other useful information?
Shai Almog: Focusing on long-term satisfaction and authenticity has always worked for me. So that’s the one piece of advice I give my kids. Don’t stress over grades and future prospects; focus on finding the right path, I obviously have to plug my latest book, or my publisher will be upset: https://www.amazon.com/dp/1484290410/
I also enjoyed Vlad Mihalcea’s book on persistence—an excellent read for anyone dealing with JPA/Hibernate from a really sweet guy.
I’ve enjoyed YouTube more in recent years as I started making more videos. youtube.com/@debugagent
There are amazing creators in our community besides the obvious great ones in https://www.youtube.com/@java/
E.g. Jakob: https://www.youtube.com/@JakobJenkov/
Also, JavaZone is my favorite conference. https://www.youtube.com/@JavaZoneNo
I loved the Freakonomics books and blog, which help understand incentives in a very engineering-friendly way.
In conclusion, our insightful interview with Shai Almog has provided a wealth of valuable knowledge and advice for software developers at every stage of their careers.
Shai's experiences and reflections have highlighted the importance of mentorship, overcoming impostor syndrome, embracing career pivots, and adapting to the ever-evolving landscape of the software industry.
In addition, his unique perspective on AI's impact on software development and the challenges developers face today offers food for thought as we navigate the future of this dynamic field.
We hope that Shai's journey and wisdom have inspired you to continue learning, growing, and thriving in your own career. We look forward to sharing more enlightening conversations with industry leaders like Shai in the future.
I hope you, as a reader, have found this interview beneficial. Stay tuned for next week's interview with another industry star.