Categories
Tips

Why Learning to Code Is the Ultimate Skill for Future-Proofing Your Career

As technology continues to shape the world we live in, it’s becoming increasingly clear that learning to code is one of the ultimate skills for future-proofing your career. With the demand for technology skills rapidly growing across all industries, the ability to code is no longer just a valuable asset but an essential one. 

Coding is a great skill on its own, but it can even enhance your existing skills such as writing or marketing. In this article, we’ll explore why learning to code is so important and how it can help you future-proof your career with practical advice that will further your learning.

Why You Should Learn Coding

Firstly, let’s consider the job market. According to the Bureau of Labor Statistics, computer and information technology jobs are projected to grow by 11% between 2019 and 2029, much faster than the average for all other occupations. 

This growth is expected to create tens of thousands of new jobs in the field, making it one of the fastest-growing industries in the world. By learning to code, you position yourself to take advantage of this growth, opening up a world of exciting career opportunities in technology.

Tech Takeover

Moreover, technology is rapidly transforming the way we work across all industries, from healthcare to finance to retail. As businesses become more reliant on technology to stay competitive, the demand for tech-savvy professionals who can develop, implement and maintain technology solutions is skyrocketing. 

By learning to code, you develop a growth mindset that allows you to stay current with the latest trends and technologies. This not only helps you stay relevant in the job market but also allows you to continually improve your coding skills and take on new challenges throughout your career.

Professional Growth

In addition to the job market benefits, learning to code can also enhance your problem-solving skills, creativity, and critical thinking abilities. Coding requires you to think logically, break down complex problems into manageable parts, and find creative solutions to technical challenges. 

These skills are transferable to many other areas of life and can be applied to problem-solving outside of coding. For example, problem-solving skills in coding are easily applicable to the logistical aspects of sales work. Finding the fastest and most cost-effective way to tackle a problem is something that coding instills in its pupils.

Fulfilling Career Path

Furthermore, coding is a skill that can be used to build and create, making it an incredibly fulfilling pursuit. The ability to build and bring ideas to life through coding is a powerful tool, allowing you to create software, websites, and apps that can further your financial future. By learning to code, you gain the ability to create things that matter and make a difference in people’s lives.

Not to mention, coders aren’t going to be hurting for opportunities for a long while. Even with the rise of AI,  there’s always going to be value in a human developer who is willing to work with a team. 

Your career path can help you build wealth, it can help you in the future in case you need to work on your credit score and take out a loan as employment history is one of the things lenders will review.

The Basics Of Learning How To Code

So, how can you start learning to code? There are many resources available online, including coding boot camps, online courses, and coding communities where you can connect with other developers and learn from their experiences. 

Pick And Stick To One Programming Language

There are many programming languages to choose from, such as Python, JavaScript, and Ruby on Rails that could be the foundations of your first project.

There are too many languages out there to list down, but what’s more important than your first language is sticking to that language for at least a year.

 Programming at its core involves using instructions to tell a computer what to do. You can’t learn the basics if you keep changing languages while learning. Most computer languages aren’t all that different, so it’s best to stick with a language you find relevant to your goals.

Practice Consistently

Practice, as always, makes perfect, and the same goes for programming. Start with simpler projects and gradually work your way to more meaty projects. There are many online resources available to help you learn to code, such as Codecademy, FreeCodeCamp, and Udemy.

As far as scheduling goes, make sure to set aside a set amount of hours each week where you’re learning new things. Coding doesn’t have to be rushed, but you do need to be learning something every week. Stagnancy is the enemy of progress, and to avoid that, make sure you always have time to practice coding.

Connect With The Community

Programming is often a collaborative effort, and working with others can help you learn faster and get feedback on your code. Join online communities, attend meetups, and contribute to open-source projects to expand your knowledge.

The community is also a great avenue to vent your frustrations and worries. All these developers have had their own wellness issues. They can help you work your way through the tougher parts of coding in ways that are relatable to you. 

Categories
Tips

Working in corporate to founding a developer first company

Last month I got a chance to sit and talk with Darshan Shivashankar, founder and CEO of APIWiz on our brand new podcast. We two have collaborated in the past on API lifecycle management workshop and Darshan being a technical founder, whenever we talk our conversations tend to go in all places technical. So catch up on everything we discussed in this 50 minutes episode but here’s a quick summary or gist if you will for someone who needs more buy in before lending the episode their ears.

Darshan has 15+ years of experience in industry building technical solutions especially when it comes to designing API programs for companies looking for Digital transformation. In the past Darshan has worked with various industries from telecom to healthcare, FinTech to Neo banks. Though now a founder of developer first company, Darshan shared he never envisioned or planned his career to follow a fixed trajectory. Opportunities started coming in as he worked on more advanced projects and with right problem solving mindset and experience, he was acing the digital transformation process of the industries he worked in, sometimes leading and even starting their API first journey. 

Darshan figured out the technical debt associated with APIs journey of organisations wherein teams work in Silos, leading to a lack in collaboration, reliability and consistency in governance. If you’ve worked in APIs development for a big project or digital transformation mission, then you could easily relate to it. This is where Darshan felt a need for a solution that could help in API lifecycle management. After validating this idea within his network he realised that indeed there is a requirement for such a solution but not an immediate urgency to have that in place. This gave Darshan and team the opportunity to bootstrap their journey building APIWiz, focusing on addressing Developer centric problems.

I asked Darshan if he’s still involved in the development of the product and he mentioned he was actually writing code till very recently but now he’s more involved in hiring, planning and giving direction to the product, though he still knows the codebase in and out and is always ready to pull up his sleeve and get down to programming and tracking bugs whenever required, which for me was really inspiring to listen. The team at APIWiz is now scaled up after they raised funds from their investors and that’s where Darshan focused on hiring the candidate with right vision and mindset, as he believes tools and skills can be learned at job but problem solving attitude can’t be taught. Darshan also mentioned motivating team members to fill the job roles needed within the organisation enabling them to explore more arenas to work and fit in. 

I also asked Darshan where he sees industry heading and things he’s most excited about but I’m gonna tease, as he really has a deep and interesting perspective on this one which I feel you should listen straight from the Podcast to better understand it. 

P.S : eBPF and Raspberry Pis were mentioned 😛

Darshan also shared the struggles associated with starting a company from scratch, the role of support from family members, friends and people within your network and great tips for anyone just starting out fresh in tech and wanna make big, making this one of my favourite episodes.

If you listen to it don’t forget to share it with your friends who might learn a thing or two from this podcast. As always I’m always looking forward to your feedback to make this podcast better and if you have any guest suggestions feel free to share it via the comment section below.

Categories
Community Tips

Protecting APIs by Merging Tools and Security Best Practices

Rapid uptake in adoption by industries ranging from banking to retail to autonomous vehicles of customer- and partner-facing and internal application programming interfaces (APIs) to drive internet traffic has resulted in an equally rapid growth in endpoint attacks – more than 11 billion over just 18 months according to a report from edge computing security leader Akamai. It makes sense that they are more vulnerable to threats from malicious actors, given API endpoints’ similarity to internet-facing web servers, and their role as pipelines between divergent platforms.

For DevSecOps teams, protecting APIs is a top priority; they are vital to mobile, SaaS, and web applications and paramount to a healthy software development lifecycle. API security is also a natural extension of DevSecOps’ push to break down silos between development, security, and operations and move toward automation and design that integrates security as a shared responsibility. 

Thus, it is time to view API security not as an external bottleneck, but as a part of a stable long-term strategy. This can be achieved by altering company attitudes and investing in API tools that facilitate testing, enforce governance standards, and automate recurring security tasks.

Adopt an API-as-a-Product Strategy

A primary reason digital transformation efforts have failed for many brands is because they do not see APIs adding value. As such, they’ve lost track of the potential return on investment (ROI) APIs can deliver. When APIs are not viewed as assets or value-generating, they aren’t subject to the appropriate level of protection or security performance oversight. In fact, Akamai’s report highlighted the fact that many enterprises relegate API security checks to the end of the lifecycle and rely on traditional network security solutions which aren’t designed to protect against the attacks to which APIs are subject.

This is starting to change, however, as API-as-a-Product strategies gain traction within the developer community. There is a notable shift away from delivering project features based on budgets and deadlines to holistically examining APIs as products and assessing their capabilities. Further, as the concept of monetizing APIs gains prominence, their protection becomes a higher priority at the outset, with organizations more inclined to adopt a human-centered design approach. 

What this means is moving API regression tests to the forefront rather than treating them as an afterthought. It means adopting a design-first approach – wherein everyone on the team speaks the same language and every tool is able to leverage the same design – from the outset with the help of an API management platform. This will also help ensure that APIs are built on established authentication and authorization mechanisms such OAuth 2.0, which is the industry-standard protocol for authorization, and OpenID Connect.

API testing tools are critical for protecting something upon which most services in use daily rely. These tools let developers see if an API is reacting adequately to unexpected inputs or possible security attacks. They show immediately if an application is running with optimized functionality, reliability, and security.

Whether it is running user authentication, parameter tampering, unhandled HTTP, or fuzz testing, it is imperative to test an API contract to ensure that services can communicate and that the data they share is consistent with a specified set of rules or standards. Further, there are many solutions in the API testing market, including cross-cloud API testing software, software that supports asynchronous testing and continuous integration/continuous deployment (CI/CD) integrations, and end-to-end testing – as well as solutions that support various formats eliminating the need for developers to learn new languages. 

Continuous testing is essential across the DevSecOps pipeline, as is robust test coverage based on API contracts that have been designed and approved. Plus, by chaining together complex API transactions and workflows, cases can be tested on-demand using continuous delivery or CI/CD to reduce downtime. 

Security in 360-degree Lifecycle Management

While API security considerations have typically been an afterthought to ever-increasing business demands, the reality is that no enterprise can afford for software security checks to be the last stage of an API lifecycle. Rather, security must be part of a 360-degree API lifecycle management strategy. It should be incorporated into every level, from planning and design to developing, testing, and release management – all the way out to deprecation.

Developers must also have oversight throughout the entire API lifecycle – which is where an API management platform comes into play. A dedicated platform can provide workflow visualizers that show an API’s complete lifecycle in a single view with issue alerts, which helps accelerate production using CI/CD in the DevSecOps pipeline to build trusted artifacts and more rapid iterations, thereby guaranteeing a security-first mindset. 

API tools also allow perimeter scans, which enable the discovery and inventory of APIs and allow for easy breakdowns for DevSecOps teams to work with. The best platforms will leverage a command line interface (CLI) – a unified tool for managing and controlling multiple services from the command line or with automation through scripts – to make APIs more easily discoverable. The team can easily determine where and how many APIs are deployed; a level of visibility that is mandatory for enterprises. 

Tools for Success

In short, an API team is only as successful as the set of tools at its disposal.

API security best practices are no mystery to seasoned security professionals – and they start with establishing solid API security policies through an API management platform. 

Finally, a collaborative approach to API governance – in line with the DevSecOps mission to eliminate siloes – is imperative for any organization’s security. 

About APIWizAPIwiz is a low-code, API automation platform allowing developers to build and release reliable APIs quickly. With APIwiz, API teams have complete control, visibility, and predictability over their entire API program, allowing organizations to stay open and connected.

Categories
Community Tips

Ruby on Rails vs .Net Core: Detailed Comparison

Many web development frameworks out there in the market are claimed to be the best and most reliable for your project. But what is the reality? Are they even as qualified as hyped? 

Today in this article, we are going to discuss two such best frameworks Ruby on Rails and .NET Core. Because of these frameworks’ unique capabilities and the wide range of benefits they offer, RoR developers and top .NET development companies are always in demand among modern businesses. 

What makes these frameworks so powerful and reliable? Which one of them is more suitable for your web development project? Well, let’s find the answers by discussing what these frameworks are and what are their pros and cons. 

Ruby on Rails 

Ruby on Rails follows the Model-View-Controller (MVC) architectural pattern, which separates an application into three main components: the model, which represents the data and business logic; the view, which handles the presentation of the data; and the controller, which serves as an intermediary between the model and view, processing user requests and handling the flow of data.

Ruby on Rails emphasizes convention over configuration, which means that it provides a set of standard conventions and best practices for building web applications, allowing developers to quickly build applications without writing a lot of code from scratch. Rails also follow the Don’t Repeat Yourself (DRY) principle, which encourages developers to avoid duplicating code and to keep their codebase as concise as possible.

Ruby on Rails provides a wide range of built-in tools and libraries for tasks such as database management, testing, and security, making it a popular choice for building web applications. It is also known for its strong community support, with many open-source libraries and resources available for developers to use.

Advantages of Ruby on Rails 

Here are some of the key advantages of using Ruby on Rails for web development:

  1. Rapid development: RoR follows the “convention over configuration” principle, which means that it provides a set of standard conventions and best practices that allow developers to quickly build web applications without writing a lot of code from scratch. 
  1. Productivity: RoR provides a rich set of built-in tools and libraries that allow developers to focus on building their applications, rather than worrying about low-level implementation details. 
  1. Scalability: RoR is designed to be scalable, allowing developers to build applications that can handle a large number of users and traffic. RoR also provides built-in support for caching, which can help improve application performance and scalability.
  1. Flexibility: Ruby on Rails also supports a wide range of databases and platforms, allowing developers to choose the technologies that best suit their needs. This makes it one of the most flexible development frameworks available in the market. 
  1. Community support: RoR web development framework is supported by a large community of developers who continuously keep contributing to the framework by building new open-source tools and libraries. This community support can be invaluable for developers who need help or guidance on specific aspects of their development projects.

