There are several paths to starting a career in software development, including the more non-traditional routes that are now more accessible than ever. Whether you're interested in front-end, back-end, or full-stack development, we offer more than 10,000 resources that can help you grow your current career or *develop* a new one.
Much has been written about the impact of AI tooling on software development, or indeed on any creative endeavor. Some of those blogs may already be written by AI, who knows? If the benefits for mundane coding tasks today are any foretaste of what lies ahead, I dare not contemplate what the next year will bring, let alone the next decade. I’m not overly worried. The price of job security was always continuous upgrading of your skillset - which is why I’m studying for the Oracle Certified Professional Java SE 17 developer exam. The OCP is reassuringly and infuriatingly old-school. It grills you on arrays, shorts, ObjectOutputStream, the flip bit operator ~, and much you’re probably not going to write or encounter. What is the point? I’ll tell you. On the one hand, the programming profession has changed beyond recognition from when I started in 1999 and long before that. I look forward to veteran Jim Highsmith’s upcoming book Wild West to Agile. It’s supposed to be liberally sprinkled with personal anecdotes from the era of punch cards and overnight compiles. The teasers remind me of the classic Four Yorkshiremen sketch by Monty Python, boasting how tough they had it. “We lived eighteen to a room! – Luxury! We lived in a septic tank.” On the other hand, much less has changed at the level of methods and classes or loops and logic, despite the mushrooming complexity and range of APIs and tooling. Real language innovations are rare and the challenges for learners remain the same. Autocomplete doesn’t make understanding a tail recursive function any easier, but before Stack Overflow, it made sense to memorize such common patterns, because it was too much bother to look them up. It still makes sense. Professor Dijkstra Would Not Approve of Copilot You can safely assume that a famous Turing award winner like Edsger Dijkstra (1930-2002), would have been horrified by GitHub Copilot. He preferred doing his mathematical proofs on a blackboard and believed that software engineering had little to do with academic computer science and that the latter was not even about computers. After all, we don’t call a surgeon’s work "knife-science." Studying for the OCP means honing your Spartan mindset. Taking it unprepared, even as an experienced developer, is a waste of money. You will fail. Because it’s not a test of your design intuitions or clean coding hygiene. It calls on your knowledge of arcane details and APIs, but even more on your short-term memory skills to grasp some quite insane code. Boy, have these skills gone rusty! I wrote earlier that IntelliJ has made us all a bit stupid and it’s true. I’m still making plenty of mistakes. Factual knowledge gaps don’t trip me up anymore, but the time constraint does. The two-minute average you can spend on each question is tight. Yes, there are short questions requiring a single answer, but they don’t offset the ones with convoluted sample code, where you rack your brains for five minutes over the effect of changing one statement and fail to spot the missing semicolon after a switch expression, so the whole mess would never compile. Three Reasons Not To Bother There are reasons not to bother with this self-torture, but there’s a flavor of cognitive dissonance to them. They’re attractive to let yourself off the hook. First, what’s the point of playing human compiler and virtual machine over code samples that solve no real-world task and are only designed to confuse? The point is to train your mind muscles, to sharpen the saw. Nobody disputes that IDEs and their real-time compilation warnings are a great productivity boost. Nobody edits a big Java project in a plaintext editor. That would be inefficient and error-prone. But you want to know what you’re doing and at least understand the warnings. I don’t do dumbbell exercises for the sake of dumbbell exercises. I do them so I can still lift my own groceries when I retire. Secondly, neither this OCP nor any of its predecessors teach you how to write clean code, much less design a complex product. It has nothing to say about testing. It’s a thorough foundation of the language toolkit, but no more. Calling the exam inadequate for that reason is a strawman argument. You pooh-pooh it for not teaching you something it never claimed to teach you in the first place. If you take an advanced French grammar course, it won’t teach you how to write a novel either. A third bone of contention is the OCP’s focus on little-used and legacy features. Who uses serializable object streams when the whole world has been using JSON for years? Well, there’s an awful lot of twenty-year-old, pre-version 5 legacy around, and you shouldn’t be taken aback by it. Also, in the makers’ defense: deprecated features or ways of working do eventually make their way to the exit. The SCJP 6 I took in 2010 had some tough questions on low-level thread handling, all of which are now abstracted behind the concurrency API. We can expect arrays to go the same way, but no time soon. To Be Continued I have much more to say on each of the topics I raised, so I want to make this a series of blogs. I want to explore and explain my personal motivations throughout the process and hope to share useful advice on how to make the journey a success. The aim is not cramming to get a certificate and promptly forget what you learned. You’re not in high school. The aim is to respect the importance of certain mental skills we shouldn’t allow to get rusty. This will make you a better and happier software developer. I have the following topics in mind for the next months. Motivation and the "okay point." Do you enjoy learning for learning’s sake, or is it a means to an end? If so, you will master the bare minimum you need to get the job done and give up once you reach the okay point. This happens to seniors, especially when they are burdened with many non-coding tasks. The only effective way to learn is to make it fun, compelling, and practical. Always learn with the IDE at your side and disable all the clever assistants. I’m compiling a collection of mnemonics and rhymes, which I hope to expand. When it comes to remembering, the sillier and crazier the better – actually, the lewder the better, but I’ll leave that to your own imagination.
I taught myself to code from scratch. I just started writing in Basic on my Sinclair when I was in kindergarten and “got it.” I later picked up the books and courses easily without that initial study period of formal training. When I got to advanced academic materials, I already knew pretty much everything. As a matter of fact, I never learned much from teachers. I learned to read mostly on my own and followed through with most disciplines. This isn’t a “brag” because the reason for that is a learning disability. It’s hard for me to understand teachers and communicate with them. This was a problem in my childhood but became a bigger problem when I started to teach programming in a local computer lab at 16. I was a terrible instructor. Typically we would mimic the skills of a good role model when performing a task. I didn’t have any good teachers. At least not good for my learning disability. I kept teaching on and off for over a decade. It wasn’t because I was good (I wasn’t), but you couldn’t tell that from the feedback I received. Most students gave me high ratings. Why did they? The main reason was that I was knowledgeable and made an effort. The students who “didn’t get it” would end up blaming themselves or making an extreme effort to understand. This dragged on for a while until I faced a class in which I got a bad review. It stung, and I initially rejected the notion that I could be the one at fault. Eventually, it sunk in. I took that to heart and improved. I’m still not a great teacher. One of my shortcomings is my thought process isn’t visual enough, so I don’t communicate as visually as most students need. I’m working on that, and it’s an ongoing process. People like me who aren’t natural teachers need to overcompensate in other departments. One of the biggest tricks up my sleeve is my approach to learning. I teach theory in short bursts while focusing on building something cool. Why Do We Have Hello World? As a teacher, I usually taught advanced classes. Those are the “easy” classes to teach. In these classes, the students already have a decent baseline. If they don’t understand something, they can check, and they don’t get intimidated or ashamed because they missed something the teacher mentioned. A beginner class is an enormous challenge. If I explain something only once or I forget to mention something, I might lose the entire class. People might be missing basic knowledge, and if I explain it too much or too thoroughly, some students might get bored and lose interest. You lose if you do, and you lose if you don’t. There’s very little “winning” in this area. That’s why we have the “hello world.” It isn’t just to show how the language looks or how the tools function. It’s a “win.” Once we compile and run a version of “hello world” we accomplish “something,” and that is the most important part. It gives students the motivation to keep going and double down. Even if I missed something when teaching, they might make the extra effort to go back and learn or ask a question if they feel a sense of accomplishment. A few years ago, gamification was a “hot trend.” Thankfully it’s out of vogue. I never liked it. Stack overflow is great (that statement doesn’t condone the actions of overzealous rogue moderators), but what I liked about stack overflow wasn’t the gamification. It’s the accomplishment that rewarded that. I enjoy the points or badges, not because they are points or badges. I enjoy them because I earned them by giving a great answer. This is the core of the matter and what most learning experiences miss: winning. In It To Win I see a syllabus like this in practically every “beginner” oriented course: Hello world Variables If statements Loops … We accomplish one thing. Then it’s “study”; there’s no “reward” for successful accomplishment or something measured that would trigger excitement. I get why we teach that way… people need the theory. But is that theory sinking in if we learn it sequentially? When we build an ongoing demo and constantly improve it, we learn the theory while continuously accomplishing such goals. Better yet, we can intertwine it with a narrative story of developing an application or a game that helps memorize and form a narrative trail. There’s one downside: the tutorial sucks as a reference since the ideas are mixed within an additional narrative. But the advantage is the “show, don’t tell” approach. I love encapsulation. It’s wonderful. Don’t explain it. Show me why the code looks bad if I don’t use it. Don’t explain every type and waste my time. Show me how to build stuff, and then go back and refine it to explain the nuances involved in practical terms. This is the exact approach I tried to take with my Java Basics free course. The idea is that we can build a Wordle clone without knowing anything and slowly refine it into a real-world application. Yes, we need to understand some basics before we can write something useful. But the bar is very low. Better yet, we need to make flawed and imperfect code so we can show how to improve and fix it. Achievement Unlocked When we say gamification, this is what it really means; to achieve something meaningful and not merely satisfy a metric, a company needs to further push a user through a funnel. This applies to teaching coding skills and to your SaaS. Quite a few SaaS companies still show pointless “awards” and badges to get us engaged. Even kids don’t buy that nonsense in their iPad games. A reward matters only when you made an actual effort and should signify something with meaning. There’s harm in those nonsense awards as they reduce your credibility. When you have an important milestone, that award won’t matter as much. In any product, we need to divide the steps into achievable hops where something meaningful is accomplished before moving to the next step. An important aspect is milestone communication. A person needs to understand the goals, short and long-term. When I teach, I start a lesson by discussing what they will know by the end of the lesson: why should you pay attention? When I start the course I need to discuss the ending. What you will know and ideally show what we will build. I didn’t do this for the videos in the Java Basics course since I’m building them as I go along. That is not an ideal scenario. But I might revisit the first video in the series and redo it once I’m done. This gives us the motivation to work towards a clear goal.
As AI technology continues to evolve, it is creating a vast array of job opportunities that were once unheard of. While traditional AI roles such as data scientists, machine learning engineers, and AI researchers are widely recognized, there are several lesser-known careers that are equally important in driving change in the tech industry. In this article, we will explore 21 hidden careers in the AI revolution. These hidden careers in the AI revolution are becoming increasingly vital as AI technology becomes more pervasive in various industries. From AI psychologists who understand the human impact of AI to AI knowledge engineers who ensure AI systems have the necessary information to perform their tasks, these roles are critical to creating AI systems that are effective and ethical. Moreover, the rise of AI in the industry has created a need for AI professionals who can develop and implement AI tools and solutions tailored to this niche market. This highlights the versatility of AI professionals and the diverse range of applications for this technology. Here are 21 hidden careers in the AI revolution that are driving change in the tech industry. AI Ethicist: An AI Ethicist is a professional who specializes in the ethical considerations and implications of Artificial Intelligence (AI). They work to identify and address potential ethical issues that may arise from the development and deployment of AI technologies. This includes topics such as bias, privacy, safety, and transparency. AI Ethicists collaborate with various stakeholders, including developers, policymakers, and end-users, to ensure that AI systems are developed and used in a responsible and ethical manner. Their work is essential in shaping the future of AI and ensuring that it aligns with the values and principles of society. AI Psychologist: An AI Psychologist is a professional who specializes in the intersection of artificial intelligence and human psychology. They work to develop and implement AI technologies that can enhance mental health and well-being, as well as improve the diagnosis and treatment of psychological disorders. AI Psychologists use machine learning algorithms and natural language processing to analyze large amounts of data and provide personalized interventions and recommendations to individuals. They collaborate with other mental health professionals to ensure that AI technologies are used in an ethical and responsible manner and that they align with the values and principles of the mental health profession. AI Business Strategist: In AI Business, my role is to help organizations leverage artificial intelligence to improve their operations and gain a competitive advantage. This involves identifying areas where AI can be applied, developing AI strategies, and overseeing the implementation of AI solutions. One of the key benefits of AI is its ability to automate repetitive tasks and analyze large amounts of data quickly and accurately. This can lead to increased efficiency, improved decision-making, and cost savings for businesses. However, implementing AI solutions also requires careful consideration of ethical and privacy concerns, as well as ensuring that employees are trained to work alongside AI systems. As an AI business strategist, I work to ensure that these issues are addressed and that AI is used in a responsible and effective way. AI Language Specialist: As an AI language specialist, my focus is on developing natural language processing (NLP) technologies that enable machines to understand and generate human language. This involves working with large datasets and using machine learning algorithms to teach machines to recognize patterns and understand language structures. NLP technologies have many practical applications, from chatbots and virtual assistants that can understand and respond to human queries to sentiment analysis tools that can analyze customer feedback and identify areas for improvement. One of the biggest challenges in NLP is developing systems that can understand the nuances of human language, such as sarcasm, irony, and metaphor. As an AI language specialist, I work to develop systems that can accurately interpret these nuances and generate appropriate responses. Overall, my goal as an AI language specialist is to create technologies that enable machines to communicate with humans in a natural and intuitive way, ultimately making our interactions with technology more seamless and productive. AI Trainer: An AI Trainer is a professional who specializes in training and developing artificial intelligence systems. They work to design and implement machine learning algorithms that can learn and adapt to new data over time. AI Trainers also work to identify and address potential biases or inaccuracies in AI models, ensuring that they are accurate, reliable, and effective. They collaborate with other professionals, such as data scientists and software engineers, to develop and test AI systems across various industries, including healthcare, finance, and transportation. Their work is essential in shaping the future of AI and ensuring that it aligns with the needs and expectations of society. AI Translator: An AI Translator is a professional who specializes in developing and implementing artificial intelligence technologies to facilitate communication between people who speak different languages. They work to design and implement machine learning algorithms that can accurately translate speech and text in real time. AI Translators use natural language processing and other advanced techniques to identify nuances in language and ensure that translations are accurate and culturally appropriate. They collaborate with other professionals, such as linguists and software engineers, to develop and test AI translation systems across various industries, including travel, hospitality, and international business. Their work is essential in breaking down language barriers and facilitating global communication. AI Infrastructure Architect: An AI Infrastructure Architect is a professional who specializes in designing and implementing the technological infrastructure that supports AI systems. They work to develop and optimize the hardware and software components that are required for running large-scale AI applications. AI Infrastructure Architects also work to ensure that AI systems are secure, reliable, and scalable and that they can handle large amounts of data in real time. They collaborate with other professionals, such as data scientists and software engineers, to develop and implement AI systems across various industries, including healthcare, finance, and transportation. Their work is essential in enabling the growth and advancement of AI technology. AI DevOps Engineer: An AI DevOps Engineer is a professional who specializes in the development and deployment of artificial intelligence systems. They work to streamline the process of building, testing, and deploying AI applications, ensuring that they are efficient, reliable, and scalable. AI DevOps Engineers also work to identify and address potential issues with AI systems, such as performance bottlenecks and security vulnerabilities. They collaborate with other professionals, such as data scientists and software engineers, to develop and implement AI systems across various industries, including healthcare, finance, and transportation. Their work is essential in ensuring that AI systems are optimized for performance and reliability. AI Data Analyst: An AI Data Analyst is a professional who specializes in analyzing and interpreting large amounts of data using artificial intelligence technologies. They work to develop and implement machine learning algorithms that can identify patterns and insights in complex data sets. AI Data Analysts also work to ensure the accuracy and validity of data used in AI systems and to optimize data processing and storage methods. They collaborate with other professionals, such as data scientists and software engineers, to develop and implement AI systems across various industries, including healthcare, finance, and transportation. Their work is essential in enabling data-driven decision-making and unlocking the potential of AI technology. AI User Experience (UX) Designer: An AI User Experience (UX) Designer is a professional who specializes in designing user interfaces and experiences for artificial intelligence systems. They work to create intuitive and user-friendly interfaces that enable users to interact with AI systems in a natural and intuitive way. AI UX Designers also work to optimize the performance and usability of AI systems, ensuring that they are accessible to users of all skill levels. They collaborate with other professionals, such as data scientists and software engineers, to develop and implement AI systems across various industries, including healthcare, finance, and transportation. Their work is essential in creating engaging and effective AI applications that can be easily adopted by users. AI Product Manager: An AI Product Manager is a professional who specializes in managing the development and launch of artificial intelligence products. They work to identify market opportunities for AI products and define product requirements based on customer needs and market trends. AI Product Managers also work to ensure the successful launch and adoption of AI products by developing marketing and sales strategies, managing product pricing and distribution, and providing customer support. They collaborate with other professionals, such as data scientists and software engineers, to develop and implement AI systems across various industries, including healthcare, finance, and transportation. Their work is essential in enabling businesses to leverage the potential of AI technology and stay competitive in the market. AI Security Specialist: An AI Security Specialist is a professional who specializes in ensuring the security and privacy of artificial intelligence systems. They work to identify potential security risks in AI systems and implement measures to protect them from cyber-attacks and other threats. AI Security Specialists also work to ensure the confidentiality of sensitive data used in AI systems, such as personal information and financial data. They collaborate with other professionals, such as data scientists and software engineers, to develop and implement AI systems across various industries, including healthcare, finance, and transportation. Their work is essential in ensuring the safety and reliability of AI technology and preventing potential security breaches. AI Data Steward: An AI Data Steward is a professional who specializes in managing the quality, consistency, and security of data used in artificial intelligence systems. They work to ensure that data used in AI systems is accurate, complete, and up-to-date, and they implement measures to protect it from cyber threats and unauthorized access. AI Data Stewards also work to improve data governance practices, such as data lineage and data classification, to support the ethical and responsible use of AI systems. They collaborate with other professionals, such as data scientists and software engineers, to develop and implement AI systems across various industries, including healthcare, finance, and transportation. Their work is essential in enabling businesses to leverage the potential of AI technology while ensuring the quality and integrity of the data used to power AI systems. AI Human Enhancement Specialist: An AI Human Enhancement Specialist is a professional who specializes in using AI technology to enhance human capabilities, such as memory, vision, and decision-making. They work to develop and implement AI-powered tools and devices that can augment human abilities, such as brain-computer interfaces and neuroprosthetics. AI Human Enhancement Specialists also collaborate with healthcare professionals to develop AI-powered treatments for conditions such as paralysis, stroke, and Alzheimer's disease. They are experts in both AI technology and human physiology, and their work is essential in unlocking the full potential of AI technology in improving human health and performance. AI System Architect: An AI System Architect is a professional who designs and implements complex AI systems that integrate multiple technologies and data sources. They work to develop a comprehensive understanding of the business needs and objectives and then create a blueprint for the AI system architecture that will meet those needs. AI System Architects also work to identify and address potential technical challenges, such as data integration and security, and ensure that the AI system is scalable and adaptable to future changes in the business environment. They collaborate with other professionals, such as data scientists and software engineers, to implement and maintain the AI system, and their work is critical in enabling businesses to leverage the full potential of AI technology for competitive advantage. AI Process Engineer: An AI Process Engineer is a professional who specializes in using AI technology to optimize business processes and workflows. They work to identify opportunities for automation and streamlining of processes and then use AI tools and techniques to design and implement more efficient and effective processes. AI Process Engineers also monitor and analyze process data to identify areas for improvement and make data-driven recommendations to enhance performance. They collaborate with business stakeholders, such as operations managers and IT professionals, to ensure that the AI-powered processes are aligned with business objectives and requirements. Their work is essential in driving organizational efficiency and agility through the application of AI technology. AI Entertainment Producer: An AI entertainment producer utilizes AI tools and techniques to create and produce various forms of adult entertainment, such as Images, movies, TV shows, and video games. They can employ AI to generate scripts, characters, or music or to enhance the overall production process by automating tasks like editing and post-production. AI entertainment producers can help to streamline production timelines, reduce costs, and create new and innovative forms of entertainment that leverage the latest AI technology. AI Model Evaluator: An AI Model Evaluator is a professional who specializes in assessing the performance and reliability of AI models. They work to ensure that AI models are accurate, unbiased, and effective in solving specific business problems. AI Model Evaluators use a variety of tools and techniques to test the AI model's performance against relevant data sets and real-world scenarios. They also work to identify and mitigate potential risks associated with the use of AI, such as privacy violations or unintended consequences. AI Model Evaluators collaborate with data scientists and other stakeholders to make data-driven decisions about the design and implementation of AI models, and their work is critical in ensuring the responsible and ethical use of AI technology. AI Knowledge Engineer: An AI Knowledge Engineer is a professional who specializes in creating and managing the knowledge base for AI systems. They work to ensure that AI systems have access to relevant and accurate data and information, which is necessary for them to function effectively. AI Knowledge Engineers use a variety of tools and techniques to build, organize, and maintain the knowledge base, such as natural language processing, machine learning, and semantic web technologies. They collaborate with other AI professionals, such as data scientists and software developers, to design and implement AI systems that can effectively process and apply knowledge to real-world problems. The work of AI Knowledge Engineers is critical in ensuring the success of AI systems in various industries, from healthcare to finance to retail. AI Domain Expert: An AI Domain Expert is a professional who has deep knowledge and expertise in a specific domain or industry, such as healthcare, finance, or transportation. They work with AI teams to provide domain-specific insights and guidance, helping to ensure that AI systems are designed and implemented to meet the unique needs and challenges of their industry. AI Domain Experts work closely with AI developers, data scientists, and other professionals to develop and test AI models, ensuring that they are accurate, reliable, and aligned with industry best practices. They also play a key role in communicating the potential benefits and limitations of AI systems to stakeholders, such as policymakers, regulators, and customers. The work of AI Domain Experts is essential in enabling the successful deployment and adoption of AI technology in various industries. AI Solution Architect: An AI Solution Architect is a professional responsible for designing and implementing complex AI systems that meet the needs of their clients. They work with clients to understand their business requirements and design AI solutions that are efficient, scalable, and cost-effective. AI Solution Architects use their expertise in AI technologies, software engineering, and system integration to design and develop AI systems that can process and analyze large amounts of data, make accurate predictions, and automate tasks. They also ensure that AI systems are secure, reliable, and compliant with regulatory requirements. The work of AI Solution Architects is critical in enabling organizations to leverage the full potential of AI technology and gain a competitive edge in their respective industries. AI Education Specialist: An AI Education Specialist is an expert in developing and implementing AI-based educational programs and curricula. They design and create learning materials that incorporate AI technologies, such as machine learning and natural language processing, to enhance the learning experience. AI Education Specialists work with educators and institutions to help them integrate AI into their teaching methods and courses, and they provide training and support to ensure that educators have the skills and knowledge necessary to use AI effectively. They also conduct research on the impact of AI on education and work to develop new educational models that leverage AI to improve learning outcomes. The role of AI Education Specialists is becoming increasingly important as AI continues to transform the education industry and create new opportunities for students and educators alike. These are just a few examples of the hidden careers in the AI revolution that are driving change in the tech industry. As AI technology continues to advance, it is likely that new roles will emerge to support it. If you're interested in pursuing a career in the AI industry, it's worth exploring these lesser-known roles to find the perfect fit for your skills and interests.
There's a good reason why Java is one of the most widely used programming languages: it's very powerful and flexible. Because of its adaptability and power, it may be used in a wide variety of applications, including the development of web applications and Android applications. However, it may be difficult for newcomers to know where to begin since there is so much information out there. But worry not! You won't need to go elsewhere after reading this article. We have compiled a list of the five best Java books for beginners, each of which is simple to read and understand while yet doing an excellent job of explaining the fundamentals of the language. These books provide a complete overview of the world of Java programming, covering everything from syntax and programming ideas to more advanced subjects such as data structures and object-oriented programming. What Is Java? Java is a widely used object-oriented programming language and flexible software platform that guides billions of devices across the globe, including computers, gaming consoles, medical equipment, and a broad variety of other types of products. Java provides developers with several advantages since it is based on the syntax and guidelines of C and C++. When it comes to the development of software, adopting Java has a number of key benefits, one of the most prominent being its remarkable portability. You can use a notebook computer to develop code and then simply move that code to any device, including mobile devices, if you are using Java. Since its creation in 1991 by James Gosling of Sun Microsystems (which is now owned by Oracle), the language has remained a top option for developers all over the globe. The language was established with the objective of "write once, run anywhere,". Java allows developers to concentrate on developing cutting-edge applications without worrying whether or not their code will work correctly on other systems. Although the terms Java and JavaScript may seem interchangeable, there is a significant difference between the two. JavaScript does not need compilation, but Java does. On top of that, in contrast to JavaScript, Java may be executed on any platform. New and enhanced software development tools are being released at a dizzying rate, driving fast change in the industry. These technologies are posing a threat to businesses that were previously considered vital; nonetheless, in the middle of all this upheaval, one language has stayed constant: Java. Even more amazing is the fact that almost two decades after its creation, Java remains the preferred language for the development of application software. Developers continuously choose it above other popular languages such as Python, Ruby, PHP, Swift, and C++. Therefore, it should come as no surprise that having knowledge of Java is necessary for everyone who wants to compete in the employment market of today. The language has been around for a long time and is very popular, which shows how reliable and useful it is. This makes it a valuable tool for coders and organizations alike. How To Determine Which Java Book Is Right for You You could feel overwhelmed if you're just starting out in programming and looking for the perfect Java book, but don't worry about it! You'll find the ideal resource quickly with the help of our educated recommendations. First and foremost, you need to evaluate your existing level of expertise. If you're just starting off, it's best to read a book that lays a solid foundation for you. Give priority to writers that have years of expertise in real-world programming and a track record of being effective in teaching Java. It is helpful to read reviews written by other customers before making a purchase decision. Readability, structure, and general effectiveness of the material as a Java guide are all things that need to be investigated. Next, take into account the time and financial limits you have. Compare the advantages of purchasing a physical book vs an e-book or online course and decide if you want a full book or a short guide. Last but not least, give some thought to the way in which you take in information best. If you learn best via direct participation, you should look for a book that is packed with a wide variety of hands-on activities and projects. If you would rather take a more theoretical approach, another option is to choose a book that explores the "why" behind Java's features and the way it operates. Top 5 Java Books for Beginners 1. Head First Java Kathy Sierra and Bert Bates' Head First Java is widely regarded as the definitive introduction to the Java programming language. This book is packed with extensive knowledge of Java programming fundamentals such as classes, threads, objects, collections, and language features. The content is delivered in a visually attractive way, and the book incorporates puzzles and games to make it easier to comprehend Java programming. This book stands out from others on the market due to the fact that it contains interviews with experienced Java programmers. These programmers are kind enough to offer their expertise and tips in order to accelerate the learning process for Java beginners. In the first chapter of Head First Java, the author takes a deep dive into the concepts of inheritance and composition. These concepts provide a terrific opportunity to improve computing practices via the process of problem-solving. In addition, the reader will find helpful tools in the form of vivid charts, memory maps, exercises, and bulleted lists throughout the course of the book to assist them in comprehending design patterns. This book, which has a total of 18 chapters and covers topics ranging from basic introductions to distributed and deployment computing, is without a doubt the best resource available for beginners who are just starting out in the world of Java programming. If you can have the greatest, why go for anything else? Grab Head First Java right now to get started on your path to becoming a Java programming expert, and get ready to open the door to a world of unimaginable opportunities. 2. Java for Dummies The book Java for Dummies written by Barry A. Burd is an excellent resource for anyone who is interested in delving into the realm of Java programming. Using the book's lucid instructions, readers can learn to design their own fundamental Java objects and become experts at code reuse. This book gives a full explanation of how Java code is processed on the CPU by providing a wealth of visual aids, including useful photographs and screenshots. However, this is not all that Java for Dummies has to offer; it goes above and beyond to provide a reading experience of the highest caliber. The book is comprised of nineteen chapters, the first of which provides readers with professional advice on how to make the most of their time spent reading the book, while the last chapter provides readers with a list of the best ten websites available to Java programmers. Along the way, readers will get familiar with enhanced features and tools introduced in Java 9, acquire knowledge of approaches and strategies for integrating smaller applications into larger applications, and acquire a thorough understanding of Java objects and code reuse. The reader will be able to comfortably overcome any programming difficulty after reading this book since it also offers helpful guidance on how to easily manage events and exceptions. Overall, Java for Dummies is a book that should be read by everyone who wants to become an expert in Java programming and push their abilities to the next level. 3. Java Programming for Beginners The book Java Programming for Beginners, by Mark Lassoff, is a great way to get started in the world of Java programming. It will walk you through the fundamentals of Java syntax as well as the complex parts of object-oriented programming. By the end of the book, you will have a thorough grasp of Java SE and be able to create GUI-based Java programs that run on Windows, macOS, and Linux computers. This book is packed with information that is both informative and entertaining, as well as challenging exercises and hundreds of code examples that can be executed and used as a learning resource. By reading this book, you will go from knowing the data types in Java through loops and conditionals, and then on to functions, classes, and file handling. The last chapter of the book provides instructions on how to deal with XML and examines the process of developing graphical user interfaces (GUIs). This book provides a practical approach to navigating the Java environment and covers all of the fundamental subjects that are necessary for a Java programmer. 4. Java: A Beginner's Guide Herbert Schildt's book Java: A Beginner's Guide is widely regarded as one of the best introductions to the Java programming language. Aspiring computer programmers should make this book, which is more than 700 pages long and contains a jewel, their primary reference since it covers all the fundamentals in an easy-to-read way. This book starts out with the fundamentals of Java syntax, compiling, and application planning, but it goes fast on to more sophisticated subjects really quickly. You'll get right into practical, hands-on lessons that push you to consider carefully the fundamental ideas behind Java programming. In addition, there is a test at the end of each chapter, so you'll have lots of opportunities to put what you've learned into practice and demonstrate that you understand it. However, what sets this book different from others on the market are the helpful insights and suggestions provided by Java programmers who have years of experience. These professionals share their insights and experiences with you, allowing you to win over everything that stands in your way. They cover anything from everyday quirks to massive challenges. It's possible that Java: A Beginner's Guide is too complex for some people, but it's ideal for those who are prepared to put in the work and Google questions as they go along. So, why should you wait? With the help of this invaluable book, you can get started on your path to becoming a Java expert right now. 5. Sams Teach Yourself Java Sams Teach Yourself Java is distinguished not only by its outstanding writing style but also by its ability to enable readers to comprehend the language in less than 24 hours. Okay, maybe 24 hours is a bit of a stretch, but the fact remains that this book is the best way to learn Java quickly. The activities are broken down into manageable chunks, and the provided explanations are both thorough and easy to follow. This book walks you through the full process of building a program by breaking it down into stages that are simple to comprehend and follow you step-by-step. You'll learn how to examine the process and apply key ideas to future tasks, which will help you understand the language better overall. Having a solid understanding of the theory that lies behind Java is one of the most essential components of producing code in that language. This is where the book really shines since it makes you think about the whole process before you write a single line of code. If you do so, you will put yourself in a position where you can easily tackle even the most difficult programming problems. Sams Teach Yourself Java is a wonderful option for anybody who wants to get a deeper grasp of the language, regardless of whether they are beginners or intermediate coders. Is It Worth Learning Java in 2023? Are you considering learning Java in 2023? There is no need to continue investigating since the answer is an obvious yes. Java is quickly becoming a crucial programming language for software developers as the focus of the globe moves more and more toward mobile applications and convenience. It's been the third most popular language among employers for the past two years, and it doesn't look like it's going to slow down anytime soon. Despite the fact that the pandemic has clearly had an effect on the number of available jobs, the demand for Java developers is still considerable. In point of fact, there is a great deal of compelling reasons why you need to study Java in the year 2023. Reasons Why You Should Seriously Consider Learning Java in 2023 Java Is Friendly for Beginners Java has an open-door policy for beginners. Java is a fantastic language that will assist you in getting your feet wet in the realm of coding and navigating your way through the complex landscape of software development. In addition, since Java programmers earn a wage that is on average higher than those who program in other languages, Java is an excellent choice for new programmers to study as they extend their language skills and advance their careers. Use of Java Is Not Going Away Anytime Soon In the last few years, Java has stayed in a pretty stable situation, with at least 60,000 jobs always open. Python has made significant progress in recent years, but this has not prevented Java from becoming the dominant programming language in use today. Java has earned its reputation as the "workhorse" language of the programming industry for a good reason. When we look into the future, we can say with absolute certainty that Java will continue to be regarded as the most effective programming language for many years to come. Because of its reliability and adaptability, it is an excellent investment for any programmer or company that aims to develop systems that will stand the test of time. Therefore, you may relax knowing that Java will not be disappearing at any time in the near future. Versatile and Flexible Language Companies were confronted with a significant obstacle during the pandemic when workers were required to work from home. Because many businesses did not have the appropriate infrastructure and equipment to support remote work, their workers were forced to utilize their own personal devices, such as laptops, mobile phones, and tablets. However, the trend toward remote work began long before the pandemic and will continue even after it has passed. Good News for Those Who Code in Java Java is a very versatile and adaptable programming language that can operate on any operating system, including Mac OS, Windows, and even Android. Java allows businesses to design their own private software with the peace of mind that it will function faultlessly across all of the devices used by their workers while maintaining the highest levels of safety, security, and reliability. Java is, without a doubt, the best answer for businesses that want to keep up with the times and provide their workers with the resources they want to be able to do their jobs from any location and at any time. Strong Support From the Community Java has been around for a number of decades now and can be thought of as one of the oldest programming languages that are still in use when compared to its competitors. Many developers utilize Java for many challenges. There is a good probability that the solutions to the majority of the issues will already be accessible, since the method to finding them may have been tried and proven before. Additionally, there are a large number of communities and groups on the internet and social media, respectively. The other developers and newcomers to the field will find that their peers in the community are eager to provide a helping hand and find solutions to the problems they are experiencing. Multiple Open-Source Libraries Are Available for Java The materials included in open-source libraries may be copied, researched, modified, altered, and shared, among others. There are a number of open-source libraries in Java, including JHipster, Maven, Google Guava, Apache Commons, and others, which may be used to make Java development simpler, more affordable, and more efficient. Java Has Powerful Development Tools Java is more than just a programming language; its Integrated Development Environments (IDEs) make it a software development juggernaut. Developers have all the resources they need to produce top-notch apps thanks to industry-leading tools like Eclipse, NetBeans, and IntelliJ IDEA. These integrated development environments (IDEs) provide a wide variety of features, ranging from code completion and automatic refactoring to debugging and syntax highlighting. Not only is it simpler to write code while using Java, but it's also quicker. When it comes to the development of back-end apps, Java is the go-to solution for 90 percent of the organizations that make up the Fortune 500. Java serves as the basis for the Android operating system. Java is also essential for cloud computing systems like Amazon Web Services and Microsoft's Windows Azure and plays a key role in data processing for Apache Hadoop. Java Can Run on a Wide Variety of Platforms Java is a platform-independent programming language because the Java source code has been broken down to byte code by the Java compiler. This byte code may then be run on any platform by utilizing the Java Virtual Machine. Because it can operate on a variety of platforms, Java is sometimes referred to as a WORA language, which stands for "write once, run anywhere." Additionally, due to the platform-independent nature of Java, the majority of Java programs are developed in a Windows environment, even if they are ultimately deployed and operate on UNIX platforms. Conclusion To summarize, Java is a reliable and extensively used programming language that is important for the process of developing a broad variety of software applications. Possessing the appropriate resources can make a substantial difference in a beginner's ability to effectively acquire the language. This article features an overview of the five Java books that are considered to be the best for beginners and come highly recommended by Java professionals and industry experts. Because they include information on fundamental aspects of programming as well as object-oriented programming, data structures, and algorithms, these books are a good place for beginners to begin their studies. Beginners may get a strong foundation in Java programming and enhance their abilities in developing complicated software programs by following the directions and examples that are offered in these books and using them as a guide.
As an experienced full-stack developer with 30 years of experience, I’ve witnessed a lot of changes in tech, from the advent of the internet to the excitement of Java to the rise of cloud computing. Recently, I decided to embark on a new adventure: diving into Ethereum and web3. I was initially skeptical about web3/blockchain, but as I've delved deeper past the FUD and into the current state of Web3, I've come to appreciate its potential. And as the markets swing wildly on their views of the web3 ecosystem, there are a surprising number of projects and companies that just keep on building serious, and groundbreaking, components of the web3 stack. In this article, I want to explore the web3 developer stack, the pieces of that stack I like the best, and most importantly how you can use the web3 stack as a starting point to become a web3/blockchain developer. The Web3 Stack First, let’s look at the layout of the stack and the general categories. From the Infura Guide to the Web3 Stack Disclaimer: I’m cheating a little and using the logical breakdown used in the Infura Guide to the Web3 Stack to help organize my thoughts. It’s new (meaning it’s up to date, which is always important; web3 moves fast), well organized, and will help us get started a lot faster than trying to define the layout of the stack ourselves! I’ll use this layout to divide the stack into its main components: layer one blockchains, smart contracts, languages, front-end libraries, node providers, APIs, dev environments, testing, oracle, identity, and more. So, using that framework, let’s dive in! What Skills Are Needed To Be a Web3 Developer? First, what skills exactly do you need to be a web3 developer, and how are they different from what you already know? Well, to start, the good news is you need all those usual skills you’ve already learned as a full-stack dev (testing, DevOps, code reviews, etc) … plus a few new ones. Here, we’ll cover the ones you need to get started: Understanding and using layer one blockchains Smart contracts Smart contract languages Front-end libraries Node providers Dev environments Testing Identity Some of that probably looks familiar, while some of it is new. And you need to understand those new concepts pretty well to get started. For me, as a long-time Java dev, there were a few key differences between web2 and web3 that took a little time to sink in. Some of the mental shifts for blockchain technology included: Language Differences: Solidity, the main language for creating smart contracts on the Ethereum blockchain, has its own unique syntax and conventions that differ significantly from Java, such as the way Solidity handles data types, function visibility, and storage. Decentralization: Moving from a centralized, server-based mindset to a decentralized, peer-to-peer approach required a substantial mental shift. I had to learn how decentralized systems function, including concepts like consensus algorithms, cryptographic hashing, and distributed storage. Understanding these concepts was challenging but crucial. Gas Costs: In Ethereum, transactions and smart contract executions consume "gas," a measure of computational resources. I had to learn how to optimize my smart contracts for gas efficiency, which involved understanding the Ethereum Virtual Machine (EVM) and learning best practices for reducing gas consumption. Security: Writing secure smart contracts is critical in web3, as vulnerabilities can have severe consequences, such as loss of funds or compromised functionality. While security is always essential, the stakes are elevated in web3. I had to learn common smart contract vulnerabilities and adopt more rigorous security practices. Asynchronous Interactions: In the web3 ecosystem, interactions with the blockchain are inherently asynchronous, as they depend on network confirmations and block mining times. I had to keep this in mind when handling application state and user interactions. If you are confused by any of these, take the time to learn about them now. Then come back and continue as we look in more detail at each of the main categories of the web3 stack. Layer One Blockchains First, at the base layer is the layer one blockchain. These are, to me, the “primitives” of web3—they are the execution layer of the web3 stack. What you build and how you build it all depends on what layer one blockchain you choose. Some of the most popular include Bitcoin, Ethereum, Solana, Flow, and Polygon. Each one offers its own quirks, advantages, ecosystems, user communities, etc. There can be quite the (not always friendly) competition between these chains as they fight to see who can gain the greatest user and developer share. Most of the chains have either a for-profit company or a foundation behind them pushing the tech (and narrative) forward. As a developer, you don’t necessarily have to choose a single chain—some devs work on more than one at a time. Many of the concepts (decentralization, smart contracts) are the same among the chains but are just implemented differently. So, similar to learning one programming language to start, then using that experience to branch out into multiple web2 ecosystems, you can do the same here. I started with Ethereum, the most popular (and IMO easy to learn) chain. Ethereum has a huge community, long history, and tons of tutorials, examples, user groups, and resources out there to help you get started. Smart Contracts A smart contract is a self-executing program that runs on one of those above blockchains, like Ethereum. They are the code of web3 and where all the action happens. A smart contract is essentially a digital agreement between two or more parties, where the terms and conditions of the agreement are directly written into lines of code. The code and the agreements contained within it are transparent, tamper-proof, and automatically enforced by the network, without the need for intermediaries. In simpler terms, you can think of a smart contract as a digital vending machine. When you put money into a vending machine and select an item, the machine automatically checks if you've provided enough money, and if so, it releases the item you chose. Similarly, a smart contract checks if certain conditions are met (like receiving a specific amount of cryptocurrency), and if so, it automatically performs the agreed-upon actions (such as transferring a digital asset to the sender). Because the contract lives as immutable code, the outcome is publicly known. Most layer-one blockchains have smart contracts, each with its own variety of features and restrictions. Learning to code a smart contract is a necessity for web3 development. It’s where all the work is done. Here’s an example of an Ethereum smart contract. Languages To write those smart contracts, you’ll need to learn the smart contract programming language of that particular chain. Smart contract development is the meat of being a web3 developer, and where you’ll spend the bulk of your time learning. Each language, of course, is a little different and varies in the tooling, support, ease of use, and functionality. Solidity, the smart contract language on Ethereum, is the most popular. Plain Text pragma solidity ^0.8.13; contract HelloWorld { function sayHello() public pure returns (string memory) { return "Hello World!"; } } A Solidity “HelloWorld!” smart contract There are a lot of smart contract languages. Some are based on Rust, some on JavaScript, some on Python, and some are entirely new paradigms. Here are a few examples: Smart Contract Programming Languages (Source) Front-End Libraries The smart contracts running on the blockchains can be thought of as the back-end code of web3. Similar to web2 web development, in web3 applications we have front-end code as well. Instead of apps, we call them dApps (decentralized applications). Fortunately, most dApps are written in the same stack as web2! HTML, CSS, React, etc. To connect to the back end, though, we have to go through a node (more on that in the next section). And we typically have to connect using a JavaScript library, such as ethers.js and web3.js, which provide much of the logic we need for signing transactions, getting account info, managing wallets, etc. Typical web3 front end (source) Node Providers To access a blockchain, you need to go through a node. A node, in general, is a computer that is connected to the blockchain and participates in its network. It might be a miner or provide the computing power of the network. It might store and execute code or validate new blocks, etc. Whatever it does, you need it! They provide access to the blockchain data. So to read or write from the chain, you’ll need to connect to a node. Most people don’t run their own nodes. Rather, they use a provider that offers them an API, dedicated endpoints, scalability, reliability, etc. Think of node providers as IaaS, or a cloud provider for blockchain. For example, Infura offers access/nodes to Ethereum, Avalanche, Starknet, and others as both an SDK and an API. Other options include Alchemy and QuickNode. JavaScript const Web3 = require('web3'); const infuraURL = 'YOUR_INFURA_URL_HERE'; const web3 = new Web3(new Web3.providers.HttpProvider(infuraURL)); // Get current balance of address const balance = await web3.eth.getBalance(address); Using the Infura API to get a web3 address balance Dev Environments Just as in web2, web3 dev environments take care of the end-to-end workflow: editing code, testing, debugging, building, and packaging all in one tool or suite of developer tools. In web3, you get a web3 version of the extras, such as scripts for compiling and deploying smart contracts, dApp templates, and more. Dev environments also typically come with a local, dev instance of the blockchain. For example, I used the Truffle Suite to write, compile, and deploy my first smart contracts, which includes Ganache to create a local blockchain and Drizzle to create a front-end dApp interface. Inspecting RPC requests with the Truffle Dashboard Other options include Remix (an IDE), ChainIDE, Anchor (for Solana), Hardhat, and lots of others. Web3 dev environments have come a long way in a short time, and there’s probably something out there for whatever you need. Testing Testing is crucial in web3 because smart contracts are immutable, meaning they cannot be easily updated or modified once deployed. So you have to make sure they do what you want, and in a secure and reliable way, before you deploy. The good news is: testing is testing! So you’re probably already familiar with unit testing, automated testing, fuzz testing, and other testing options. You do a lot of the same things, just focused on web3. “Move fast and break things” is discouraged in web3, since millions (or more) of dollars can be on the line. A lot of the dev environments mentioned above provide a testing framework. But you’ll probably want some specialized tools as well to do things like property-based/fuzz testing. You might also look into third-party audits of your code. If large amounts of money are involved in your smart contract, you’ll want a professional, second pair of eyes to check everything. Identity IAM (Identity and Access Management) in web3 refers to decentralized methods for managing your identity, authentication, and authorization. It lets you own, control, and share your identities and data without relying on any centralized authorities. Identity in web3 means self-sovereignty, user control, and privacy. So when you are interacting with a dApp or building a dApp, you most likely need to integrate with one of the web3 wallets, such as MetaMask. MetaMask is a browser extension that is an Ethereum wallet. It allows users to interact with dapps, prove who they are, and manage their assets. Other popular wallets include Temple (for Tezos) and Argent (for Starknet). But there are lots of choices out there. MetaMask Let’s Start Building! There are a lot of other areas in the stack, and this frankly has just covered the fundamentals of web3, but these are most of the key areas and a great road map to get you started! Good luck as you venture into web3. Don’t get taken in by the FUD: focus on the groundbreaking projects and parts of the tech stack. Make sure to take your time to learn the new concepts, and you’ll be well on your way. Whether it's NFTs, defi, DAOs, metaverse, music, film, or something else, web3 was meant to empower users, redefine industries through decentralization, and create a more open and equitable world. It still has a way to go and is having some bumps as it grows, but it’ll get there. Enjoy!
It's time to make noise. Developers need to take back their happiness and their productivity. But where should they start? On this week's episode of Dev Interrupted, we're joined by Justin Reock, Field CTO and Chief Evangelist at Gradle. With a mission to mitigate the toil, friction, and frustration felt by so many developers, Justin has become a tireless advocate of Developer Productivity Engineering. Listen as Justin explains DPE by exploring the connections between productivity, developer experience, and joy. Episode Highlights (3:50) What is Developer Productivity Engineering? (8:14) Creative vs. destructive flow (16:21) Metrics and visibility (22:37) Open-source supply chain security (24:01) Blockchain, AR, and VR Episode Excerpts How Facebook, Netflix, and LinkedIn handle developer productivity engineering Justin: That's one of the things that actually differentiate DPE from DevOps a little bit is that there's the human factor, right? Like the platonic ideal of a DevOps team is supposed to be not a team at all, right? 100% automation, no humans in the loop, right? But with developer productivity, you have to have humans cascading this practice, caring about, you know, the metrics that they see on the dashboard and then correlating that to developer experience. Without that empathy, then you don't get the focus; you don't get anything actionable that really changes the culture of the business. So that is a differentiator is that you need those people to be thinking about these problems. But then you know that that ends up, and ideally, these people have written code, right? I mean, right? It's very special you come across these developers who, like, truly care more about the performance of their team. And what the whole team is, is going through in terms of the developer experience versus their own experience writing code, and they're everywhere. They're in every organization. I mean, that's the thing is, like, a lot of folks have already been doing DPE. They just haven't been calling it that, you know, or maybe it's a part-time, couple hours a week that some development leads spends on productivity. But what we have to see now is a shift in focus to making this a center of excellence. The companies that are really doing this, right, you know, the Facebooks, the LinkedIns, the Netflix, you know, they have dedicated teams of hundreds, productivity engineers, it's 1,000s of developers. And that's the only way, I think, to kind of keep enough of a focus in the industry to allow this to be a transformative change as opposed to just minor tweaks. Do CEOs Care About Developer Experience? Justin: I'm a big fan of the whole Malcolm Gladwell 10,000 hours for expertise type of thing, but is it 10,000 hours waiting on a bill to complete, or is it 10,000 hours writing code? So obviously, if you're able to spend more time on that part of your learning and your experience, that only makes sense that you'd be able to onboard faster. You won't run screaming from the industry because you're like, oh, this is not what I signed up for. This sucks. So, I think that I mean, there's all these impacts, and the time is right for it now. I mean, Gartner released a CEO report a couple of months ago, the 2022 CEO report, and it was like, I don't remember the exact statistic, but it's like a 40% increase in terms of CEOs that are now... That they actually have Developer Experience on their radar, which is very good, but also very acute, right? I mean, just a couple of years ago, it was way low on the list of CEO concerns, and now it's one of the top concerns. Engineering Insights Before Anyone Else... The Weekly Interruption is a newsletter designed for engineering leaders by engineering leaders. We get it. You're busy. So are we. That's why our newsletter is light, informative, and oftentimes irreverent. No BS or fluff. Each week we deliver actionable advice to help make you - whether you're a CTO, VP of Engineering, team lead, or IC — a better leader. Get interrupted.
As the world of cloud computing continues to evolve, the need for effective FinOps strategies is becoming increasingly important. In this article, we will explore the critical role of developers in effective FinOps strategies and the benefits of FinOps for technical expertise and career growth. Defining FinOps: Why Developers Are Critical to the Equation Let's begin by briefly revisiting the definition of FinOps. The FinOps movement has been steadily gathering momentum since its inception in 2018. The FinOps Foundation defines FinOps as ‘the practice of bringing together Finance, Business, and Technology to master the unit economics of cloud for competitive advantage.’ FinOps is essentially a set of principles and practices that enable organizations to align cloud spending with business objectives to get maximum business value from the cloud. The 2023 edition of the State of FinOps survey by FinOps Foundation highlights that the biggest challenge reported by FinOps practitioners is enabling engineers to take action. For companies to take full advantage of cloud technology and benefit from its efficiency and cost savings, they need to ensure that their developers are involved in FinOps strategies. Developers play a crucial role in these strategies — they are responsible for understanding how spending on infrastructure affects product delivery quality and have an important part to play in establishing cost optimization processes. Involving developers in FinOps initiatives helps promote visibility into costs and a better understanding of how their decisions impact financial performance. Moreover, developers are best placed to understand the complexities involved in infrastructure optimization — from identifying resource bottlenecks and developing techniques for reducing cloud costs to developing code for better scalability. They are well-versed in cloud computing concepts such as microservices, containers, and serverless architectures which make them ideal partners in creating effective infrastructure optimization strategies with non-technical teams while complying with security standards and reducing costs. Engaging in FinOps not only does it get them closer to the business processes that their code supports but also helps them evolve their technologies from cost centers into profit centers. FinOps: The Future of Cloud Optimization and Developer Empowerment While there is growing agreement on the benefits of FinOps for companies, the State of FinOps report suggests that there are still barriers preventing engineers from fully contributing to FinOps strategies. This indicates that developers may not be fully aware of the many advantages that FinOps offers. Let’s take a moment to explore a few of its key benefits: Enhanced Automation: Through deeper collaboration with other departments and stakeholders, developers can build automation processes that align with the business strategy and improve time efficiencies. Greater visibility into their projects: By enhancing their understanding of the budget and cost drivers behind their projects, developers can gain deeper insight into their work, helping them to make better decisions and ultimately deliver more efficient solutions. Improved Data Tracking: The use of data tracking tools and tags can provide developers with greater insights into how resources are being used within their organization — allowing them to identify any potential areas for improvement or cost reduction. On top of the technical benefits of FinOps, developers can also benefit from greater career prospects. As the FinOps movement continues to grow, employers are looking for professionals who can offer a combination of technical and financial acumen, making developers with FinOps experience highly desirable. FinOps is ushering in a new era for developers, offering a unique opportunity for them to take control and make an impact. By using their technical and analytical skills, developers can play a pivotal role in helping their organizations succeed while also improving their own career prospects. Want to stay up-to-date on the latest FinOps strategies and connect with like-minded professionals? Join the FinOps Foundation today and gain access to exclusive content, training, and events.
When you’re navigating new territory, it is essential to have a guide. And if you want to grow your skills as rapidly as possible, it helps to learn from someone who has done it before. Why Use an Engineering Advisor? An advisor is someone who helps you produce better results with your work. They: Suggest new ways to solve problems. Help you navigate problems you haven’t dealt with before. Point out mistakes you might be making. Accelerate your career growth. Provide new mental models for thinking about your work, giving you more tools for your leadership toolkit. How Do Executive Advisors Work? Every advisor is different, so you should find out what approach a prospective advisor uses. I think my approach is fairly common, so let me share how it works with my practice: With most of my clients, we conduct working sessions. They are one-hour sessions and are weekly, biweekly, or monthly. In these sessions, my client brings their current problems, and we problem-solve them together. Each of us brings an essential part to the working session. I bring a lot of experience (both in terms of years doing this, and across many companies). I’ve seen it all before. My clients have their own experience and expertise. But most importantly, they have much better context on the problem and environment. We talk through a few ways to solve each problem, and we review the tradeoffs of those approaches. I usually suggest solutions my clients wouldn’t consider, and I share tradeoffs they would miss. They, in turn, point out ways the environment may bias the solution in a particular direction. Some of my clients use me to test their plans. They’ll share what they’re thinking, and have me walk through the tradeoffs, or suggest some alternatives they might not have thought of. We walk out of these sessions with solid plans and new ways of addressing problems. It’s like pair programming, but for leadership! Other advisors may have different styles or ways of operating, so be sure to inquire into their approach. When To Use an Advisor I see several profiles of leaders who reach out for advisory help: Leaders who are in new territory: Typically leaders approach me when they’re getting in a little over their heads, or their current approaches seem to break down. (This often happens at ~20 engineers or ~50 engineers in an organization). Symptoms are too many direct reports, too much relying on them, engineering velocity slowing down, or quality problems emerging. Leaders who are promising but need support: Often very talented leaders who have a little fewer years of experience seek out advisors to make sure they’re well supported. Sometimes their boss may even insist on it. This can help bright and capable leaders step into situations that may otherwise feel risky for the company. (Hint: You can use that to your advantage to get companies to take a risk on you by pairing the responsibility with an advisor.) Leaders who are growth-minded and want to be as effective as possible: These leaders are aware that their growth is magnified if they get good feedback on their work, so they seek to accelerate their growth by choosing an advisor who will give them new perspectives. Leaders who are part of a work culture that encourages growing their leadership: Some companies invest in their leaders because they view it as a high-leverage place to invest. Making a leader 10% better has a greater than 10% impact on their area of the company. In these companies, most of the senior leaders have executive advisors or coaches. How To Choose an Advisor I recommend you interview a couple of advisors to determine which person is best for you. Ask people in your network for recommendations. Select a few, and contact them. With my potential clients, I like to do a practice session. This gives the potential client a feeling of what it’s like to work together. Ideally, they will do the same practice session with a couple of advisors, and see what kind of insight they get from each person. They should also evaluate how comfortable they feel being vulnerable or showing their weak areas with the advisor. Do keep in mind that sessions will get better over time as you develop a working relationship together, but the sample session will give you an idea of what it’s like to work with the person. I recommend asking for a sample session. What To Look For What should you look for in an advisor? Someone who has been through the stages you’re going through Someone you communicate well with Someone you can be vulnerable with Someone who listens as much as they speak Someone who doesn’t have the same solution to every situation The last one is something I think it’s important to emphasize. How flexible is the advisor’s thinking? Do they respond to every situation with the same solution? That’s often a red flag. Rates for Advisors Rates vary greatly depending on the advisor. I’ve seen rates that vary by an order of magnitude! If you’re on a budget, you can probably find someone fairly inexpensive. But you have to be careful with your choices. You’re hiring someone for their expertise, not just for them to coach you (more on the difference between coaches and advisors later). Ideally, your company should be paying for the advisor. What I tell companies is to use this heuristic to determine whether the rates are reasonable for an advisor: If you took the yearly cost of the executive advisor, and compared it to how much it would cost to hire an additional engineer, how does it compare? Compare both the anticipated impact of the advisor and the cost. When you consider the impact on the company, it’s generally a very smart investment, even if it looks quite expensive. A good advisor can help you avoid expensive mistakes, and improve the trajectory of an entire department. That’s often worth it even if it’s quite expensive. Advisors can be expensive, and even feel out of reach for individuals. Why? Consider the economics of the situation. A highly experienced engineering leader can command a salary of $300-500k/year, plus 0.5-2% of the equity of a company, and bonuses. Total comp can be $350-$1MM a year. Advisors also have a lot of overhead to just be an advisor. To give you an idea from my own consulting: I have 4 or 5 hours of meetings with prospective clients for every client that signs up (and I think that’s a good ratio). I need to have about four hours of meetings a month just to be sustainable as a business, and it fluctuates greatly. I have to manage taxes, health insurance, and deal with unpaid vacation. When you add all these things up, the rates can end up being higher than you might expect. I personally provide a 50% discount for individuals, because otherwise many of them can’t afford it. And many of them find even the discounted rate out of their reach. If possible, go through your company. An easy way to ask about this is to ask if they offer executive coaches or executive advisors. If they don’t, ask if they’d be open to it. Many leaders don’t want to seem “weak” by asking for this. But many companies do offer this kind of investment in their employees, or are willing to. You may be surprised that the person you’re asking already uses an advisor! Most advisors charge either hourly, or by the number of meetings. My own rates are monthly charges, based on the frequency we plan to meet. That seems to be pretty common. What About Using an Executive Coach? Here’s what ChatGPT says is the difference between using a coach and an advisor. I have to admit it’s a good summary of the difference: “Both advisors and coaches can provide guidance and support, but there are some key differences between the two roles. An advisor typically has specialized knowledge or expertise in a particular area and offers advice based on that expertise. They may provide recommendations, opinions, or solutions based on their experience and knowledge to help a person make informed decisions. On the other hand, a coach is more focused on helping a person achieve their goals and develop their skills or abilities. Coaches typically ask questions and use various techniques to help their clients identify their own strengths and weaknesses and work towards self-improvement. Coaches may also help their clients create action plans and hold them accountable for their progress. Another key difference is that advisors tend to have a more directive approach, while coaches are more non-directive. Advisors often offer specific recommendations and may even make decisions for their clients, while coaches help their clients find their own solutions and strategies. Overall, both advisors and coaches can be valuable resources for people seeking guidance and support, but they have different areas of focus and approaches.” You’ll find that there is a continuum between the two. Most advisors also do some coaching. Some coaches also do some advising. My advice for engineering leaders is to find someone who leans towards advising. The reason for that is that having deep experience in engineering leadership is something that is worth a lot. There is a wide body of knowledge and expertise that you will be able to tap into from advisors that understand that domain well. But this does depend on the goals you have in mind. If you’re looking to be a more effective communicator, a coaching approach may be more appropriate. And if you’re wanting to have more perspective as a leader, a coach may be more appropriate. Both are reasonable options. I would look at this as a spectrum that you can use to evaluate people you’re considering.
Building a new version of your product is an exciting endeavor, but it can also be an overwhelming one. In the earliest days of a startup, there tends to be little formal structure in place, which is usually for the best! Everyone’s wearing numerous hats and just trying to get the product and company off the ground. It’s a time of innovation and creativity. When we built the first version of our product, we didn’t have a dedicated product team. That changed with version two, bringing new opportunities and challenges along with it. Through trial and error, we moved through several iterations of workflow, communication, and reporting. The key was balancing input from both the engineering and product teams while also balancing planning and innovation. We learned a lot from this endeavor and, in addition to successfully updating our core offering, gained some important insights about how to set yourself up for success even (and especially) as your company grows. With that in mind, here are my top three tips for success to stay on track as your engineering and product teams grow. 1. Center the User To successfully build a new product, your engineering teams and product team must be in alignment. Of course, alignment can happen in many ways. If you simply have the engineering team taking orders from the product team, it will likely result in a worse outcome. Instead, the best way to align engineering and product is to make sure both are focused on users. Equip both teams with sufficient knowledge about the pain points and needs of users, so they can be checking in with the product from a user perspective on an ongoing basis. Consider a situation where an engineer suspects that following directives from the product team will result in clunky UX. They don’t necessarily have to solve the issue, but they should raise the concern. I’ve seen engineers do this quite effectively — asking if it’s possible to simplify the design, for instance. This speeds up development and, in the end, results in a product that is more valuable to users. By centering users, you’re aligning the goals of both teams and empowering engineers to push back and innovate when necessary, as opposed to simply nodding along and building exactly what the product team suggests. 2. Prioritize Reporting Alignment also comes as the result of ongoing communication. To that end, I suggest implementing a weekly reporting system. When both the product and engineering teams are being vocal about what they are working on each week, it helps everyone stay on the same page and makes the two teams feel more like one. Some updates might include: What are people working on at the moment, and what have they achieved? What else is left? What roadblocks or hurdles have slowed down work or might do so in the week ahead? Once again, both teams should be contributing updates. In the past, there were times in which there was tremendous communication within each team but a lack of communication outside of them. Sometimes, we failed to update the roadmap when a feature was complete. Other times, a product might be released as a minimal viable product, so it was considered complete on the roadmap, but the reality was a little different. Being proactive about, first, making sure the roadmap reflects the reality of the work taking place and, second, making sure communication happens on an ongoing basis is extremely helpful. To make reporting sustainable, choose a platform that’s easy to use. At Prefect, we conduct weekly reporting in a Slack channel. We also sync up quarterly to review larger goals and check our progress against them. 3. Leave Room for Innovation Speaking of the roadmap, one of the most difficult things to balance when the building is how much engineers should stick to the roadmap versus going off-script to build something they’re more excited about. The only way to know if you’re following the roadmap too closely is to have a strong connection with your engineers and to speak with them on an ongoing basis. Ask them: Do they feel like they've got the space to go and be creative, or do they feel like all of their time is taken up with roadmap items and prescriptive work? Of course, there are times when you need to follow the roadmap almost exactly, whether because of a deadline or user demands. When the roadmap has been disclosed to the board and current customers, swaying from it can be more challenging because several audiences are counting on the agreed-upon direction. At the same time, being too prescriptive about particular features can be really harmful to both the product and the morale of the engineering team. A 50/50 balance is a good goal. Is about half of your engineering team’s work creative or self-directed, or are they simply managing requests and checking boxes? The Bottom Line New workflows can feel daunting, but they’re also opportunities. If there’s one key takeaway, it’s that balance is paramount. As your product and engineering teams grow, it’s imperative to strike the right balance between adhering to the roadmap and allowing for creativity. But the first two tips— ongoing communication and alignment (by having everyone focus on the user) lay the foundation for finding this balance. That’s not to say challenges won’t arise. But with the help of these tips, your product and engineering teams will be better suited to handle them — and primed for making the best possible product in the process.
Field CTO is a job role that comes up more and more in software companies. There is no standard definition for this job role. As I regularly get the question about what a Field CTO does, this blog post summarizes a few general characteristics and then explores my daily life as a Field CTO. The post concludes with the answer to how you can also become a Field CTO at a software company in your career. General Characteristics of a Field CTO Search through business and employment-focused social media platforms like LinkedIn or jobs networks and portals like Indeed or Glassdoor. You will see many of the following characteristics, experiences, and tasks of most people that own a position as Field CTO: Meet many stakeholders across entire customer projects and sales lifecycles: Work with prospects/customers and partners (like cloud service providers, other software vendors, and system integrators) to ensure customer success. This includes joint planning of customer projects, a strategic roadmap for the enterprise architecture, or technical partnerships. Talk business and tech in the same meeting: Explain the product portfolio and business value of your solution on all levels, including business executives, tech executives, and whole project teams with project leads, architects, engineers, and business people. Evangelize the product portfolio and success stories: Perform internal and external events and create public content about case studies, technical architectures, and the business value of your solution mapped to industry and business problems. Events include webinars, business roundtables, tech meetups, and international conference talks. Content creation covers podcast interviews, blog posts, slide decks, and articles in magazines/electric journals. Collaborate with product and field marketing: Close to evangelism, but often independent, work with the internal marketing to support product announcements, regional road shows, global webinars, customer case studies, and other marketing initiatives to generate product/vendor awareness and sales pipeline. Be a public spokesperson: Present the employer in public relations. This differs from evangelism, as it is much more strict, dangerous, and sensitive. The key partners are the media/press holding interviews and research analysts (like Gartner and Forrester) getting educated about the product portfolio and case studies. Collaborate with product and engineering: Provide feedback from the meetings and public events to product management and engineering teams, like new feature requirements. And the other way, present the roadmap and strategic decisions to customers. This was the general summary. In the following sections, I will go into more detail about my individual daily life as a Field CTO. My Regular Personal Tasks as Field CTO In my world, everything is around open source, cloud, data streaming, analytics, and big data. My current employer Confluent provides a complete data streaming solution that can be deployed everywhere with a cloud-native product portfolio. Let's look at my recurring daily, weekly, or monthly tasks. The mix of all the following functions makes the difference. I might not be a complete expert in any of these categories. But I can leverage and combine my knowledge and experiences across different aspects. Each section shows a few references, so you get a feeling about my work in the different areas. Task 1: Support the Success of Our Customers Customer success is a term software companies focus much more on compared to the last decades - even to the degree that whole departments are named after it. While it makes total sense to make and keep the customer happy, the cloud enforced this paradigm much more strictly as the financial success for the software vendors is based on continuous consumption of the cloud products instead of just selling perpetual software licenses. Customer success obviously increases the customers' satisfaction while using a product or service. This results in decreased customer churn and increased up-sell opportunities. Customer success is a company effort from the CEO down to the account team. You work with strategic customers on every level, including top management, decision-makers, project leads, architects, developers, etc. Here are a few things I do to support a great relationship and the success of our strategic customers. Share Technical Architectures Mapped To Real-World Experiences I map my experience from what I see from customers across industries with relevant technologies. In my case, I have worked in the data integration and analytics space since I wrote my degree dissertation at the university many years ago about middleware, service-oriented architecture (SOA), and enterprise service bus architectures. Today, working for the data streaming vendor Confluent, I focus on open-source technologies and cloud services around Apache Kafka. A Field CTO is not necessarily a deep technical expert like the consultants or support engineers. Still, the Field CTO understands the technology and how it complements or competes with other technologies. I can explain design principles for distributed computing architectures, hybrid cloud deployments, cloud-native architectures, microservices, and data mesh. As Field CTO, I understand how data streaming helps to solve business problems using these architectures. Last but not least, and maybe most importantly, I educate how data streaming fits into the enterprise architecture with other technologies and products for middleware, data analytics, machine learning, the internet of things, blockchain, and so on. Here is a concrete example where I map retail use cases for omnichannel communication focusing on use cases, not technology. Despite the technical content, this slide is also easily understood by the executives and business teams: Some Field CTOs are very technical and collaborate a lot with engineering to add technical features or improve the performance of the product together with key customers. To be very clear: That's not me. :-) Talk to Executives and Very Technical People in the Same Room A Field CTO can and has to talk at the right abstraction level. Contrary to many other colleagues involved in customer success, I do not focus on just selling our product or supporting the customer in production, or implementing a new application. Instead, I discuss the value of our product portfolio for the next customer project or the strategic enterprise architecture. Hence, a few aspects are different in my meetings compared to my colleagues from presales, consulting, or support: I usually support the early stages of a customer project or sales cycle, where a decision needs to be made about the best architecture, technologies, and strategic planning. The starting project teams get support from me to spread the benefits of their strategic decision across their organization - the bigger the account, the more often this might need to happen. I need to speak the languages of executives and technical people in the same meeting room and confidently answer questions on all levels. I interact with senior executives and technical experts within the Fortune and Global 2000, but also smaller enterprises and startups. The meetings are very different depending on the company size. An executive in a startup is often still the technical decision-maker. The mix of meetings with different kinds of companies is one of the most helpful aspects because one can learn from the other. Think about a traditional bank and a FinTech startup. The Field CTO helps connect the dots and educates companies on how others solve business problems and innovate. Share Industry Expertise To Talk at the Right Level No matter what company size, the key challenge is usually the same (and that's what most people struggle with): Talk at the right level. For instance, don't discuss technical details if you talk to a CIO. Don't even talk about the product or technology. A CIO needs to solve business problems and buys any product that helps. In my case, the CIO rarely cares if the problem is solved with Apache Kafka or any other technology. So, how do you talk at the right level? The answer is simple and complicated: start with case studies. Show knowledge of the customer's industry. Speak to customers in a language they understand. The conversations begin well if you explore a success story from another public customer in the same industry. You can go down to technologies and architectures as much as needed (or skip it if you talk to an executive or business person). For instance, if the developers ask how transactional workloads are implemented with data streaming, I go down to the API level and explain the concepts and functions of Apache Kafka's exactly-once semantics. Represent Headquarters in Other Time Zones Here is one of the biggest problems of most software companies that originate in Silicon Valley: Time zones. Actually, every startup begins with this problem, no matter if you create an innovative business model in a tech hub like Tel Aviv, Berlin, or Bangalore. I am used to working for companies that emerged in Silicon Valley. The time zone is nine hours behind my home in Germany. The Middle East, Asia, and Australia struggle even more. Sales, marketing, consulting, and support need to be regional. A software company cannot grow successfully otherwise. But what about top management, field leadership, and product management? Correct. Most of these colleagues often live close to the Pacific time zone. That's where Silicon Valley is. Otherwise, alignment in creating strategies, making decisions, and coordinating the worldwide business is much more complex. A regional Field CTO is especially helpful in regions outside the headquarters' time zone. So, even if the most significant piece of revenue comes out of the US, you might find one Field CTO for the US, one for EMEA, and one for APAC in the company. Why? Because the Field CTO in other time zones takes over some tasks of headquarters. Present and Discuss the Company Vision and Roadmap One of the most common inquiries I get, especially when traveling outside the US, is doing roadmap presentations about the company’s vision and strategy (under NDA, hence not in public events) because product management sleeps while I visit the customer. But there is more than roadmap discussions. The reality is that digital innovation usually happens first in a few countries, like the US or Mainland China. Other countries learn and repeat. The Field CTO sees innovative and successful trends and shares the news with different time zones. Two examples: Technical Example — Cloud Infrastructure: Some countries are just moving to the cloud. For instance, when I visited the Middle East a few times in 2022, the significant discussions were still about the availability of cloud providers like AWS or Azure in countries like Qatar or Saudi. Hence, these countries are forced to be years behind the US or many European countries. Business Example — Live commerce (aka social commerce): It has been a very common business model in retail in Asia for several years already. This sales innovation combines instant purchasing of a featured product and audience participation via social networks. It still surprised customers in the US and Europe when I present how Apache Kafka transforms the retail and shopping industry with live commerce. Task 2: Thought Leadership A thought leader is a known expert in a specific field. In my case, I have worked in the data integration and analytics space for many years. The topics and technologies change over time. In my early career, I focused on service-oriented architectures using Enterprise Service Bus (ESB) technologies and Batch ETL tools. Today, I focus on data streaming with technologies like Apache Kafka or Apache Flink and design principles like microservices and data mesh. But since the start of my career, I have documented the integration and data space evolution with public presentations, blog posts, and articles. I share my experiences with case studies, best practices, anti-patterns, and trends. Thought leadership means sharing experiences and educating others. There is disagreement, too. That's fine and part of why the software industry is so exciting. Evolution and innovation never stop. Trustworthy Consulting for Customers, Partners, and Community Sales and marketing are crucial for the success of every software company. Each business unit has its own goals, like reaching revenue goals or creating a lead generation and revenue pipeline. These goals sometimes conflict with focusing on the big picture of the customer and its enterprise architecture. Every software company puts itself in the middle. You won't imagine how many vendors I have seen in the integration and analytics space pitching themselves as the heart of the customer's enterprise architecture. Every company has plenty of other vendor agreements. Not everyone can be at the heart of the enterprise architecture. I always recommend using the right tool for the job. It is typically not sales or marketing that solve this conflict. It is not their task either. Independent consultants and system integrators help fix this mess. From the software vendor side, the Field CTO is a trustworthy person explaining when to use the own product portfolio and how to complement other technologies in the enterprise architecture. The beauty of open source is that you can help your colleagues and the broader community simultaneously with thought leadership. In the end, it is a win-win situation. You won't imagine how often I come into a meeting anywhere in the world, and a few people in the room from the customer already know me before I introduce myself. I articulate when and when not to use our products. Sometimes, sales reps in a customer meeting might go a little crazy inside when I present when NOT to use Apache Kafka. A Field CTO is a trustworthy advisor. Present Industry Trends Mapped to the Product Portfolio I learn daily about new use cases, technologies, and other trends across industries. Without up-to-date industry knowledge, it is impossible to be a trusted advisor to customers, partners, and the broader community. I spend at least an hour every single day educating myself. The focus here is not technology but industry developments. Podcasts are your best friend when traveling or just taking a break from work and going for a walk or run. As Field CTO, I remain current on industry trends and act as an industry thought leader and trusted advisor in internal discussions, customer meetings, and public events. Deliver tangible content (articles, whitepapers, slides, videos, demos, etc.) to be used by various business units like sales, presales, marketing, partner, product management, and others. But the content is NOT sales but trustworthy education for everyone. In my case, I get great feedback from colleagues, partners, customers, researchers, students, and competitors (!) about how my thought leadership helps to define the proper enterprise architectures and solve business problems. My presentation about use cases and architectures for data streaming across industries is a great example focusing on case studies, not the underlying technologies and products. A Field CTO confidently presents in front of audiences of all sizes (from 1 to 1,000 and more people) to communicate the value proposition of strategic and tactical concepts and architectures for complex enterprise use cases. This happens in on-site and virtual events. I deliver virtual webinars, customer tech talks, on-site conference talks, keynotes, roundtables, and in-person panel discussions every month. Nobody was born with the talent of speaking in public. Speaker training never hurt anyone. One should seek honest feedback on the presentation style regularly. Look at what kinds of international talks I give across the globe to get a better feeling for my public content. Here is a picture where I speak at Big Data Spain in Madrid: A Field CTO in a bigger company might focus solely on a single industry to go deep into conversations on all levels. I prefer another way. I am not a deep expert in one industry. Instead, I can share case studies and architectures across all major industries. Customer Meetings at International Conferences and Regional Events Thought leadership is not just about writing blog posts and doing presentations. I attend many public events every year around the world. This includes events organized by our company and external conferences. For instance, at Confluent, the most critical events are our yearly conferences in the US (Current, 2022 in Austin) and Europe (Kafka Summit, 2022 in London), plus regional events (Data in Motion tour around the world; I attended Frankfurt, Zurich, Stockholm, Amsterdam, Tel Aviv, and Dubai in 2022). I also participate in external events. One of my yearly favorites is AWS ReInvent in Las Vegas. But I am not an attendee at all these events. I usually don't have much time to attend sessions. Instead, I have customer meetings. Up to ten per day. It can become very stressful and exciting at the same time. Additionally, I usually give a talk or keynote and moderate a customer roundtable (often for executives). Looking at my slide decks and blog posts, I have plenty of success stories and architectures I can discuss on every level, from the CIO to the software developer for financial services, insurance, retail, telcos, gaming, public sector, logistics, travel, energy, automotive, healthcare, and software industry. I can adjust my content depending on the audience. For instance, if I speak at the yearly Automotive IT Congress in Berlin, I know the audience is top management from OEMs and suppliers. Hence, I present case studies about car makers, manufacturing, and mobility services. When I go to the Apache Kafka open source community meetup in Berlin in the evening, I speak about deep technical and non-industry specific general content like disaster recovery strategies for data streaming. And when we have a customer roundtable for lead architects, the conversation changes to a completely different story once again. A Field CTO Is Not a Developer Advocate or Evangelist Note that the content of a Field CTO differs from developer advocates/technology evangelists. These colleagues focus on source code, live demos, deep technical Q&A, etc. Don't get me wrong: Some developer advocates publish unique thought leadership content. And Field CTOs create code examples and demos. But the priority and focus are very different. The overlapping in the daily business is less than 10% in my experience. The Field CTO understands the market and the business in depth. The focus is on customers' problems and innovation. Mapping these challenges into the software vendor's product portfolio is a key focus area. Contrarily, the developer advocate focus is using the product portfolio of the software vendor to create exceptional code examples/demos and shares the developer experience with the community (i.e., customers and potential customers) by doing blog posts, meetups, conference talks, podcasts, etc. Having said all this, some content I create is comparable to presentations or blogs of developer advocates. For instance, I wrote a few quite technical articles on the Confluent blog. Hence, some people define Field CTO as a C-level developer advocate and evangelist. The content of the Field CTO (similar to the content of the developer advocate) is not just helping the customers, partners, and the broader community. I also use it for internal enablement. I have a detailed explanation in the next section for this. Task 3: Collaborate With Internal Teams A Field CTO is connected with colleagues across various departments within the company. And on all levels, from C-level to field teams to engineering. Collaborate With Product Management and Engineering The Field CTO supports product management and engineering with feedback from customer conversations and shares the company's strategy and vision with the customer. Here are specific tasks I do regularly. I want to emphasize that I am not the lead or expert in any of these tasks. I add another perspective from my experience (that is different because of my daily job meetings customers, creating thought leadership content, etc.): Share feedback from the field: Feedback includes ideas, complaints, and trends that I hear in my 100+ customer meetings during the year across the globe. I do monthly 1:1s with a few product managers, plus many discussions whenever I meet product managers or engineers at internal or external events. Join subject matter expert (SME) groups: Dedicated groups with colleagues from all different business units meet weekly to discuss a specific topic. I join a few of these whenever I have time. Review internal and external documents: I look at internal documents like new product ideas, previews, or roadmap draft templates. I also collaborate with our marketing team when we create external-facing content like case studies or pitching decks. Analyze competitive intelligence: A dedicated group focuses on market intel. In the software industry, it is hard to be and stay successful if you don't know what your competitors are doing. I share feedback with this group whenever something comes up in a customer meeting or at an event. I read our updated internal documents monthly to learn how to discuss our strategy and product in competitive situations. Present roadmap to customers and prospects: I discuss the company's vision and upcoming features (under NDA) in customer meetings. This is crucial, especially outside the US, where it is much harder for the account teams to get an appointment with colleagues from the US time zone. I cannot go as deep as a product manager. I only share the high-level overview and involve the right product manager in a follow-up with the customer. Internal Enablement of Sales and Marketing In a good company, even the account manager and presales colleagues clearly explain how the own product fits or does not fit into the enterprise architecture of the customer. No one lies and sells products where it is no fit. Though, often this is more of an educational problem. The Field CTO educates internal teams about practical DOs and DONTs. In my case, data streaming is a super complex field. Hence, thought leadership is not just for customers. It is widely used by colleagues, too. For instance, my blog series about data streaming vs. data warehouse and data lake explores how and when data streaming complements other data platforms. Many new hires across business units read this to understand how we fit into the broader data platform market. The Field CTO enables internal teams by demonstrating how to pitch their product's business value and unique selling points. This is crucial for many departments, including sales and marketing. I work with our internal enablement team to incorporate and share my knowledge and experience with new hires. This is not replacing any other internal enablement but is complementary. It adds another perspective. Support Mergers and Acquisitions (M&A) Mergers and acquisitions (M&A) allow enterprises to grow or add new products more quickly and change the nature of their business or competitive position. A Field CTO helps evaluate other companies to guide the M&A team and top management in making the right decisions about buying or not buying the company. The feedback from the Field CTO is about market trends, visibility of the company in the customer base, feedback about the product experience, etc. Task 4: Public Spokesperson I have covered thought leadership and evangelism already. However, being a public spokesperson is very different. A spokesperson is engaged or elected to speak on behalf of others. In the present media-sensitive world, software companies have limited employees who are allowed to speak to the media and analysts. First, you receive formal training in journalism, communications, public relations, and public affairs in this role to ensure that public announcements are made in the most appropriate fashion and through the most appropriate channels to maximize the impact of favorable messages and minimize the impact of unfavorable messages. Being a spokesperson is much harder than doing thought leadership or technical evangelism. Hence, only the very experienced (and responsible) top management announces most critical messages, like the CEO and CFO doing the earning calls in a public company. A CTO or similar colleague announces new product releases. A Field CTO can work as a spokesperson to support: Public relations: Press articles, interviews, statements Analyst relations: Research interviews, presentation of product features and case studies Give Press Interviews and Write Public Articles For public relations, the Field CTO can help significantly in markets outside headquarters. In my case, most interviews and press releases in English are done out of headquarters in Silicon Valley and supported by top management and regional colleagues. I mainly do interviews and press articles for regional events in Europe. The public relations team uses me a lot as a German spokesperson, as I am German. But I also do English press articles, interviews, and podcasts: Contrary to regular blog posts or podcast recordings, the internal communications team reviews (and often even prepares). I collaborate and align with the team to ensure the proper positioning of our products and review the technical content. My broad experience working with so many customers always helps me find the right words, whether an article is for a developer interview or an interview in a CIO automotive magazine. I link my press publications on my website. Educate Research Analysts Like Gartner and Forrester For analyst relations, it is different. While product management is crucial to present our product features and roadmap, I am involved in discussing case studies and industry-related trends. I have meetings and calls regularly with research analysts from Gartner, Forrester, IDG, and others to educate them and provide Q&A from my practical worldwide experience. Working with analysts differs from daily meetings with customers or partners. These research companies don't care only about the technology but about the success stories and the solved pain of customers. I guess everyone has seen a Gartner Magic Quadrant or Forrester Wave. People underestimate that these papers do not just evaluate the product portfolio but the vendor itself. The current product portfolio is essential, but the future product vision, continuous customer support of the vendor, and in the end, customer success and happiness are as necessary for the analysts. In What Business Unit Is a Field CTO? That's a brilliant question. There is no logical answer. I can only talk about myself. During most of my career, I was in "special groups" that have different quarterly goals (often hard to measure in $$$ and quota) and rules (like travel restrictions). My daily job is very flexible and differs every single week. My priorities can change from quarter to quarter depending on new prioritization, regional re-organizations, changes in the competitive market, and so on. I love it. But it does not fit into a standard sales, marketing, or engineering job role (with all its processes and rules). Most importantly: As Field CTO, I do not directly report to a sales or engineering manager. I work in a dedicated innovation group. That enables independent (but aligned) working on my tasks. Other companies might put the Field CTO role into another business unit. It does not matter as long as you can fulfill your tasks the right way. But I could see conflicts if I directly report to a sales or marketing manager. Why This Job Title? The title Field CTO is coming up more and more in software companies. It is often used because some people in the company need a clear, visible description of their tasks. Many people use this term because there is no better one, and the role (maybe) did not exist in the past. There are plenty of other job titles. Chief evangelist? Global technology advisor? Distinguished XYZ? I feel these titles make little sense and do not clearly say what I am doing. Hence, like data streaming or cloud-native data warehouses define new software categories, the job role of the Field CTO creates a new category. Let's review this in 2, 5, and 10 years... Is It a Management Role? No. Field CTO is NOT a people management role. My management asked me tens of times if I wanted to get management responsibility and lead other colleagues. The clear answer was always a rapid "no!"... I am very good at thought leadership in technology and innovation, creating public content, talking to different kinds of people in small and big audiences, and collaborating with customers and colleagues around the world. But I am not interested in managing other people. If you look at my long list of tasks, you quickly realize there is no time for this. Where Is the Headcount on Indeed, Glassdoor, LinkedIn, Etc.? You often don't find enterprises directly searching for this role. And frequently, it has a different name, as the title was just being created in the industry for a few years. There is no standard definition for a Field CTO like a sales rep, presales, field marketing, or software engineer. Sometimes, the Field CTO is an informal role, not an official headcount. Your Workday might still say you are a distinguished software developer, principal presales, or similar. But you still use Field CTO in your internal and public profile. Search for "Field CTO" in quotation marks (otherwise, you will only find CTOs - a very different and much more frequent job role). If you want to see a few other job descriptions and the career histories of Field CTOs, first check my Linkedin profile. Then search for "Field CTO", and you will find several people from software companies. For instance, my search shows connections from Snowflake, Databricks, VMware, MuleSoft, Tableau, and others. Field CTO is a new job role getting more and more traction. Other Field Ctos in the Software Industry This blog post is a story about my daily life as Field CTO. My personal definition of the job role of Field CTO in one sentence: The Field CTO is a trusted and well-known advisor for the product and technology my employer sells to make customers successful around the world. As discussed in this blog post, the role is very individual and can look very different in other business units or organizations. Hence, I also want to share a few of my fellows from other software companies so that you see a few more examples that are similar and different at the same time: Daniel Hand, Field CTO APJ, Cloudera: A senior technology leader building and leading teams within disruptive, high-growth technology companies. "As a Field CTO, I help guide organizations to become increasingly data-driven through the adoption of Cloudera’s Enterprise Data Cloud." He is also a published author and contributor to O’Reilly Media and Addison-Wesley. Fawad A. Qureshi, Global Industry Field CTO, Snowflake: Fawad is a strategic technology leader with more than two decades of international industry project experience involving consulting on enterprise data warehouses, big data analytics, and cloud solution architectures. He helps customers in multiple industries to translate their business requirements into technology solutions. He is passionate about sustainability and helps his clients achieve their sustainability goals using data and analytics. Jeroen Reizevoort, Field CTO EMEA, MuleSoft (Salesforce): Inspires customers by aligning their business initiatives to technology trends and helping them to make that combination actionable. "I am a technical executive responsible for communicating the corporate direction and product roadmap to regional customers’ business and technology leaders, as well as influencing the corporate and product strategy through industry expertise and synthesized field input." Stephen Walters, Field CTO, GitLab: Works with customers on DevOps initiatives to the development lifecycle. He is a subject matter expert with management and consultancy experience across end-to-end IT disciplines. "As a Field CTO, I am always looking at emergent areas of business and technology. A key area at the moment is value stream management." His job role includes being a keynote speaker on specialist subjects at conferences and webcasts and publishing articles. Liz Fong-Jones, Field CTO, Honeycomb.io: Promoted from Principal Developer Advocate to the Field CTO role. She blends hands-on technical experience as a member of Honeycomb's platform rotation, pairing with customers on implementation and articulating the business value of observability to leadership and executives. She's a frequent keynote speaker and author of Observability Engineering, published by O'Reilly Media. How To Become a Field CTO Many people ask me how they can get a job similar to mine. They see how many things I do, where I travel, and what lessons and case studies I share. That's very exciting and attracts many people. What previous job positions should you have had to become a Field CTO? A customer-facing role is critical. Ideally, you mix different experiences like developer relations, consulting, and technical sales (aka presales). Here is how I would define the critical criteria for becoming a Field CTO: Talent: Mix of many things (tech and non-tech skills) Experience: At least 10+ years with different companies, technologies, industries, regions, etc. Curiosity: Learn something new every day across many (tech and non-tech) topics Travel: Meet customers/prospects/partners/community/colleagues everywhere in your region or even worldwide Talent is likely the most challenging part, as you cannot learn everything. If you are unable (or don't enjoy) speaking to different personas (like CIO, business person, developer), this job is impossible. You must also work with many people with very different opinions and fight against your thought leadership. Experience is about broad knowledge across many topics. Technology is vital, but there is so much more. You must understand internal and external processes, sales cycles, cultures, regulations, etc. Curiosity is mandatory, as you will (have to) learn new trends and innovations before most people even think about it. And compare and integrate it with existing technologies and platforms. It is not just about "why change" but an evolution of your customers, not a "big bang". Travel is the hardest part for many people. If you cannot travel regularly (at least in your region), forget it. Yes, things go virtual. But like many tasks of executives and top management, the functions of the Field CTO need interaction with humans. Meeting customers on-site in critical meetings or sharing case studies in roundtables only works well in person. And each region is different. Did covid change travel? No. Not for the role of the Field CTO. Instead, it showed me how important and valuable on-site meetings are. Field CTO Is a Critical Position in a Software Company The broad spectrum of tasks allows a Field CTO to leverage the unique capabilities for internal and external thought leadership and knowledge sharing. The success of the customers is the ultimate goal of every employee of a company. Collaboration with various internal teams, partners, customers, and the community is essential. The combination of continuous learning and knowledge transfer makes a good Field CTO. Curiosity combined with the human factor of 1-1 conversations in a variety of contexts is the secret sauce. What are your tasks as a Field CTO? Or, if you want to grow into that role, what is your current job role and strategy for the future? Let’s connect on LinkedIn and discuss it! Join the data streaming community and stay informed about new blog posts by subscribing to my newsletter.
Gene Kim
Author, Researcher, Speaker, Director, DevOps Enthusiast,
IT Revolution
Miguel Garcia
VP of Engineering,
Nextail Labs
Jade Rubick
Engineering advisor,
Jade Rubick Consulting LLC
Dan Lines
COO,
LinearB