Limitations of Ruby on Rails 

While Ruby on Rails offers many advantages for web development, there are also some limitations to consider. Here are some of the key limitations of using Rails for web development:

  1. Learning curve: Although Ruby on Rails is designed to be developer-friendly, it can still have a steep learning curve for beginners. RoR has its own set of conventions and patterns that can take some time to understand and master.
  1. Performance: While RoR is designed to be scalable, its performance can be slower compared to some other web frameworks. This can be a concern for applications that require high performance, such as those with large numbers of concurrent users or high volumes of data.
  1. Resource-intensive: RoR can be resource-intensive, especially in terms of memory usage. This means that web applications built with Ruby on Rails may require more server resources than those built with other web frameworks.
  1. Updates and compatibility issues: Since RoR is an open-source framework, updates, and compatibility issues can arise. Developers need to stay up-to-date with the latest version of RoR and its dependencies to avoid compatibility issues and potential security vulnerabilities.
  1. Not suitable for all projects: While RoR is a flexible framework, it may not be suitable for all types of projects. For example, projects that require low-level control over hardware or operating systems may require a more specialized framework.

.NET Core 

.NET Core is a free, open-source, cross-platform, modular, and high-performance framework for building modern, cloud-based applications. It is developed by Microsoft and is designed to be a modern and flexible successor to the .NET Framework.

.NET Core supports multiple programming languages, including C#, F#, and Visual Basic, and can be used to build a range of applications, including web applications, microservices, desktop applications, and gaming applications.

.NET Core is designed to be modular, flexible, and lightweight, allowing developers to build applications that can run on a variety of platforms, including Windows, Linux, and macOS. It provides a set of standard libraries and tools that developers can use to build web applications, desktop applications, mobile applications, and more.

.NET Core also includes ASP.NET Core, a web framework that allows developers to build web applications using .NET Core. ASP.NET Core provides a range of features for building web applications, including support for Model-View-Controller (MVC) architecture, Razor Pages, middleware, and more.

Advantages of .NET Core 

There are several advantages to using .NET Core for developing web and cloud-based applications. Here are some of the key advantages of .NET Core:

  1. Cross-platform compatibility: .NET Core is designed to be cross-platform, which means that it can run on Windows, Linux, and macOS. This makes it easy to build and deploy applications on a range of platforms.
  1. High performance: .NET Core is designed to be fast and efficient, with a focus on optimizing performance for web and cloud-based applications. This makes it a popular choice for applications that require high performance, such as those with large numbers of concurrent users or high volumes of data.
  1. Open-source: .NET Core is an open-source framework, which means that its source code is available to developers. This makes it easy to customize and extend the framework to meet specific application requirements.
  1. Modular design: .NET Core is designed to be modular, which means that it includes a range of lightweight and extensible components that can be used independently or together. This makes it easy to build and deploy applications that only require specific components.
  1. Cloud-ready: .NET Core is designed to be cloud-ready, with built-in support for cloud-based development and deployment, including support for Docker containers and Kubernetes.
  1. Developer-friendly: .NET Core provides a range of developer-friendly features and tools, including Visual Studio, Visual Studio Code, and the .NET Core CLI, making it easy for developers to build and debug applications.
  1. Strong community support: .NET Core has a strong and active community of developers who contribute to the framework by creating open-source libraries, tools, and extensions. This can be helpful for developers who need guidance or help on specific aspects of their development projects.

Limitations of .NET Core

  1. Limited support for some Windows-specific features: While .NET Core is designed to be cross-platform, it does not support all of the features of the .NET framework like WF and WCF. 
  1. Limited backward compatibility: Applications developed using the previous versions of .NET may require significant changes to work with .NET Core.
  1. Smaller ecosystem: While .NET Core has a growing ecosystem of libraries, tools, and extensions, it is still smaller than the ecosystem around the full .NET Framework. This can make it harder to find specific tools or libraries for specific tasks.
  1. Learning curve: If you don’t know anything about the .NET framework then it will take some time and effort to get started with .NET Core. 
  1. Lack of stability: As .NET Core is still a relatively new technology, there may be some stability issues or bugs that have not yet been identified or addressed by the development team. This can make it harder to ensure that your applications are stable and reliable.

Final words 

Both Ruby on Rails and .NET Core are powerful frameworks for developing web applications, but they have different strengths and weaknesses depending on the specific needs of your project. 

If you are looking for a framework that is designed to be highly performant, scalable, and cross-platform, .NET Core may be the better choice. If you are looking for a framework that is easy to learn and has a strong community, Ruby on Rails may be the better choice.

Categories
Community Tips

DevOps 101 for a Dev Who Doesn’t Like Ops

(To the tune of The Fresh Prince of Bel-Air

— 

Now this is a story all about how 

DevOps improves software development, here and now 

And I’d like to take a minute, just sit right there 

I’ll tell you why DevOps should make developers care 

— 

In the world of software, development and ops 

Often work apart, and it’s easy to flop 

But DevOps brings them together, for a common goal 

To make software faster, better, with more control 

— 

Now that the sick rhyming has captured your attention, let me tell you why even as a developer with little knowledge of ops knowledge, I’m a big fan of DevOps. It’s so time-saving that I cover the basics, even when I’m the sole developer on a project. Who doesn’t like saving time?  

The basics of DevOps 

So, what is DevOps? At its core, DevOps is a culture and set of practices that aim to break down the barriers between development and operations teams to improve collaboration and efficiency. It involves automating and streamlining the software development process, from code creation to deployment and beyond.  DevOps is not just a set of tools or processes, but a way of thinking about software development. It’s about creating a culture of collaboration, communication, and continuous improvement. With DevOps, developers and operations teams work together to build, test, and deploy software faster and more reliably. 

Additionally, DevOps promotes collaboration and communication between different teams, which leads to a more efficient and streamlined development process. By breaking down the silos between development and operations teams, everyone is on the same page, working towards the same goal. This results in faster and more reliable releases, as well as overall better quality of the product. In short, DevOps is a time-saving and collaborative approach to software development that ultimately leads to better outcomes for everyone involved. 

Why should developers care about DevOps? 

You might be wondering why, as a developer, you should care about DevOps. After all, isn’t that more of an operations thing?  Well, the truth is that DevOps is highly relevant to developers as well. According to the Developer Nation Survey 23 results, DevOps adoption keeps increasing (from 47% to 56% in 1½ years), while most of the implementation work is done by software developers themselves, with an earlier Developer Nation report mentioning only 5% of the DevOps practitioners being DevOps specialists.

In my mind, this makes sense. DevOps is, at its core, a culture of breaking down the walls between devs and ops people. While a specialist can be invaluable in complex implementations, or to help kickstart a culture, the culture itself should be the responsibility of generalists. By adopting DevOps practices, you can save time and streamline your development process. You can avoid manual steps in building and deploying your code, get test results without running tests, and have your changes live in production far faster than you would without DevOps.  Sure, setting up version control, pipelines, testing, and deployments takes some effort. But more often than not – even sometimes when you’re the only one working on the project – the investment is worth it! 

DevOps exists to make your life easier 

This is the bottom line – DevOps is not there to create a new profession of DevOps consultants (just like Agile Software Development isn’t there to ensure Agile Coaches make their bread). It’s there to make the lives of devs and ops people easier.  By adopting DevOps practices, whenever I am actually working with Ops, DevOps makes the collaboration easier as everything is traceable, often reversible,  and even easier to document. This means that if there are any issues or bugs, we can quickly identify where the problem occurred and take steps to fix it. 

According to the Q3,2022 Pulse report DevOps implementation witnesses more instrumental action from the programmers and software developer community with a 45.6% involvement, while the supervisory roles reflect the participation of less than 12% with Tech/engineering team leads at 11.2%, architects involvement at 10.7% and the C-level CIO/CTO and IT management roles at the lowest 10%. Computer and data science students show some practical learning involvement with 13.3%.

DevOps also encourages frequent communication between developers and operations, which helps to avoid misunderstandings and ensures everyone is working towards the same goals. The result is a more efficient and effective development process, with better quality software releases and happier customers. And even when I’m working by myself, DevOps makes it easier to deploy, maintain, and scale my apps. This collaboration can help to identify and fix issues earlier in the development process, reducing the risk of costly delays and downtime caused by issues discovered during deployment or after release. 

Just recently, I was building a .NET MAUI project – my first one – and realised I only had a rough idea of how to build, test and publish an app, and not even that on how to distribute it. The obvious solution was to let someone else figure the details out for me. Luckily, I have someone who knows more about this stuff – namely, GitHub.  Getting the basics to function using GitHub and Visual Studio App Center took me about an hour. GitHub Actions would take about 15 minutes to ship my code – from checking in to having a download available on App Center – and I don’t have to do anything!  I should probably add some tests to the build process, but hey, I’ll add those right after I’m done with the documentation. If you want to read more, the whole article is here.

How to get started? 

Here are some simplified steps to get started with your journey as a DevOps-savvy developer: 

  1. Automate everything you can: Automate your build, testing, and deployment processes using tools like GitHub, Azure DevOps, Jenkins, TeamCity, and GitLab.
  2. Collaborate with Operations: Work closely with your Operations team to understand their needs and to ensure your code runs smoothly in production. 
  3. Embrace Continuous Improvement: DevOps is all about continuously improving your development processes, so always look for ways to streamline and improve your workflows. 
  4. Learn by Doing: DevOps is a hands-on approach, so start by experimenting with new tools and practices on small projects. 
  5. Prioritise Communication: Effective communication is essential to DevOps, so ensure you regularly communicate with your team to ensure everyone is on the same page. 

And remember, DevOps is a journey, not a destination.  By taking small steps towards automation, collaboration, and continuous improvement, you can gradually incorporate DevOps practices into your development workflows and reap the benefits of faster, more efficient software development. Don’t get too attached to any one tool – plenty of tools exist, and you can get tremendous value from many. 

Bio: Antti Koskela is a Microsoft MVP trying to stay current on what’s what in the Azure and .NET world, and a Developer Nation Dev Committee member.

Categories
Community Tips

The Developer Advocacy Universe

In this episode of the Developer Nation Broadcast we welcomed Adrienne Tacke, Senior Developer Advocate at Cisco. Adrianne spoke about her current role, her focus and the challenges she is facing. She also walked us through her journey and how she landed in the developer advocacy universe.

Adriane   

Hi, Ayan. Really great. Really happy to be here. Thank you for having me on Developer Nation. 

Ayan  

Yeah, I’m really excited for this episode, especially given the fact that we both are developer advocates, I’m sure I’m going to be learning a lot of things from you today, as well as our community members who are mostly developers, but I’m pretty sure many of them would be interested in a career in developer relations and could learn a thing or two from you. So, for our community members, could you just introduce yourself referring to what you are currently working on and also giving an overview of your career journey? 

Adriane   

Sure, I’ll give the short version so we can go into more depth a little later. I’m a Senior Developer Advocate at Cisco.. My journey pretty much started by accident as a lot of the things in my career have, I never sought out to be a developer. I never studied computer science. I actually majored in Management Information Systems. And I got into software development through an internship, mostly because I needed a way to pay for college.  

So, I found a student internship that focused on software development, and found out that I actually liked doing this stuff as I was interning. And from that point on, I worked at several different medium to large sized companies around the Las Vegas Valley as a dotnet developer, then slowly kind of merging into the JavaScript land and some of the other front-end frameworks.  

Before, again, accidentally landing at developer advocacy, prior to Cisco, I was actually at MongoDB, also as a senior developer advocate. And that’s another story you can ask me about. I kind of fell into it, because I was actually sharing my journey on conference speaking. And MongoDB reached out and said; Hey, would you like to apply for this job? And I said, is this a job?  That’s super cool. I didn’t know that. And so, I did. And that’s kind of how I got to this point in developer advocacy. 

Ayan  

Well, that’s really interesting, because given the fact that you did not know that this sort of job exists and  now you are fully embracing it, going out to different conferences, giving talks and actually evangelizing for the company that you’re working for. So, tell me a bit more about that internship. Was it basically about learning development? Or was it more about how computer science in general works? What sort of internships do you have back in the days? 

Adriane   

So, at that time, like I said, I wasn’t even sure what I was going to do. And I actually found it through my student job. So even before the internship, the job that I found was for an IT Helpdesk position. So, if you needed your passwords reset, if you needed help troubleshooting your computer, both students or professors, I was the person you call to try to help troubleshoot that. And it was through this job that I found this internship. So, this internship was focused on software development to help in particular, the university’s Office of Information Technology. And at that time, the language that I worked in was actually VB dotnet, and also working with some Google API’s.  

This position focused on helping the email administration system of the university, which at the time was at Google, we were using Gmail. A lot of that was really learning what development was about because I had no idea so I was very lucky to actually have a full team of all women as my first software development team. And I’ve never actually had that sense, which is kind of funny but focused on learning how to work with SQL and how to write queries that would grab all of the accounts that needed to be either disabled or retroactively brought back if they were, you know, a student coming back. I worked with Google API’s.  

So, with a little bit of front end and learning with API’s, how to work with Google’s interface to create accounts, how to add information, how to send all that information through to Google to administer those accounts for the email for the university system. And then I worked with a bunch of other different people. So that internship was very foundational for me in terms of learning what software development is, what the types of teams you would work with, and what kinds of things you could do. But at the time, the major project I worked on was the email administration system for the university. 

Ayan  

What do you think about the influx of the next generation of software developers and computer science enthusiasts coming into the industry without necessarily having a computer science degree?  They’re pursuing some certifications or training programs, and they are very well developers, they are able to find their way in open source contributions and find their place into the industry. So, do you think that it’s okay to not have a professional degree and use these courses instead?  Is it very much possible to build a career and grow it? Or do you think that the degree would also be helpful? 

Adriane   

I think there’s a two-part answer to that for me in the experience I’ve seen so far.  

​​​Number one, you absolutely do not need a computer science degree, I have seen that throughout some of the best developers I know, who don’t have a computer science degree, they really just have a knack for learning. They want to know what the latest and greatest is, or they pick a specific topic that they really want to get well versed in, and they just continue learning as much as they can, building as much as they can. You absolutely do not need a computer science degree to be successful. That’s a fact. 

The second part to that answer is, that this doesn’t mean that a computer science degree is not helpful, or that you don’t need it, I think if you have both, you actually put yourself forward and you have a leg up on a lot of other developers who also have a degree by doing the courses by doing the extra building by doing the extra projects. Especially coming from my own experience, I did management information systems, we still had development, networking databases, a lot of that foundational coursework, in addition to business courses. Where I don’t have the background is in data structures and algorithms or some of that other foundational computer science thinking. But I added that later on, or working on that, either for preparing for an interview, or using it in the job as needed. And that’s still very much useful, it’s still very good to know how things work under the surface, it’s still good to know, to have that way of thinking. It’s still very, very beneficial to know those topics. Even if you don’t learn it beforehand, or learn it, officially in university, it’s still very, very helpful. And you’ll still probably make use of it sometime later on in your career. 

Ayan  

Given the fact that you also have courses of your own now on LinkedIn learning platform, do you see a lot of the people who are purchasing these courses have a professional college degree or like, what sort of ratio do you see? Or is it something that you don’t care about? And you’re like, “Okay, everyone’s welcome. I don’t care if you have a degree”. 

Adriane   

At least of the other instructors that I’ve seen, it runs the whole gamut. There are people who don’t have college degrees, there are people who have PhDs and are teaching. Again, I think it comes back to how passionate you are about it, how much experience you’ve had with the topic that you’re trying to teach.  

And honestly, there are a lot of courses to where there are people who are like, “I want to learn this subject and the best way to learn it is to teach it” so you can learn it but when you go to teach something, you find all those little bits and pieces of “okay, so I need to explain this topic to someone who doesn’t know it at all.” And that’s kind of where the deeper learning happens because you need to go that extra mile you need to go and see what are the pieces that are missing, that you know that you need to learn this topic well enough to be able to be comfortable to teach it. So college degrees, again, are not necessarily necessary, but they’re not a bad thing. You know, they don’t work against you. But it’s absolutely possible if you don’t have it. 

Ayan  

Coming to your current role as a Senior Developer Advocate, as you mentioned back, you were just giving talks in different conferences, because that’s what you loved about it. And MongoDB kind of picked it up from there, and you made a transition in developer advocacy, what would you say is something that motivated you to continue in this career journey, and what is that you really love about being a developer advocate from your day to day role? 

Adriane   

I was working as a senior developer, and working on a migration from Azure or on prem to full cloud as your platform. And at that time, I was learning a lot. A lot of companies, they sometimes offer stipends for employees to kind of put towards learning and development. So that could be going to a conference, going to some courses, etc. At that same time, I went to a conference, and I was watching somebody talk about a particular topic, specifically how to build pipelines and Azure DevOps. And I was thinking to myself, this person is really bad. They were not a great speaker, the talks that they had, or the content that they had, they’re basically just reading off of the slides, reading bullet points, and there was not a very good talk.  

It was at that moment that I said, “what does it actually take to become a speaker”? How did these people get up there because I felt I could do a better job than that person there. And so, I researched it and found that at a lot of these conferences, you actually get in by applying and you just create a talk proposal and tell them, “this is what I want to talk about”. This is what I think will be useful for the attendees of your conference. ​​I said, “you know what, I just felt like, let me just try to submit and see what happens.” And I did and at that time, I got accepted to seven conferences. So, I freaked out, because I’m like, oh, my gosh, you know, I’m a nobody, like, nobody knows me, why would they accept me. But that was kind of the first point that I said, that made me confident to think people actually want to hear the topics that I’m proposing, the way that I’ve written my proposal is good enough that it’s caught the eye of the committee and said, “this is good to put into our agenda.”  

That is what kind of kick started everything. And I’ll be honest, a big part of why I really love what I do is that I get to travel and I get to go to a lot of different developer communities and talk to all of them.In college, I actually was a pre-International Business major, because I thought that would give me a job like Anthony Bourdain, you know, you get your own show, you get to travel to a place, eat everywhere. And when I learned that wasn’t the case, I needed a plan B. It’s, it’s kind of funny how I’ve gotten into developer advocacy, because I am kind of fulfilling that in this role. What keeps me going in this role aside from the trouble and aside from getting to meet a bunch of different developers around the world, is that there’s a lot of different ways to teach something.

​​So for example, let’s say I had to create a demo or kind of give a workshop on something that I don’t know at all, it’s a new product, or it’s a new feature, or it’s something I may not be familiar with, there’s an opportunity to learn more about it to see what developers would find relevant about that product or find why it would make their experience a lot nicer, a lot more productive.

Finding all the pieces that are relevant to developers and bringing that to the forefront. So doing a lot of that and having a lot of different avenues to do that: conference talks, videos, blogs, slabs, a lot of which Cisco has in sandboxes there’s so many different ways to teach something. I think that’s one reason why I do like this role is that, if I ever get tired of conference talks, which I don’t think I ever will, there’s always another way to teach something and provide more resources to all kinds of learners. 

Ayan  

That’s the best part for developer advocacy. You get to meet a lot of people who are actually like-minded and there are a lot of collaboration opportunities that come up when you are hanging out with those people. When you are not traveling, how’s the usual day at work in Cisco looks like, like what are different things that you’re currently working on? And of course, when you’re not traveling, what are your day-to-day things that you do as a Senior Developer Advocate that Cisco. 

Adriane   

So, as with all developer advocates at different companies, that can mean a whole bunch of different things. For me personally, I’m actually leading one of our OKRs which very much aligns with how I actually first felt when I joined Cisco, because, you know, when I would tell people, I’m going to be a developer advocate for Cisco, they’re like, “okay…” like, you know, and that’s part of my job is to kind of help bring what’s relevant and show that Cisco does have a lot of API’s.  

And they do have a lot of open source tools that would be relevant to developers, you just don’t think of them because, you know, that’s part of what we’re trying to change is Cisco is relevant to developers.  

Ayan 

You mentioned the good part of developer advocacy. Now let’s talk about some challenges that you find in a day-to-day, you know, running your developer advocacy program, what are some challenges? And what are some aspects that you think are hard, and you’re still working on? And as a developer advocate, I understand that there are a lot of things that you’re doing at a time attending a conference. At the same time you’re maintaining documentation, you also have to update the community members about what’s happening. So, what are your challenges at Cisco being a senior developer advocate? 

Adriane   

I’ll say these are pretty common to most places. So, this isn’t just Cisco in general. But what I’ve found as a developer advocate is that you are kind of expected to do a lot, you are the community manager. You are the person that goes to conferences, you are the person that is maintaining documentation. You are the person that’s creating tutorials, and if you look at those four things I’ve mentioned, those are all jobs in and of themselves. Those are four separate things that four separate people could do. But there’s this expectation that developer advocates are expected to do it all.  

The risk of burnout and just not knowing what is a priority, because everything is a priority is very difficult. So, it’s very much helpful to kind of align, you know, with your manager and say, what is the top priority? What are the things that I should be working on, then even better, if you can focus on a couple of those things, the better. What I tried to do, because I know, as you know, in the experience that I’ve had is that you kind of just get asked to do a lot of different things is that if you can make a way or find a way to focus on a couple of those things, it’s easier for everybody involved, because it’s easier to manage your time, it’s also easier to focus on a few of the things that you actually really enjoy. If you like creating videos, for example, and you like creating content, that alone can take up a lot of your time. You have to prepare for that, you have to research, you have to write the scripts, you have to film the things, if you’re doing video, you have to edit it. That’s a lot of work. And that’s just one task. 

 So again, if you could focus on what you want to do, it would be a lot easier for everybody involved. Another thing that’s kind of difficult in developer advocacy, that if you are the person that’s on the road, travel is glamorous. But if you’re on the road for like three, four weeks, two months, you get tired of it, you get tired living out of a suitcase, you miss your own bed, the jet lag is real when you get back, trying to coordinate different meeting times trying to still keep up with your meetings and tasks while you are on the road. It’s very, very difficult. So yes, it is nice if you get to go maybe once or twice a month, but if you are on the road a lot more, it’s exhausting. 

Ayan  

I see that you’re also involved in mentoring in different communities. And as a developer advocate, mentorship becomes a part of the role, community members look up to you for things that you could help them with. But you have also been a mentor at code.org and glue code. So, tell me about what motivated you to mentor the next generation of developers and people in tech? Is it something coming from the love of teaching? How do you see mentorship opportunities? 

Adriane   

That is very special to me, because it started with when I started to share my own journey on Instagram. This is when admittedly, Instagram was a little bit bigger, maybe it’s still big, I don’t know. But when I was in that role, right before I actually moved into developer advocacy, I just started to share my day-to-day of what I did as a developer because I didn’t see a lot of people like myself. When you say developer, the first words that come into your mind are probably they’re a guy, they like to wear hoodies, and they’re all in black. And they’re in the dark, and they don’t like to talk to people. There’s this very, very single one-sided vision or image of what a developer is supposed to be. And it said, that’s not the case. I’m a developer, and I’m completely opposite,  I like to dress up. I’m a woman, I like to talk to people not so much. But I do like to talk to people, I’m not in a dark basement or whatever hiding from everybody. I wanted to change this image of what a developer meant. I started to do that in my own way by sharing my journey on Instagram. And that actually became a community in and of itself.

T​​here are a lot of other girls and women who had reached out to me and say, thank you so much for sharing your journey. I didn’t know there were other developers, or I didn’t know there were Filipina developers.  

I also like sharing that I’m Filipino descent. I’m Filipino-American, but I’m very proud of my heritage. And so, finding other Filipinos because in our culture, it’s very popular to kind of go into the medical route, either to become a nurse or a doctor. And I was not one of those people. I did not want to become a nurse. As a Filipino person, you’re kind of like, well, what do I do? Like that’s kind of the only path that is set forward for me. And so again, it’s like; Hey, here’s this other path that is a really fulfilling and satisfying path that you can be proud of if you don’t want to go into the medical field. This kind of naturally extended into sharing my story and kind of mentoring others at other schools in Las Vegas. Kind of just asked me; “hey, we see that you are there, you’re a part of the code.org list of mentors, would you mind coming into the classroom?” And just spending some time with these, first graders, fifth graders, third graders, high schoolers, I definitely would love to talk to them. It’s really interesting to go into those classrooms and say; “Hey, I’m a software developer, this is what I do. This is how you can get there. Here’s what you can do with code.” And it’s really, really fulfilling to see especially the little girls who are like, “you’re a software developer?” I’m like, “Yep, I’m a software developer, you can be one too.” Showing everybody that route, and it’s something that’s really fun, and can offer a very fulfilling career path. I think that’s why I like doing it and continue to mentor as much as I can. 

Ayan  

Giving back to the community and not just in terms of development, I would say I personally feel that every developer should go out and also try speaking in different conferences, maybe local meetup groups. You just mentioned that you sent out the call for proposal and you got selected by seven different conferences. So, tell us about that. And if someone is a developer who is working on some new technology, some new stack, andthey just want to, take it forward and speak about it at a conference or a local meetup group, and they are a bit shy about that? How would you say that they go about it, because you’re also coming from the same experience? Because you’ve seen someone giving a talk and you say, oh, I could do better than that. What are your views and advice for the people, first of all, why should they do it and how should they do it? 

Adriane   

That it’s a great question. Yes. If you want to do it, absolutely do it. The biggest question I get is I’m kind of scared or I don’t know if I can do it. Or another thing I hear is, oh, “this topic has been done so many times, like, why would I want to give a talk about that?” And what I’ll answer is, ​​

everybody may do the same topic, but they don’t say it or explain it in a way that you will, because your voice is unique.  

If you take a look at all the conference talks that you see, or Meetup group topics, you will find what’s common among them. There are a lot of JavaScript topics, a lot of the same JavaScript topics, a lot of the same React topics, there are a lot of topics that are done over and over and over again. But why do you still see them and it’s because different people have a different way of explaining it, and may have a better way or novel way to explain it. They will never go out of style, especially if they are hot topics or topics that are here to stay in the tech industry. So, if you think that is something that you are working on, if it’s new to you, that’s still a very valid perspective that should be shared. There are a lot of other people who can relate to you. Don’t let that be something that stops you from sharing in order to get started.  

There are two approaches to this. There’s like the Big Bang thing, which is what I did. So, I just went straight to let me just apply to all the conferences that I think would be relevant and where I have something to share and see what happens. And I got accepted to seven, and you kind of just go in there and you do it. ​​

The other way, if you want to do it a little bit more methodically and build up to it is, meetups are a super great place to kind of get started because it’s a smaller crowd, local meetups are usually easier to get to.

And people who run these local meetups are always looking for people to speak, they have a community already built, usually much nicer in terms of being more flexible in what you want to talk about. And it’s the local community. Once you do that once or twice, you get more comfortable with the community, you get comfortable with the audience, you get comfortable with what it’s like speaking to other people. And so maybe you work your way up. Maybe apply to a conference that’s in your state and then slowly but surely as your audience grows, I think that’s one way people find the confidence to kind of get all the way to the conference level where they’re speaking in front of 1000s people. So that’s another way to do it. 

Ayan  

And I would add that even the most experienced speakers from the developer community are still sometimes being rejected from these conferences, and that’s totally fine. You don’t have to be heartbroken about that. There’s always a next conference or a next meetup, where your talk would be the perfect fit, and you just have to keep doing it.  

Ayan  

Do you have sort of mantra when it comes to community and building community or scaling community or, you know what’s your take on that because I feel that being a developer advocate, empathy is a really strong suite that every developer advocate should have, they should understand the needs of the community and be able to advocate that within the company. And this is what we need to prioritize.  

Adriane   

That’s a great question. I think, personally, I’ve kind of focused, as most people would, with the communities that they align with, and the communities that they would like to grow into or be a part of. So, I’ll explain that by saying, when I mentioned how a lot of other Filipina girls and women would contact me and say, “Oh, you’re a developer”, you know, they would ask me questions similar to how you are doing right now, like, how did you get into developer advocacy? What is being a software developer like? How do I prepare for an interview? How do I write a CFP or Chuck proposal? How do you not get nervous when you go up and talk all of these different questions? They come to me, partly because, my face is out there. You know, I’ve spoken at conferences, I write content for companies, I have a book, my name is out there. So, people come to me. But in the beginning, I purposely intentionally tried to find other Filipina software developers to grow that community. I know that we’re out there, I know that we’re not all in the medical field.  

It’s part of showing that there is this community that actually exists and wants to be part of the larger tech community as a whole. And so that focus has led me to find other Filipina speakers who are in tech who are around the world. And that’s been a really great part of focusing on this community. There’s Jonah in Sweden, who is also a speaker who focuses on Azure topics. There’s Marylog in Denmark, and I’ve gotten the chance to meet Marylog but not Jonah yet- I hope to meet her sometime this year. And even though we haven’t met, we still have a friendship that goes across the internet. And we support each other, if we have a conference that’s happening, and they’re looking for more speakers, I reach out to them and say, “Hey, here’s a great opportunity for you to go speak at this place, because you have the expertise, and you probably would enjoy speaking here.” Those kinds of relationships,and then connecting people to the relevant places, I think, is a really big part of that community building. it’s one thing to meet it and grow the network for yourself, it’s another to kind of say, “Hey, you are a perfect fit for this particular thing.” And then that community kind of naturally grows because you’re connecting people.

​​I think if there’s any mantra of mine, when it comes to community, it’s, I kind of meet the people myself first, and then I see if there’s a fit for them.

And then I try to connect relevant people together to grow that network even larger, where those connections may not have ever been made. 

Ayan  

When it comes to communicating ideas, developer advocates, usually write blogs or make videos or, you know, it could be like, I’m just going to give a talk out there in a conference about this topic and use that conference recording to put it out there in my community. So, what are your thoughts on this? How do you decide on this? Baes on the topic, like this topic is best fit for a blog. Or this topic is better explained when I share my screen, so I’m going to make a video about it. So how do you go about this? 

Adriane   

I think it depends. And that’s the famous answer. For me, I think it comes from number one, what does the community want? So that could mean what topics are most relevant? What topics are they searching for? What do they want to learn, because you may be really interested in some super niche topic, but nobody wants to learn about it for you, great. But as a developer advocate, you want to serve your community you want to serve the developers that you are creating this content for. And so what’s number one is what does your community want? What do they look for?  

Then once you narrow down those topics, then it goes down to how do they like consuming it? So, you may have a community that loves blogs, they like reading, they like step-by-step tutorials. And then you may find there’s another subset of that community that actually prefers videos. So, this is where creativity comes in. Because usually when you create this kind of content, you probably do both to cover both of those communities. And sometimes the topic lends itself well to having both. So, you may have a video that has the screen capture and you’re doing a voiceover of, here’s how you do something. But then you have an accompanying blog that has code snippets that’s easy to copy and paste so that they can work alongside the video. So, it depends on the topic. Sometimes if it’s a bit more generic or just an overview, then yeah, maybe a video is fine, that will be enough. Sometimes you just do a blog. But in most cases, most of the topics and content that you create are going to be in all of the different forms, so that it serves the majority of your community and the way that they want you to consume. 

Ayan  

I’m really excited about the things that we are going to be doing together. And that includes some blocks coming up for the Developer Nation Community. Would you also like to talk about this so that our community members know what they could expect in future weeks or months? 

Adriane   

This is something I’m super excited about, we have an open-source tool called API insights. And it’s a way to help developers pretty much create better API’s. And what I mean by that is, it’s a partly static analysis tool. But it’s also a tool that helps you look into your API’s. And it essentially calculates a score. So, if you like games, and you like gamifying things, this is like the perfect thing for you. So, as you’re writing your API, we have an engine that statically analyzes your API endpoints, and it checks all of the different versions of your API against, say, an open API spec, and it calculates a score, how well are you doing against these specifications, and that concept is wrapped into this tool. Tthe next blog that I hope to write for developer nation is an introduction to how to get started with that tool, specifically how to install it on VS code, because we have a VS code extension for it and to do just a couple run throughs of how you would use this tool in your developer workflow, and then hopefully, a follow up blog on how to integrate that into your CI/CD pipeline with GitHub actions. 

Ayan  

We are coming to the end of this podcast so I’m just going to ask you a couple of last questions. The first one being what are you most excited about in today’s tech world? What excites you, when you see technology happening here. I know, CES is happening in your city at the moment. And then we will have  Mobile World Congress next month. So, a lot of amazing things are to come. But what excites you the most in the tech industry at this present moment? 

Adriane   

So, one thing that I’ve been following closely, I don’t think it’s there. But I think we’re starting on is the prospect of being able to own our own data. And what I mean by that is, I think it’s pretty understood at this point that a lot of different companies have a lot of data on us, they know us very, very well from what we search online, to how we shop, to what devices we use. And a lot of people don’t necessarily understand that there’s this really large profile about us that unwillingly most of the time they have collected about us. So there are movements that come to light and say; “Hey, we should take charge of our own data of our own profiles that have been built up.” And are very excited at the prospect of potentially owning our data. And you know, if we actually wanted to sell that data to the companies ourselves, why not make a buck off of our own data, right?​​

So, the people who want to be super private can have autonomy over their data, and then the people who want to make use of that data can.

So, it’s always been talked about, and it’s something that always interested me. But I think now it’s becoming closer to reality, because of all of the protections that we have in place. And because a lot of it is being brought to light. So that’s what I’m excited about 

Ayan  

100%, I wouldn’t mind monetizing moisture data in my room any day. Why not? All right, so I have the last question for you. Because this podcast is mainly focused on inspiring people from the career trajectory of our guests. For someone who is currently doing some sort of development and they want to make a transition to Developer Advocacy, what sort of advice would you give them, where can they start? And what are the different places they can hang out, what are the different skills that they should learn? Do they need to be a really good speaker, and really good writer ? 

Adriane   

The developer advocacy is a very exciting thing to be thinking about as a developer. What I would say to those who are considering it is if you find yourself sharing in a particular way about what you’re doing, hone in on that.  

So, for me, the first thing that I wanted to do was share via speaking because that’s something that I was used to and wanted to learn more about. Was I a great speaker before that? No. I, again, went into it headfirst and found out that, hey, I actually don’t mind talking in front of 3000 people. I still get nervous beforehand, but I enjoyed doing it. It’s something I really like to do. What I would say is, for those who are thinking about a career in developer advocacy, or want to switch, find what it is that you’d like to do. If you find yourself creating videos in your off time, that’s what you’d like to do, you’d like to edit videos, you’d like to teach in a way that you screen capture recorded, write the scripts and write those out, maybe you have a way in by creating that type of content. If you’d like to write blogs, really focus on making your writing better, make it more concise, learn all of the different tools, like become more well versed in Markdown or some other writing tool that makes it easy for you to publish on a better cadence, start a newsletter to kind of get into that zone of producing something every week or every two weeks. If you like talking to people, go to your local meetups, Ayanone yourself or organize one yourself, or see if you can help volunteer and be a part of those local meetups because then you get to see what it take to run a meetup? How do you organize it? What does it take to get people in seats? How do you market your event, there are all these different pieces that you don’t necessarily learn until you’ve done the thing. ​​

And so that’s my advice, to find what it is that you’re interested in and find what makes you happy. And then do those kinds of additional things to help you learn what it means to do it, like going to the local events, or continue to write or continue to make videos and then share that with the outer community.

And then you’ll find that there are a lot of people who are wanting to hire you for developer advocacy for that particular thing that you’re doing, and sharing. 

Ayan  

Amazing. Well, thank you so much, Adriane for your time. I really had a fun time discussing everything with you. And I’m sure we will be getting you back in pretty soon for another episode. For now I’m looking forward to all the blogs that you will be sending our way for our community. So, thank you very much again for your time. I really had a fun time and we are  probably going to see you again. Thank you so much. 

Adriane   

I had a great time too. Thanks. 

Categories
Community Tips

Inspiration for your coding journey

In this episode, we welcome Lars Bergstrom, currently Director of Engineering at Google following an impressive career in companies like Mozilla and Microsoft. Lars is navigating us through his career path, sharing his experience and offering useful advice and inspiration to software developers as they plan their coding journey.

Ayan  

Hi, Lars, how’s it going? 

Lars  

Hey, it’s going great. How are you? 

Ayan  

I’m pretty good. So, I’m really excited to have you here. We just started this podcast and having you as one of the few initial guests is really amazing. I can feel right away. So, thank you for doing this. Tell me about what things you have been up to and a small introduction about you and what you have been currently doing. 

Lars  

Thanks for the opportunity to be the first speaker here. I’ve been working with the company for a really, really long time. And I’m excited to see you getting into podcasts and the rest. So, My name is Lars, I’m Director of Engineering here at Android and I work on basically supporting the teams that build the compilers, the tools, and the runtimes that you use to both build the Android operating system, as well as build applications that target Android. So, I’ve been here for a little more than two years now, officially, and it’s been a great new gig to get started on. 

Ayan  

Oh, that’s amazing. So, I’ve been just going through your LinkedIn, and I was amazed to see that  you have worked with some amazing organizations and companies and amazing projects. So, we are definitely going to be touching upon that in a bit. First I wanted to know that currently, you’re working for Google, but you have spent many years in Mozilla.  

So, what would you say would be the different working style for completely open source organizations like Mozilla versus Google, which does have a fair bit of open source such in every project that they have been doing. But still, it’s a company where I am sure there must be some differences. So, could you just tell us about how you feel is different working for Mozilla and working for a company like Google?  

Lars  

Yeah, it’s really interesting, because Mozilla was, or is also not just a corporation, but it’s actually a nonprofit. So, it’s a very mission driven organization, where, you know, Google is definitely a business. And we both work on open-source projects, but with kind of very different goals and very different workstyles.  

Right at Mozilla, one of the sort of hallmarks, there was radical transparency and openness, like in a way that I was not used to, because I’d been at Microsoft before that as well. And so, the idea that not only would the code be open source, but the plans were open source, our bugs were open, what companies were working with our long-term goals, sort of even how the business made money was very open. And that kind of transparency was really interesting and difficult, you know, was a challenge for me, because you get feedback very early on in the process, right, you’re just sort of throwing thoughts and ideas around thinking maybe we’ll change it like this, maybe we’ll change it like that.  

And a lot of the private iteration you usually do in private companies, is actually out in public, for people who you know, and even after 20 years in the industry, you never get rid of that fear of like, oh, my gosh, is someone going to notice that actually I’m an idiot, that I was wrong here that I made some horrible mistake and getting comfortable with the idea that you’re going to be doing this work in public, and you’re going to get feedback from a lot of people. And, you know, the big nice thing about that is that it builds trust, it brought people in early, they felt like they had been part of the conversation. They were part of the journey. And even if they didn’t agree with where you went, in the end with the final decisions for the product, they felt like at least they were part of  that conversation and journey.  

And it’s, very different at big companies. And you have a variety of projects, like you mentioned at Google, I’m fortunate to work on Android where most of what we do is open source, but it has a very different feel, right? Mozilla is trying to get a lot of public contributors off individual developers working on open-source projects to contribute.  

With Android, we want to do that. But really, the key thing is we have over 1200 vendors who build on Android, who want to build commercial products, and they want to participate, they want to contribute, but they don’t necessarily want to share their long-term product plans publicly with it. And so it’s a very different structure of the organization where you’re still open source and you still want to contribute you do as much as you can in public, but you also have to respect the privacy of these companies that are trying to build new products and market and many of these companies are competing with one another. We as Google want to support all of them, and try to encourage them, like; Hey, I know you’re making these changes, but could you put it upstream, like, we think this will be beneficial for the whole ecosystem, and it would be less work for you if you did that.  

And so they both, even open source projects, there’s just so many different flavors of them. And like you said, they’re different at different companies. And it’s been an interesting journey for me to get to learn about how this works, and how you encourage participation, because that’s the key part of open source, right, you’re making an open source, there’s some discoverability aspects, but really, you want participation, you want other people to come with you on this journey, to build products. And how you do that, and how you structure it to make that happen, is really interesting based on your business’s goals.  

Ayan  

That’s really fascinating. It sounds like working in a completely open organization. So the minute you have an idea hit your brain is going to be completely in the public, and you’re getting the feedback loop started from day one. But for organizations, which also have to care about the business, it’s like, okay, we’re going to tease that in, let’s say, next quarter, or next year, but I’m sure that working on the Android operating system, you still want contributors, like you mentioned, you still want people to have that sense of contribution to an open source project, but at the same time, you still want features to be part of the mainline or upstream, and they really would make some value to the operating system. So, is it like something along those lines? 

Lars  

Yeah, and you want to be respectful of the pace that with which people can bring these products to market or adapt these changes,if they’re, in an open source project, you might just push the change out and say; “Okay, we’re changing the new API, there’s going to be new requirements or something else, and we’re just going to land it in the tree, and we’re going to make this happen”.  

And there’s much more of a conversation based on sort of product or business needs, this might not be the most important feature, our vendor ecosystem might want to do the work, but they might not be able to do it for one year. And so, can we make it optional for a bit? How long do we need to keep the old version around? How do we migrate people?  

And it’s really thinking about that story of evolution. And not just technically, how can we do it, but how can we make sure that our vendors can go with it, that our application developers can pick it up in time? How does that whole story work together, and that can be very different from open source projects where you just land a new API change, and as long as it isn’t too breaking, you can just sort of keep rolling forward with it. It’s much more like a consortium there. And then to be clear, we do still get the feedback from our vendor partners as well, where they’ll say, Lars, that’s a terrible idea. Like we absolutely can’t do that, what are you thinking, but it happens in private, at least. 

Ayan  

 So, going a little deeper into your role at the Android project and Google, in general. So, what would you say is like your day-to-day roles? Are you still involved in programming? Or is it more like decision making and project management? And just in general, like, what sort of things have been doing lately for Android? And what does your usual day in a workload look like in terms of technicality when it comes to managing such projects?  

Lars  

Yeah. So unfortunately, in my role, I don’t get to read a lot of code anymore. I try to take some time, usually around the new year to go back, I’ll do advent of code, I’ll try to do a commit or two in the project, because I think it’s important at all levels of engineering management to really understand the tools that your team is working with. And not just the language, but also the CI system.  

What do they have to do when they check in? What tests get run? What do the portals look like? What happens when things break? How do they track down these bugs, it’s very easy, particularly as you get an engineer, to have this kind of memory of how everything was, 5 or 10 years ago, back in the days where you were slinging code, and that can lead to this disconnect between you and the team where you think it’s super easy to get a change.  

And then the team says like, no, you’ve forgotten their privacy reviews, there’s 2.2 million tests that run before you can check in your first change. And so, I do try to do that, but to be clear, I don’t go on any piece of code, my name is not on the owners file, I don’t get to look in the headers there.  

Most of my day-to-day work is really focused around either management work, technical work or strategy. So, on the management side, I’m a people manager. This is why I’m in the role. I often joke about management, I can fix anything else, like everything is tactics and management, they have to like seeing people grow, you have to be personally invested in helping people get better at their jobs, seeing them grow, seeing them possibly go far beyond you, and get into new roles that are beyond where you’ve gone and that takes up a lot of my time. Whether it’s in coaching people, whether it’s in hiring, whether it’s in dealing with organizational structure and making sure that people have a good career path and everyone’s being well supported. That takes up a good portion of my time.  

Tactically, Android has a cadence, we ship new major versions of Android every year. And so tactically there’s sort of a feel to the overall year, right? We have times when we’re making new requests, we talk about the open-source changes and how you make them, there’s a time when we go out to our vendor ecosystem and say; Hey, this is what we’re thinking about doing for the next version of Android. There’s a time when we’re bringing that to Publix, there’s a time when we’re sort of burning down our work and trying to get the fixes out.  

And my job as a manager will really depend on the time of the year for where we’re kind of at in the product cycle. And then finally, the third bit I mentioned was strategic, which is where we’re trying to have multi-year initiatives. It’s very easy to just get caught up in the one year of Android and everything else is the infinite future. But there are some things that I work on, like adding support for new kinds of hardware, or new hardware features, or driving new programming language adoption or new tools. And those can take 2, 3, 5, even 10 years. And so, my job is making sure that we don’t forget about them, that we continue to march them along, that we’re making progress every year. So that when it’s ready to ship, we’re ready as a platform for its adoption. 

Ayan  

So, for a complex project, like Android, I’m sure there are a lot of components that are directly affecting consumers. So, you have to keep them in mind. And as well as developers, because you want them to have updated SDKs, all the libraries, so it makes the job easier. So as a project manager or as a developer in the past, what would you say is different in terms of a developer mindset, when you are creating something for, let’s say, end consumer versus something for to be used by developers, say, a library or an SDK? 

Lars  

So, I tend to think about it kind of at three levels, right there as the Android platform, there’s some set of libraries that we’re providing. And then there are kind of end user features. And each of those can move kind of at different paces, right. With platform level API’s. That is when we’re exposing a new API, it doesn’t matter if this is the Android operating system, or this is when I was at Mozilla, if this was a new web platform API in the browser, or if this was when I was at Microsoft, new things that we were exposing in Windows, those have to be incredibly long lived, right?  

When you introduce a new API like that, generally, it will live until the last device that shipped with it goes out of service. So, that can be 10 or more years. So the amount of care and thought that have to go into those new API’s, and you really want to make sure, because you’re going to be stuck supporting that for a very, very, very long time. But really, when you’re looking at it, that API will be fixed, and you will be supporting it and you will move forward with it.  

Libraries are very different, right, they can move much more quickly. But they have the problem that they have to run on old versions. So, if you’re making a new library for some new camera API that you want to provide to developers, you have to figure out not only how does that work on our device today, but how does that work on the more than 3 billion devices that are in the field right now? Because that’s the first thing that application developers ask you is like, look, I don’t care, these new devices, they’re great. They’re awesome. I’m seeing them all at CES right now, which is when we’re filming the show, but those won’t be in consumers hands, and they won’t be a substantial portion of our market for years.  

So how does this work on a four-year-old phone? When you’re a library developer, you’ve got to figure out both how to do that, and how you are going to help developers update to a new version of the library. Many developers will just drag that first person to the library and then say, great, okay, I got my version of OpenSSL, I can check certificates, never going to update it again. So how are you working with developers and package managers to make sure that they get the new versions that there’s value in that you don’t break them, but that you continue to work with it?  

And then on the feature side, that’s not specifically my area? I support a lot of those teams. But that’s much more user focused, that’s looking at how users are using their phones today and what are the challenges that they’re facing. Usage has changed over time, right? It’s been in the field a long time, I’m sure you have as well. And even if you look at over the last couple of years, the number of applications that people have has dramatically grown. And the kinds of applications that they’re using have changed substantially. They’ve moved from mostly text based social messaging services to more video and short form messaging services. And when you look at it from a product perspective, how does that change how they interact with notifications? How does that change how they think about, using multiple applications at the same time? Are they scrolling through their feed while they’re also doing something else?  

And so it’s not just about these static decisions about what is the best way to display a notification, but it’s contextually within the users life and the applications that they’re using today because nobody buys a phone to launch the settings application, right? They’re buying it for these third party applications and those change every year. That top 10 list changes rather substantially. How are we as an operating system building the features that help those applications really light up for users and users have a good experience that doesn’t feel kind of overwhelmed. Because the decisions we made when people only had a few applications, and there weren’t many notifications would not work very well in a world where most users have many 10s or 100s of applications and notifications are just coming in like a fire hose. 

Ayan  

Talking about that, I’m not really sure if there’s something that you were involved in, but I still wanted to take your perspective on it. I’m sure you’re doing a lot of operating system kernel and middleware stuff. But I just want to understand from your perspective, when do you think a project gets mature enough so it can start having different projects that support itself? For example, like in iOS, the application development used to happen on Swift, and it was Java for Android for a very long time. But the application developers and application flux were so high that they wanted to make it easier. So, iOS moved to Swift and Android moved to Kotlin. 

So when do you think this sort of decision comes into this picture, to take this massive leap forward so everyone is enabled and can feel powerful enough to be a part of this platform as an application developer or as a developer in general? 

Lars  

Yes, so I’ve been through many language changes over the years, right. I was at Microsoft during the .net revolution, where C sharp came out. Now I’m going through Java to Kotlin, I’m going through a lot of the C++ to Rust. And of course, on the website, the evolution that’s happened over there has been tremendous. And I think when you look at it, it’s not about language features, right? It’s coming back to sort of the analogy we’re making about how our users use the application, it’s about the demands changing for what has to be done with an application.  

So whether that’s with Swift, there was also a new UI framework that was coming out that Swift happened to be much better at programming. And so while Swift is a great language, and in many ways, you can say it’s better than Objective C, if there hadn’t also been a corresponding set of framework changes that were much easier to express and faster to author, I don’t know that we’ve seen would have seen the same pickup of Swift that we have.  

And it’s the same thing for Kotlin with jetpack compose, right. Jetpack compose plus Kotlin is kind of the magic, it’s not just Kotlin, although some of the things with nullability checking and async. And a lot of the features that really have not yet made it to Java, that innovation has really landed there and driven the adoption of it. And we see it with Rust as well that, just moving from C++ to Rust, people wouldn’t have done it, if it weren’t for the changing security landscape and some of the dynamics there.  

So there has to be this kind of convergence, like a language on its own really can’t win on the basis of better places to put the semicolons or the curly braces or syntactic sugar, those things are easy enough to backport into previous languages, backwards compatibility accepted, there has to be some other thing that’s tied to it, that’s going to solve some problem that developers are facing or make them more productive that really at least when I’ve seen languages be successful in my career that’s really been it, is that ​​

the language had a name, but there was some set of tooling that came along with it that made developers more productive, that solved real problems for them that caused that or that drove that change across the ecosystem. 

Ayan  

That definitely makes a lot of sense. Taking it to a bit less technical term, I want to  understand what things you keep in mind while you are hiring a fresh software engineer straight out of college, given the fact that you also have to mentor them in the long run and make them ready for the challenges this industry poses. So what sort of things do you keep in mind when you’re hiring a new, fresh graduate and trying to make their way into the software industry? 

Lars  

That’s, I’ll admit most of my hiring is focused on senior people, right? I hire people who hire new college graduates. So I don’t get hands on like, you don’t have to worry if you come in for a new grad interview at Google, it’s not going to be me with 25 years of experience, it’s going to be people who are closer to the code, because going back to what I said earlier, I don’t write a ton of code right now.  

But when I see there’s kind of two parts to it, right? There’s hiring and then there’s what I see makes people successful in the early stages of their grad career that we want to look for. And generally, it’s, can you solve a fairly well defined problem, but where there’s still a bunch of ambiguity? And what’s the algorithm we’re going to use? How are we going to write the code? Can you sort of understand that problem? Ask the right questions around it to hunger to disambiguate, where’s this going to run? Is it on the server? Is it because the client doesn’t have to run fast? How much memory is it going to use? And then be able to decompose that, write an implementation, get it tested and bring it to production quality. And we don’t expect people to be able to do that sort of out of the gate. ​​

But when we’re doing our interviews, that’s really what we’re looking for is, can you take an understand this problem and begin to work on it with some amount of mentoring and guidance, but generally in a productive way where you can do a bunch of work sort of independently on your own, given enough of the structure for what that particular problem is. 

Ayan  

So, problem solving is equally important, as well as optimizing it and understanding where the code ends up running. And so you can make it a bit more optimized for the end goal. 

Lars  

Yeah, and while the goal is getting the work done, this isn’t the big difference, right, moving from a class project to a production environment, is that your code isn’t running in the abstract anymore. It’s not, problem 15B implemented a linked list, it’s implemented a linked list inside of this multi-million-line codebase. That’s a large part of what you kind of have to scale up to is realizing that you have to figure out how your code fits into the system. So, it’s not about writing new data structures yourself. It’s about figuring out what are the patterns used in this code base? How do I make my code fit into this code base, as if it was a part of this overall multimillion line thing. And so, getting used to figuring out how to make your code feel like a part of the system is a really big part of one of the first challenges that hits many new college grads, because most of your college grad or bootcamp work is in the context of smaller problems.  

Unless you’re doing some open-source contribution class, no one’s going to give you a multi-million-line codebase and say, okay, now add this call to add a new field to the database and plumb it all the way through. ​​

And so one of the things new college grads have to be able to do is sort of the there’s this expression like “when in Rome”, right, it’s writing code, maybe not in the way that you would prefer, but in the way that is going to make you show up as a good team player.

That is you, you wrote code in the right style, you wrote the right kinds of tests, you wrote the right kind of documentation, you checked all the edge cases, your code fits in, and your other people on the team go; I’m really glad that you joined the team. Now we’ve got your code and your contributions are good, you didn’t decide that we were going to write this in some other language or bring it or write your own libraries for doing things that were already supported by the system. 

Ayan  

That’s great. I personally feel that apart from just solving the problem, it’s also very important given the scale and magnitude the industry is heading towards and it’s still there, the way by which you collaborate with different people sitting across the globe, and you’re communicating your ideas well, and you feel home when it’s about a lot of people working on a problem together. So, would you like to share any tips when it comes to collaborating with other people on a codebase or a project? Like what sort of things can people in universities or graduates  keep in mind when it comes to working on a project of a scale like Android or even bigger? 

Lars  

I mean, I think you hit it right on the head, the collaboration aspect, and closely tied to that, because of the global side is the communication aspect. And in some ways, it’s making sure that the way you’re delivering your feedback, and the way you’re working with other people comes from a place of humility and empathy.  

So it’s very easy, I write some code, I’m nervous about my code, and then you come and review my code. And if everything you say is technically correct, but it just feels like you’re saying; semicolons are on the wrong line, curly braces are in the wrong spot, your blah-blah like making sure that in your interactions, you’re starting from this place of where it feels like he’s building that trust is hard with other people on even on your own team. ​​

And so how do you really help either provide the feedback or ask questions in a way that feels like you’re working together.

So rather than, if you’re pointing out a bunch of places where the style guide isn’t met, saying; Hey, these are some coordinates, I wish we had tools that handled it. But generally, in the code base, we’d like to put the curly brace here and stuff like that, sorry, we don’t have the tools in place, right? It’s the same message, but it’s packaged up in a way that makes sure that they know you’re not mad at them. But also, that you’re not, this isn’t a conversation, right? We’re not conversing about where the semicolon should go. This is the policy of the codebase. This is how it’s going to happen.  

And similarly, when you’re asking questions about systems, leading with; Hey, I couldn’t figure out how do I call this database method and also requests that it do it in a certain way, asking from a perspective of hey, I couldn’t find it, rather than; why doesn’t this database method have a third argument that’s an integer that tells me how many seconds it should run in, and otherwise timeout, right? Coming at it in a way that feels collaborative. Like you’re having a conversation with people, it’s much too easy.  

Also, it can be very difficult culturally, right? The way that people ask questions in different cultures in the way you’re brought up to be very different and learning to adjust to, in particular International Open-Source kind of norms, or even just US based tech company norms around how you interact with people. Just looking and reading the codebase and looking at other pull requests and other comments to really understand how people do their code reviews and how am I going to show up. 

Am I going to be the kind of person that people want to have on the team and want to involve in conversations? Or are people going to be terrified? Like, oh my gosh, Lars reviewed my code. Oh, man, I’m going to be in tears tonight. And this isn’t academic, right?  

I’ve been managing for a long time, I have seen people in tears over comments they got on code reviews, where the code reviewer had not meant to be rude or abrasive or mean or dismissive, but the person took it so personally, because of the way it had been phrased that they just broke down. And I’ve also seen the other side of it, where people just got enraged, and were like, I can’t believe we have Lars on the TV is a terrible person, he makes these horrible, nasty comments by and then you look at it, and none of it was nasty. It was blunt, but it wasn’t nasty.  

And so that’s really when coming back to your questions about communication and collaboration, just really watching even the subtle, that’s not just the technical bits of this is correct. But the business technical writing standards of how I communicate across cultures and across time zones and remotely with people that I haven’t met in person, because often, you haven’t met people in person in a lot of these settings, particularly during COVID. But even now, in our more distributed settings, and so a lot of the things that you had where, you were running into this person at the watercooler, you went to lunch with them, you had some silly team morale event where you were taking frisbees and throwing them in buckets or something, right?  

Those in person casual activities that build trust, where you can say, oh, Lars is generally a good person, that would normally paper over a lot of these communication difficulties don’t exist in these modern environments, and modern highly distributed workplaces. And so, you have to work a lot harder in your communications to build up that trust over time, because you don’t have these default mechanisms in person that normally used to handle it in what I would call the olden days. 

Ayan  

Yeah, that sounds like being part of the Linux kernel mailing list and not taking it personally, is a great practice. You mentioned empathy, and I couldn’t agree more how important it has been to ensure that everyone is having a healthy environment when it comes to ‘contribution’, and everyone is being heard of.  

Do you also have some sort of a personal mantra when it comes to managing people and or being a stakeholder in a project of this magnitude? And do you have some sort of things that you could share, apart from being kind. So, what would you say that something that we could learn from? 

Lars  

Some of this will not be very surprising, I am very tolerant of ignorance. We all start out not knowing things, it’s going to take people a very long time. ​​

So, make sure to be patient with people as they’re learning new areas, but do not be patient with people who have communication challenges.

So, the minute that you see one of these patterns and when you’ve been in the industry enough, or that you can see some of these and sometimes it can be misspoken, like I said before where it’s too abrasive, it can also be not noticing power imbalances.  

The feedback that I give to one of my peers is delivered in a very different form than the feedback that I give to somebody who is a new college grad. Because,  we like to be as flat organizationally as possible. But the reality is that there are power imbalances in these places. From a management perspective, one of the things that I do, and one of the things I require from my managers is, when you see a communication pattern, you address it privately and immediately. Like this is one of the most important points of coaching feedback, like the mentoring and the code stuff we can get to, when we get to it, if people are writing bad code, we’ll get that fixed, there can be a long-term arc there, we can send people to training. But when you see these sorts of communication issues, or these interaction issues, you need to dig into that immediately.  

As a manager, that’s one of the things you notice, as you’re on a video call, or you’re seeing these PRs go through, and you just kind of, you’re noticing, like certain pairs of individuals, or certain teams that really don’t want to try to route around each other and stuff like that. And from a manager perspective, I push on that. And I’m like, you have to nip that in the bud right away. Because those are the kinds of things that if you get it early, you can address it, right? If you wait until it all blows up, like people are leaving the company, or they’re leaving the team at the very least, you may even have an HR issue on your hand where it escalates. And then somebody says something that really shouldn’t be said at work. And now, it’s a thing, right?  

And it’s important because as a manager, people try to hide this stuff from you, right? I don’t want to bring it up to Lars. He’s busy. He’s not going to handle it. But everybody on the team sees it. They’re like, ‘oh, my gosh, Carlos and Steve are going at it again. Did you see PR 11297? Oh, my gosh, get the popcorn out’, right? And it’s not good for the team and they’ve all been seeing it for a while. So, by the time you see it as a manager, even as a smell, that seems probably been sitting on it for a while and just hasn’t brought it up to you. So that’s really my biggest man.  

One thing because if you have a team that is gelled and productive and is working well together, that tends to lead to higher quality outcomes, more predictable engineering schedules, more trust, they’re willing to tell you that things are off schedule. I don’t mind, things are always off schedule, right? It’s software engineering, right? Despite engineering in the name, we do not have the delivery of other engineering fields that have real strict schedules and real deadlines. We don’t have that in software. And just as long as I know, early, we can adapt our schedule and stuff like that.  

But when you get into this toxic environment and low trust, there’s really nothing you can do as a leader to bring it back on track that isn’t really a nuclear solution, completely restructuring it, removing teams that are no longer working well together. And by that point, that’s the worst-case scenario, that basically stalls all work, you’re rebuilding the whole team. So, if you get that right, like, generally, as a manager, if your team is working well together, your job is pretty easy. They’re working, they resolve issues on their own, they figure out problems, they feel comfortable reaching out to each other for help. There are very few things that really escalate to you and you can focus, when I was talking earlier, you can focus less on the tactical bits, and more on management, how am I growing the team and building their skills, and on the strategic, what are we doing in the long run, because when your team is not running well, the tactical did everything is going badly, that ends up sucking up all your time as a manager. 

 And then you’re not spending any time growing people on the team or are working on developing their skills, because you’re so busy handling the technical bits, and you’re not working on any of the long-term needs of your business or your users. Because again, you’re just trying to get product out the door and meet these hard deadlines. 

Ayan  

That’s great advice. I personally give a lot of credit to communities when it comes to learning these sorts of skills, technical but even communication and collaboration. So, with you back in the time, we’re part of, let’s say, some community, some meetup groups that you used to hang out with the people who have the same interest. If you could just share the communities that you were part of, and maybe you are still part of.. I’ve seen that you’re still part of the Rust Foundation Board, that itself is a huge community and Android is a huge community. But back in the days, when you were still finding your ways around the software industry. Would you say that communities have also played a huge role in that? 

Lars  

Yes, and finding that intersection of your interests and others that you can talk with to get an outsider’s perspective, because you’re going to have the natural communities around the work that you’re doing at work, but trying to find what is local and interesting to you where you can participate. And it’s as much about building your network and talking with other people.  

Because particularly early in your career, you can watch the talks, you can listen to me on a podcast or stuff like that. But you don’t really have a sense for what would like to work at a start at this exact phase in the company. And people can talk in very broad terms.

​​But going to these communities, local meetups, in particular, around your areas are really great for getting a sense of not; what are startups like in general, but what is one person’s experience in a very similar role at a startup? And that grounding, that very concrete set of discussions there can help you to explore and understand what your other career choices are, whether it’s either; Oh, boy, that sounds really great. Or boy, I really dodged one not going to that startup that gave me an offer as well.  

I think that’s what can be useful because you can find people who are at a similar stage or the next stage of your career to sort of learn from as you’re looking for that next one. And of course, as you become more senior in the career, maybe you’re the one who’s a little bit more senior talking to people who are junior and trying to help them navigate their path through a lot of really hard choices in your career. We have an abundance. I mean, despite the little bit of a pullback going through right now. You know, software engineers have a lot of choices for where they go next and what their next step is, and really understanding concretely, what could that look like, for me and what I like it is something you can really only do in these communities to understand whether it’s work, or whether it’s going back to graduate school, or whether it’s taking some time off and volunteering. How do I come back after I do that, those local communities are what gives you the story, and especially if the local bit helps you really bring it in because the things that are relevant to people in the Bay Area may not make as much sense in Chicago or San Paulo, or in Madrid, right? Each of our hiring pipelines, the environment, the expectations and the norms are very different. And so, making sure that you’re using those local communities to really get a good sense of what it would be like for you. 

Ayan  

Talking a bit more about the work that you’re going to be involved in the Rust foundation in general is like the new hottest kid in the block. So, with Linux adopting the Rust contribution, and now with the Web3 smart contract Solana ecosystem, what is the role of a general board member apart from influencing where it’s heading? Like, what sort of things are you responsible for in that foundation? 

Lars  

Well, I’ve been fortunate to be on this journey with Rust for a very, very long time, right? I joined Mozilla in 2016, when we were sort of just starting all of this work, and got to work on the new server, web browser. And when we were working on, Rust is just a new language for better implementing parts of the web, and then trying to see its adoption and seeing its growth.  

And really coming back to your question about the Rust foundation board member, like where we’re at right now, in the early years of Rust, we were just, can we even ship a piece of code to a real user that’s in a production device? We didn’t even know, right. And work with all the tools with the debuggers work with the would we be able to profile it? What would happen if the code crashed? Does it interoperate okay with all the existing C code, because C code is not going anywhere, right? It’ll be here long after I retire. It was really about answering those questions. And now with sort of the goals of the Rust Foundation and the project, it’s really asking, how can we grow its usage, right, as you mentioned, large tech companies, very tech focused places that have technology at their heart, have and are adopting Rust.  

Now, I won’t say there are no challenges, right? Interoperability is still hard. How do we train people? Could the language be more economic? Does it have all the tools, it needs all the libraries that are needed? Those are still big, open questions, but we have funding and support for a lot of that. 

How do we get it to the next group of people, that is the companies that are in other areas where their core business is not technology, but technology is at the heart of it. How are we helping them to adopt? And what are we doing to make sure that they can build the confidence they need that they can not only use Rust, but trained developers manage a team of Rust developers? How do they interact with their C++ developers? Where are they going to get training? In a lot of these industries, they care about certification. That’s not something that is really top of mind for a lot of high-tech companies. But it’s really core for a lot of the businesses that have a larger swath of developers supporting the business.  

How do I know this is a certified Rust developer that can do this work? And I’m not saying that’s an area we would necessarily immediately get into, but how can we meet the needs as Rust expands to these new companies and these new businesses. At a time when our demands on software are really scaling up, you may have seen the new executive orders from the US government around securing your supply chain, being able to verify every piece of software that went into your end product before it goes to the government. So, how are we scaling up everything that we’ve done with Rust into all of these new into sort of that next year of adoption and usage. And so, it’s exciting, but it’s a very different set of problems than when we were worried about whether the debugger would be able to show local variables in the stack frame, which I intimately remember breaking every three weeks, right? And right now, we’re not at that point anymore. 

Ayan  

So, from your Mozilla days, I’ve seen your work a lot in augmented reality, virtual reality, mixed reality sort of things. So that’s an open-ended question. Do you think that anytime we’re going to be sitting in Metaverse sharing a small circular table and having this sort of podcast? 

Lars  

I hate to play the definition game here. But it really depends what you mean by Metaverse like if you’re if you’re on the far end of the Sci Fi spectrum, which many of the folks I’ve worked with are, where I’m in a sensory deprivation pod, and I’m living in, a fully digital world having my meetings, I think we’re pretty far off. If you are looking at it more as how am I interacting across mediums with virtual representations of people to perform some task, whether it’s a conversation, as you mentioned, like this one, or that, I would argue we’re already there for a lot of it. And a lot of the work is really around how we anchor the use cases.  

So, when I’ve seen the growth of the technology over the years, right, we went from VR where it was just for gaming. And then the next explosion was really around video consumption and 360 interactive content. And then the next explosion was around social platforms getting together to play games and hanging out. And then the next explosion was around exercises and fitness during the pandemic. And when I looked at each of these things that brought in millions more users, there was some technology component, there was some element of the devices that got better at something.  But it was paired with some specific use case. There was something people wanted to do in the virtual space, either alone or together and were enabled by this technology that was richer than what they could do in the virtual world and so, or in the physical world today with the existing set of technologies.  

So, when I look at the roadmap here, and the metaverse, I’m much more interested in what are the new capabilities around remote collaboration around what kinds of conversations we can have. When we talk about Mozilla and some of the stuff that we were building, there was this Hubs, proud of that project which continues to grow, very proud of the work that team is doing there. One of the things that I thought that was most interesting there, that hadn’t really occurred to me was that audio was really the key more than any of the visual aspects. Because when we have a conversation like this talking heads on a screen, really only one person can be talking at a time. And so, the key takeaway from the products we were building there was that you could have multiple conversations, because if we had eight people in the room, they could move off into corners. And just as it did in physical spaces, you could do that.  

And so when we think about okay, so now we can have meetings where people are breaking out and coming together, something that’s really hard to do in our modern Chat programs, but it’s very seamless within this virtual environment, like okay, now, now we’ve got… that’s a product, that’s a feature, that’s a thing, we can now do a new capability that we have as people that pulls me into these devices, because these devices are really high friction, right? The biggest question we had around the products was:  what are we going to do that gets people to put them on their face? Putting these things on your head even with the most comfortable headsets is just not pleasant. I mean,  I don’t like wearing glasses. And so what’s really going to get us there in the VR and AR space, and what are those really key use cases that are going to light up that are not just an occasional thing, it’s not once a month, it’s maybe once a week, or maybe it’s a few times a week, to the point where it becomes daily. And once it becomes daily, ​​

I think coming back to really answer your question, it’s once we have use cases that every day are worth the friction of putting on devices that require more work than just walking up to a screen. That’s sort of where we’re at a point where I would say, we’re now in the metaverse.

I don’t think it’s like a sacred long game, it just attracts lightning bolts in a way. But what I’m super interested in is how we are helping people do new things that are difficult to do today that are facilitated by the set of technology and services.  

Ayan  

Do you have a book that you think everyone should read? 

Lars  

Well, number one, so I’m a longtime supporter of public libraries. I love donating to them, I love volunteering with them. And so, I don’t want to get super caught up. Like all reading is good reading, like building the habit of reading is the most important thing. And so don’t get too intimidated by you have to read this book, you have to learn this technology. ‘Hennessy and Patterson computer architecture book is the only way you can learn architecture; this is the only way you can learn a language’. 

Like if you find things that engage you the progress, the learning, the thinking is the most important part. Getting out there and supporting your local libraries is really important from my point of view. But to answer your question more directly, because everyone does have sort of one book they’d like to recommend sort of in the people management space. I really love this book from the 80s. It’s called Peopleware by DeMarco and Lister. And if you haven’t read it, it’s just a fascinating read, because they did a whole bunch of basically productivity studies on developers and their work environment and what makes not only developers, but teams really be successful. And many of the things that came out of that book are things we still puzzle over today and get confused. It’s actually the origin of the term ‘10x developer’.  

It’s interesting to go back and read it, because they were doing these productivity studies on developers using some coding tests, and was really interesting, because the thing that came out was that the thing that contributes to being a 10x developer is whether you work in an environment with a mostly quiet private space where you are not interrupted during the day, there was no other control, it was not related to intelligence in any way. It was not related to your degree, it was not related to your background. It was solely were you able to build your skills in this craft and in a place where you are not disturbed. And you are able to do work, like real work, whether it’s flow state, like people mentioned, and it’s been twisted into this really weird techno abrasive techno nerd thing.  

And it’s interesting to see that journey, especially in an environment where we’re looking at returning asking people to return to the office, and many of these offices are open floor plans, and are very noisy, and many of our changes in technology have this sort of hyper aware like, are you on chat, we just opened a bug. Did you read the bug comment? Did you respond to it? And a lot of the data that we have shows, the more responsive people are and the more noisy their environment is, all their productivity goes down. I liked the book for re-grounding myself in some of that stuff, but also can be useful to sort of track down some of these terms that have just gone totally kind of sideways in popular culture. It’s just a fun read. This is a very easy casual read. It’s not technically very challenging, so I highly recommend it. It’s one of my favorites. I reread it probably every four or five years, just because there’s always something new I pick up or that I’ve forgotten over time I come back to it over and over again, if kindles had dog eared pages, the book would have the spine would be broken, and the pages would be dog eared on that one. 

Ayan  

Thank you for the recommendation. And I could totally relate going back to some things for me. It’s this blog by Sam Altman. It’s called “The days are long, but the decades are short”. So, this is something like I keep going back every now and then to remind myself that this is something that I really resonate with. So, I totally understand and thanks for this recommendation, I’m definitely going to add it to my reading list. The next easy one for you is what are you most excited about in this evolving technology world at this moment? 

Lars  

I think although software and compiler sky, really, the innovations in hardware, are the things that over the last 10 years, have really impressed me because if you look at, we had video cards, and then people figured out how to run general purpose programs on top of video cards. And then people realize that  now we can do a lot of computational work that was infeasible on CPUs if we have these cards. And then people started building accelerators. Then they started moving those accelerators onto chips. And that’s really what has enabled the AI revolution. That’s what’s enabled short form video, it’s what’s enabled a lot of our work with filters and overlays. And so, it’s only been in 10 years, right? That is a super short. 

I mean, it’s long if you’re not as old as I am. But from the point of view of technology, we have so much innovation coming so quickly in hardware, and the hardware is now adapting so quickly to new use cases and needs. And we’re seeing all of the architectures out there adopt and adapt to these new technologies, where it used to take a very long time for something to go from an idea to a new instruction, to new support in the CPUs, like seeing that shrink to, from decade to years, to now some of these things are running in quarters. Right where we can go from, we have some new kind of AI model that we want to either train or execute to a piece of silicon that we can actually put in a CPU that makes this possible to run within our power performance cost envelope budget. That’s really neat.  

When I grew up all of these things with AI were no, everything we see around bland, GPT, all of the math that underlies it, right? This was all known. This was old stuff in the 90s when I was going to school, right, but it was computationally infeasible. And we didn’t even think given the growth of transistors that this was ever going to be feasible that we’d be able to do billion and trillion parameter model training. And so the hardware changes that have enabled all of this, in my mind are some of the most interesting things because there are so many things that we think are infeasible that, well, if we just throw enough custom hardware at it we can really tune what we’re doing for it.  

And so how do we continue that trend? What does the next even five years look like with that trend? And what other things that are even more exciting, are we going to be able to do given very, very highly customized, capable hardware that makes it possible to do this work? 

Ayan  

Well, I’m exactly the same thing that I’m very much excited about, given the fact that I feel that something that’s happening again, and again in software, that tends to make its way to hardware, like it’s been cryptography, six-seven years back. Now, every new chip has a cryptographic unit onboard, so this can be offloaded to that unit. And same is going for ML and Apple coming with their own silicon and tensor units for Google. So that’s exactly the same thing I’m very much excited about. And as you mentioned, it’s really fascinating to see where we are heading, even if we are not following the Moore’s law, but we are still very much you’re not keeping up with the hardware of generational revolution, I would say, and I’m sure it’s going to, it has to be really hard being a compiler’s guy and always guy to keep supporting all the things that are coming up in the hardware.  

Lars  

It’s an infinite deployment. As long as they keep coming up with new instruction sets and new construction. They’ll still need compiler folks. 

Ayan  

As long as the documentation is good. So, do you have a favorite piece of tech as of now that you would say that I can’t start my day without? 

Lars  

I really liked bone conduction headphones. I don’t know if you’ve ever used a pair of these. They are absolutely fabulous. Just because not just for the fitness side of it, which is really great for being out and exercising. But it’s important to me to be able to be present with my family. And even if you’ve only got one headphone in your ear, it still makes it hard to hear a young kid. Nicola would say, Dad, did you know how many exoplanets there are in the solar system. And if I constantly have to pull it out and say what,  that just doesn’t feel like I’m present.  

But I do like to listen to music throughout the day, or podcasts or other things. And so being able to use bone conduction headphones, let me still be present in the world with my family at the gym with people around me aware of my environment without sort of having something in place there. 

I would say, that’s really the piece of tech over the last year or two that’s really just sort of jumped into my life where I was like; I don’t know, is it going to feel buzzy? How am I going to like this? Where it just became like; No, I like every day, it’s on my head a lot of the time. So I’m really impressed with how good that technology is -again, coming back, like our other hardware statements- how much better the sound quality has gotten even year to year with these devices. Yeah, I mean, 

Ayan  

I mean, technology, giving our life back, yes, I’m sold. It has been a really great time discussing all these things with you. Thank you for your time and doing this. But before we wrap up, I just want to ask, if someone’s listening to this podcast and feel very much inspired by your career journey and want to follow a similar one ; since you have been into the software industry, and having written a lot of code back in the time, now being a stakeholder of a project of this magnitude, and also influencing the direction tech is heading, make this sort of career journey, and given the fact that you also hold a PhD. How  important is it to go through the traditional route?  Because I’ve seen a lot of next generation software engineers who have never attended a professional degree course, but are taking the courses, books and all those things, they’re still very much managing to find their way into the industry. What is your advice to someone who wants to take a similar path with you? What are the right things that they should be doing in their life to be at this position? 

Lars  

That’s a huge question. I think one thing that I really need to point out about my own career is that I had no idea this is where I would end up when I started. I joined my first job. And I thought, 20 years later, I would retire from that first job, this was it, that’s where I was going. I know other people have plans they come in, they’re like, I’m going to do a startup. I’m going to race after that. There’s two parts here. 

 One is the career and one is the education. A large part of it is that these ambitions in the abstract are good to think about, but they’re very stressful to anchor yourself on and feel like, I have to make a director or vice president within seven years, or I have to run my startup and stuff like that, it can be very stressful on you. Because most of what you have control over is not where you’ll be in 5 years, or 10 years. It’s what decisions are in front of you, what is your decision in the next two years? Focusing on how am I building a lot of skills right now, in the role I’m in, how am I making the best use of my time here in the job that I’m at? And then at each point, what is the right decision because programming languages were not really on the rise when I entered the field, right.It was just kind of opportunistic that when I got to where I was programming languages were very important, but you can’t anticipate these larger trends.  

The same thing with AI when I was in grad school, I had some colleagues who were working in the machine learning space, when it was not a hot topic, right? People were not very cool on it, and then just kind of at the end, so I want to acknowledge that there is a bit of fortuitous luck that you cannot control for.​​

I really focus on what you are doing that’s helping you grow.  And what is interesting right now, what do you think is a role that you are actually glad to be a part of and so that really ties into some of your questions about schools and education.

I think about it from two fronts. One is there are a set of skills that are hard to get without potentially without structured mentoring, a PhD process, it’s more about the mentoring that’s having an experienced researcher who’s teaching you how to do research, which is something kind of like management, where you can read books about it, but it’s really about the actual experience and having someone there to mentor you and grow you there. So, if the thing you need requires a PhD you should go get a PhD. Things I needed required a PhD, I went and got one. I wanted to do research in programming languages. That’s kind of that in many ways even though it’s a long and hard track like grad school was unabashedly the hardest thing I’ve ever done and probably will ever do in my career.  

But it was the easiest path to get into the roles that I wanted to house afterwards. If you can get the roles without it, that’s fine, and whether it’s a bootcamp, a professional masters or other degrees. One thing that those do confer beyond the learning can be that they often have a network that involves a placement network that either is direct portals into job opportunities, or a network of peers who have been through that program who can help you expand that work.  

If the thing that you’re worried about is maybe not the specifics of the program that is, how to learn and write the code and that. What you’re using it for is that network. We talked about certifications on the rough side before, these things are the certification to potential future employers, that you can perform the task or that get you past that first level of gatekeepers that are keeping you from getting the interview, to have the conversation with the job, but I don’t want to tell people that they thave to do those kinds of things. But I do want to acknowledge that those gatekeepers can be a real challenge particularly for people who are from a non-traditional background of any kind, whether it’s internationally or racially or culturally, that getting past it can be really, really hard and super frustrating.  

And sometimes, it can be a huge leg up or make things much easier for you to go through those programs to get the certification that has the right name on it to get you through the door, so that you can then show those skills that that you can develop in part on your own, and possibly in part through the program, but I never say that they’re mandatory. But I do also want to acknowledge the reality that getting through those gates can be really hard and unfairly and unequally hard in many cases. 

Ayan  

Thanks a lot for doing the podcast, Lars. It was really amazing. I couldn’t ask for a better start of this podcast. So, I’m sure we’re going to be getting new again very, very much soon and talk more on this. Thanks for spending this time. I’m sure a lot of people in the community will get inspired and learn a lot from this one. I had a great time. I hope you are too. Thanks a lot, and have a good one. 

Lars  

Thank you for the great questions. And I wish you all the best both with this and all of your future podcasts. I will definitely be subscribing and listening to them.  

Ayan 

Thank you so much. Have a good day.  

Lars 

You too.  

Ayan 

Bye. 

Categories
Community Tips

How Much Does It Cost To Appoint iOS Programmers?

If we consider the current scenario, then people nowadays utilize different categories of solutions to satisfy their purposes. Especially after the COVID – 19 pandemic, usage of smartphones has been bolstered to a considerable level. As a result, there was a massive rise witnessed in the utilization of applications among users. Since then, the usage pace has never slowed, and it has continued increasing till the current date.

It’s a truth to be told that Android devices are utilized in maximum numbers, but Apple devices are no more behind, as they stand second in global usage of smartphones. Over the past few years, the utilization of iOS applications has increased tremendously, and it’s because more than 1 billion users use iPhones, as per 2022 statistics. 

You might be fascinated to hire iOS programmers from an IT company for creating your business solutions and grab an advantage of rising requirements for iOS applications among users, which you might have derived from the figures mentioned earlier. 

So, refer to some things that should be kept in mind while hiring iOS developers and the cost of appointing them are discussed further in this post. Reading all those sections would reduce your hassles significantly for hiring them from firms to get an application for your enterprise ready.

Qualities To Be Considered While Hiring iOS Coders

When appointing iOS coders, you, as an entrepreneur, must ensure that they possess several characteristics to create your iOS solution for an enterprise. Which are those? They are stated below:

Must Possess Knowledge of Swift 3.0

It is an object-oriented programming language by Apple, which has a simpler syntax to access specific functions, making it easier for programmers to adopt. The iOS developers using Swift programming language can create a dynamic application loaded with demystifying features. So, you should appoint iOS coders having knowledge of Swift 3.0 and must be capable enough to deliver you the solution for your business with top-notch performance.

Experience in Xcode

You, as a startup owner, should know that the iOS coder you are looking to hire must possess Xcode IDE(Integrated Development Environment) in their skill sets. It is a solution that contains tools for debugging, interpretation, compiling, automation, and programming procedures streamlined for iOS developers while creating your application. By appointing iOS programmers to develop a solution for your business, you will also be charged a lesser fee for developing and deploying the platform, as Xcode makes such processes much more straightforward. It suggests that hiring iOS coders can assist you in building a platform with fewer expenses.

Problem-Solving Skills

Receiving the solution created by iOS developers is fine, but they should also be capable enough to quickly solve problems with any level of complexity. It is a must that you, as an entrepreneur, must appoint those iOS programmers who possess sufficient knowledge to get rid of any issue popping up in your application rapidly. 

Secured Application

You might be aware that the ios app store doesn’t allow an application to get published if it doesn’t match their set security standards. Hence, as an entrepreneur, ensure that the iOS coder you hire delivers a safe and secure platform to you or not for launching it in an application store.

By keeping all these things mentioned above in your mind, as a startup owner, you can look for iOS developers to hire from specific companies able to provide you with a helpful solution for your enterprise. It will assist you in appointing a perfect iOS programmer who is dedicated and skilled to offer you desirable and practical application for your venture.

Cost To Appoint iOS Programmers

Now, after knowing the several elements to remember while hiring iOS developers, you should see the cost of appointing them. There are numerous parameters that play a vital role in the costs of recruiting iOS programmers, out of which a few of them are mentioned below. Refer to each of them before analyzing the prices of iOS coders:

Complicacy

It is an essential component contributing to the cost of appointing an iOS coder to build a solution for your venture. The complicacy of an application includes:

  • The number and types of features.
  • The design of a platform.
  • Third-party apps to be integrated.
  • The specific database you select for storing user data of your application.

So, if you are thinking of building your iOS solution, then consider all these things about your app to be created. It will assist you in saving additional expenses after appointing iOS programmers.

Number of Coders

The cost also depends on a number of iOS programmers tenant by specific technology partners. The companies need to pay a certain amount to developers occupied working on your project, which relates to your application’s complexity, as discussed earlier. The rates of hiring iOS coders would likely be high if you want more attributes in your solution to be implemented, as a specific number of developers hired by you would not be able to work on other pending projects of the firm.

Experience

Based on how experienced an iOS programmer you have hired, the fees would be charged to you by them accordingly. It is because they will help you to avoid specific issues during and after creating the application for your business from their side. In addition, they will also provide you with a bugless application so that you don’t need to spend more money in the future to maintain your solution. Therefore, it’s suggestible that you should appoint a well-versed iOS developer that doesn’t charge much higher nor too lower fees for building your app.

Development Location

At last, along with covering all these factors, the cost to hire an iOS programmer is finally decided by the company, based on the development location. The charges for appointing an iOS developer from any specific country are determined based on their costs of living, hosting charges, and fees charged to them for accessing a particular function. Following are the rates of hiring iOS coders from different countries mentioned. Consider the table below to get an idea about appointing them from a specific location.

CountriesHourly Costs of iOS Developers(in $)
Australia$45 – $65
India$20 – $60
USA$60 – $90
Switzerland$55 – $80
Netherlands$50 – $75
Canada$35 – $70

Final Verdict

In the last few years, usage of iOS devices has skyrocketed to the next level, so numerous ventures have launched solutions in an Apple store to receive the advantages of increasing demand for its apps among people. Apart from this, many startup owners are planning to build their iOS applications for their enterprises, and if you are one of those, then refer to some qualities while appointing iOS programmers and the cost to select them mentioned in a post. It would help you in getting a clearer vision for hiring them.

Categories
Community Tips

Debugging Techniques For Python Developers

Debugging is an essential skill for any programmer. Mastering this skill can help you identify problems quickly and effectively in your Python code. Without knowing how to debug code, developers will face endless hours of frustration trying to solve problems.

Fortunately, Python’s built-in tools and debugging techniques make it easy for developers to identify and fix errors without wasting too much time. To help you get the most out of your Python coding experience, this article contains a list of the top debugging techniques for Python developers. But first, you must know the importance of debugging and its practical use cases in the developer community.

The Importance of Debugging

As mentioned, debugging is among the essential Python skills that all developers need to know. A common misconception of debugging is that it’s only necessary for complex projects. In reality, debugging should be part of the development cycle of any project, regardless of its size or complexity. 

This process helps you identify and fix bugs in your code quickly and efficiently. It can also help you better understand the program’s flow of execution, which enables you to make more informed decisions about improvements or modifications to the code. 

Debugging Use Cases

A common mistake of new developers is to assume that debugging is only done to correct errors in code. In reality, debugging is used for more than just fixing errors. Here are some of the most common use cases:

  • Handling Python code errors that occur during program execution. Errors can be caused by incorrect syntax, type errors, name errors, etc. Different types of errors can occur in each code, and good debugging skills can get you out of a jam.
  • Investigating problems with code logic or implementation. This could include issues such as unintended infinite loops or unexpected output from functions. Debugging can help programmers determine the root cause of these issues and identify solutions.
  • Testing code for desired behavior. Debugging can be used to test if the code is working as intended. This could include checking for outcomes from functions, or ensuring that calculations are performed correctly.
  • Locating and removing code that is no longer necessary. As a developer, you should know that code can become obsolete over time. Debugging allows you to identify and remove obsolete or redundant code from your project. This could include dead code, duplicate functions, or redundant variables. 
  • Identifying potential performance issues in your program. Poorly written code can significantly slow the running time of a program. Thus, accurately tracking and diagnosing these problems is essential for efficiency. And yes, debugging can help with that.

Common Debugging Techniques For Python Developers

Now that you understand the importance of debugging and its various use cases, here are some of the most helpful techniques for Python developers:

The “print()” Function

The simplest way to debug a program is by using the print() function. This can be used to debug programs by displaying values in real time. But how, you may ask? This function allows you to print out variables and values to gain insight into what is going on with your program. It also helps you identify errors that appear during the execution of your code. Through this function, you can easily track the program’s flow of execution and identify any potential problems along the way.

Integrated Development Environment (IDE)

An IDE provides a suite of tools to help debug code more effectively. With features such as syntax highlighting, auto-completion, debugging consoles, and breakpoints, it allows you to quickly identify and fix errors without having to search through your code manually.

An IDE is present in almost every programming language, and Python is no exception. Popular IDEs include PyCharm and Visual Studio Code as the go-to choices for many developers. If you have the resources, you can try out different IDEs and find the one that works best for you.

Debugger

A debugger is a powerful tool used to step through code line by line. It can be used to inspect variables, set breakpoints, and trace functions as they execute in real-time. This helps you identify the exact source of an issue quickly and easily.

The Python debugger, known as pdb, comes installed with Python. It allows you to inspect the flow of control in your code. You can also set breakpoints with pdb which allows you to pause at specific points during program execution so that you can investigate what is going on at that time.

Logging

Logging can be used to keep track of errors and detect any unexpected behavior during the program’s runtime. This provides you with a record of events that can be used for further investigation into the cause of an issue. Many seasoned developers use logging as a reliable way to track errors and identify improvement points.

The logging module in Python allows you to create basic loggers that can be used for debugging purposes. This module also includes more advanced features such as custom levels, filtering, and formatting, making it even more powerful!

Conclusion

Debugging is one of the most critical aspects of development that every professional developer should learn. You can quickly identify and solve problems in Python code by learning and mastering the debugging techniques listed above. Remember, debugging is an essential part of the development process, so learning how to use these techniques efficiently will help you become a more productive and successful developer!

Categories
Tips Tools

Integrating Test Automation In Small Tech Business: Advantages And Disadvantages

Software testing verifies that the software or product meets the technical requirements of the project and works as expected. It checks for bugs and errors to ensure that the product delivers an ideal user experience. Software testing is vital to the success of the project. However, it could be time-consuming and stressful to execute without using automation tools. Simply reviewing the entire project manually could be a massive burden on the testing team, especially in the case of heavy-duty software.

It has become increasingly important for small tech businesses to integrate software automation testing in their development process. Testing automation tools allow testers to perform the tests with greater accuracy and efficiency. The tools handle the bulk of the grunt work so the testers can devote their time and attention to more critical tasks. 

This article will discuss the advantages and disadvantages of test automation for small businesses.

Advantages of Test Automation for Small Tech Businesses

Test automation can help small tech businesses in various ways. For starters, it can help them to streamline their operation and improve the quality of their product or service. Here are some more advantages of test automation to small businesses.

Increased Efficiency 

Automation testing helps the testing team to save time and be more efficient in the testing process. For instance, In manual testing, the testing process is entirely left to the testers, so testing can only happen during working hours. On the other hand, a test automation approach does not require manual intervention, so it can be executed around the clock; the testers can set it on the schedule, thus saving  time and getting conclusive test results faster.

Test automation could also be run on multiple devices simultaneously, further speeding up the testing process and reducing the testing time.

Improved Accuracy 

Small tech businesses looking to perform more thorough testing can benefit from the improved accuracy of test automation. During manual testing, you have to rely on the expertise and exposure of the testers. They could make mistakes, especially when they have to perform repetitive tasks. The quality of the tests could decline as the project becomes complicated. On the other hand, automation tests are highly repeatable and consistent; you can run automated tests severally without any reduction in thoroughness.

Test automation can reduce the risk of human error so you can get the best quality results.

Better Coverage 

Performing end-to-end tests on lengthy projects can be challenging with manual testing. The testers and developers may be unable to efficiently cover all memory contents, data tables, internal program states, and file contents to ascertain if the software works as expected. 

With test automation, you can increase the depth and scope of tests to review all parts of the software. It can help you to create more complex test cases, test more features, and improve the overall quality of your software.

Early Identification of Issues 

Test automation can help you to detect bugs and errors earlier in the development process. This helps to speed up the development process while ensuring that smaller problems are attended to before they transform into more complicated issues. 

The earlier the defect is identified, the easier it is to fix it and the more cost-effective it is to resolve the issue. According to IBM Science Institute, a bug discovered in the testing phase costs fifteen times more than a bug discovered in the design phase, and a bug discovered in the implementation phase costs a hundred times more to fix than a bug in the design phase. You will save more money if you can uncover all the hidden errors earlier in the production process.

Disadvantages of Test Automation for Small Tech Businesses

As the famous saying goes, “every coin has two sides”. The same goes for test automation. Test automation may offer some disadvantages for small businesses. Here are some of the possible disadvantages of test automation.

Initial Cost 

Small businesses may be unable to afford the high initial setup and implementation costs. However, this depends on the scope and complexity of the project. Larger projects require more time and resources, which may cause a tremendous financial strain for small tech businesses.

Maintenance Cost 

They also have to deal with the cost of maintenance. Automated tests must be constantly modified and maintained as the product changes to ensure that they continue to function effectively. For example, suppose there is a modification to the software’s user interface. In that case, the testers must update the test scripts to reflect the new change. This can be time-consuming for the testing team.

Lack of Flexibility 

Automation testing is not as flexible as manual testing. As automated tests are designed to test specific scenarios or situations, they may have difficulty adapting to changes or unexpected results.

Not Suitable for Open-Ended Testing

Open-ended and exploratory testing involves randomly testing the products to check how they behave under different conditions and uncover unforeseen issues. Automated tests have a defined purpose, making them unsuitable for tests that need to be performed randomly..