Categories
Community Enterprise Developers

Meet the Enterprise Developers – Interview Series #1:  Investment Sector 

The term Enterprise Developer has been showing up quite frequently over the past few years in Developer Nation and other programming communities. In our experience, this term can have slightly varied meanings, but it often relates to the Developers working in big teams/organisations, supporting enterprise-grade software development. 

To shape a more accurate definition and learn more about Enterprise Developers’ roles, responsibilities, and challenges, we decided to ask them directly. Hence, starting this new series of blog Interviews at Developer Nation, talking with Enterprise Developers, giving our community more clarity about their work and how it differs from a startup environment.

The first interviewee in this series has requested us to keep their identity anonymous; hence respecting their privacy, we will call them Dev A.

Ayan: Can you briefly describe your job as an Enterprise Software Developer

Dev A: I work as a Software Developer at an investment firm, my work revolves around writing tools and data pipelines that help traders/operations and also data pipelines that run during and pre/post trading.

Dev A has briefly described their work as building tools and data pipelines that help investors trade on the platform. 

A data pipeline is a function that processes raw data from various data sources and then posts it to a data warehouse for further analysis.

Ayan: What are some of the challenges and benefits of working at a large company compared to a startup?

Dev A: Challenges – a lot of existing infra to go through and gain understanding on. Slow review and deployment process, lot of stakeholders.

Benefits – Learn about processes, scalable solutions, how large infra is maintained. You get a hang of good practices.

Processes make it easier for developers to work and support each other in a big team setup. However, these processes can also sometimes  become bottlenecks when new features of patches in the code need to be shipped to the production. As Dev A mentioned, the review and deployment process is slow, and many stakeholders are there whose reviews are needed. On the good side, these processes ensure the quality of the code having it being reviewed by multiple parties. Especially in financial organisations a bug showing an incorrect balance can be a disaster for the product. 

Ayan: If you could change one thing about how your organization operates, what would it be?

Dev A:  n/a

I asked Dev A if there’s anything they would want to change about the way their organization operates. Apparently there isn’t anything that is rare but good to know. 

Ayan: How is AI impacting your day-to-day life? Is there a policy regarding the use of AI tools in your company?

Dev A: Not allowed to enter proprietary information in LLMs. Consider anything entered into ChatGPT is as good as posting it on social media.

AI helps generate quick commands for generic things – e.g bash commands, generate snippets, etc. Stack overflow replacement in a crude way.

From the response, Dev A’s org seems to have a strict policy when it comes to using Large Language Models like ChatGPT with any proprietary information. However, Dev A has been using it to support their development work, like generating Bash commands or code snippets to automate aspects of their job, using it as a Stack Overflow replacement – Very Interesting. 

Ayan: How much of your work depends on specific tools, frameworks, programming languages, or cloud providers?

Dev A : Many libraries are inbuilt and maintained in-house, but many are used from outside as well. e.g redis, github etc.

This one is a classic. To be easily maintainable a big software project is usually organised into libraries, which are easier to maintain and reuse in different projects. As Dev A mentioned, many libraries are built and maintained within the org itself. However, like any other software product, they also depend on other work in open source and outside to support the product development. 

That was all from this interview, but keep an eye out for more. If you know anyone we should invite for this kind of interview session, please feel free to write me at ayan.pahwa@slashdata.co

Ayan

Categories
Community

Language Communities; Who leads the way?

The choice of programming language matters deeply to developers because they want to keep their skills up-to-date and marketable. Languages are a beloved subject of debate and the kernels of some of the strongest developer communities. They matter to toolmakers, too, because they want to make sure they provide the most useful SDKs.

size of programming language communities in 2023

It can be challenging to accurately assess how widely a programming language is used. The indices available from sources like Tiobe, Redmonk, Github’s State of the Octoverse, and Stack Overflow’s annual survey are great but offer mostly relative comparisons between languages, providing no sense for the absolute size of each community. These may also be biased geographically or skewed toward certain fields of software development or open-source developers.  ​

The estimates presented here look at software developers using each programming language globally and across all kinds of programmers. They are based on two pieces of data. First is SlashData’s  independent estimate of the global number of software developers, which was published for the first time in 2017. According to it, as of Q1 2023, there are 35.6 million active software developers worldwide. Second is the large-scale, low-bias Developer Nation Global survey which reaches tens of thousands of developers every six months. In these surveys, devleopers are  consistently asked about their use of programming languages across 13 areas of development. This gives a rich and reliable source of information about who uses each language and in which context. 

JavaScript remains the most widely used language. 

For the 12th survey in a row, JavaScript continues to take the top spot for programming languages, with 20M active developers worldwide. Notably, JavaScript is still experiencing growth, with a further 2.6M developers joining the community in the last 12 months. JavaScript’s lead is unlikely to be challenged in the near future, as its community has almost 3M more developers than the next closest languages. Moreover, JavaScript’s popularity extends across all software sectors, with at least 20% of developers using it in their projects. 

“Close to eight million developers joined the Java community in the last two years.”

In 2020, Python unseated Java as the second most popular programming language, but in Q1 2023, Java returned to just matching Python, with both languages now counting just over 17M developers. Java is one of the most important general-purpose languages, and although it is over two decades old, it has seen incredible growth over the last two years, gaining close to 8M users. This corresponds to the highest growth in absolute terms across all languages. Java’s growth is not only supported by traditional sectors such as cloud and mobile but also by its rising adoption among AR/VR developers, in part due to Android’s popularity as an AR/VR platform. 

Despite Java catching up, Python keeps adding new developers. However, in the last 12 months, only 1.3M developers joined the Python community, compared to the massive 5.6M developers who joined between Q1 2021 and Q1 2022. A major driver of Python’s growth was the rise of data science and machine learning, where 70% of developers involved were using Python in Q1 2022. However, this has decreased to 60% in Q1 2023, with other languages, such as Rust, Java, and Mathematica, receiving small increases and likely reducing Python’s growth. ​

The group of major, well-established languages is completed with C/C++ (13.3M), C# (11.2M), and PHP (8.8M). PHP has seen the second-slowest growth rate over the last 12 months, growing just 11% and adding 0.9M developers to its community. PHP is a common choice for backend and web developers but has seen decreasing popularity. 

PHP was used by almost 30% of all developers in Q3 2020 but by 25% of all developers in Q1 2023. This decrease in popularity is particularly apparent amongst web developers, for whom it has gone from the second most popular language in Q3 2021 (34%) to the fourth most popular language (25%) in Q1 2023, behind JavaScript, Python, and Java. Despite PHP 8 addressing many of the concerns developers had expressed about PHP, perceptions of it being insecure or outdated may persist.​

C and C++ are core languages in embedded and IoT projects, for both on-device and application-level coding, but also in desktop development, a sector that accounts for almost 45% of all developers. On the other hand, C# has maintained its position as one of the most popular languages for games and desktop applications. Overall, C/C++ added 2.3M net new developers in the last year, while C# added 1.4M over the same period. 

ranking of programming languages

Kotlin’s growth is beginning to slow

In previous editions of this report, Kotlin and Rust were identified as two of the fastest-growing language communities. If Kotlin’s growth continues, it will soon overtake PHP and join the ranks of the most popular languages. Kotlin’s growth has been largely attributed to Google’s decision in 2019 to make it the preferred language for Android development. It is currently used by 19% of mobile developers and is the third most popular language in the space. However, Kotlin may be showing signs of slowing its exceptional growth. Kotlin now has a community of more than 5.3M developers and has added more than 2.5M developers in the last two years. However, in the last year, there has only been an increase of 0.5M developers. Kotlin’s explosive growth may have resulted from a high demand for developers with Kotlin experience to fill a market need that may be approaching a level of market saturation. Despite Google’s preference for Kotlin, the inertia of Java means that it is still the most popular language for mobile development and still experiences immense growth.

“Rust has more than tripled the size of its community in the past two years”

Rust has more than tripled the size of its community over the past two years and currently has 3.7M users, of which 0.6M joined in the last six months alone. Rust has overtaken Objective C in the last six months and is the 11th most popular language in our survey. Rust has seen increased adoption in IoT, games, and desktop development, where it is desired for its potential to build fast and scalable applications. Rust was designed to handle high levels of concurrency and parallelism. Thus it can handle increasing amounts of work or data without sacrificing performance. Furthermore, Rust has built a loyal community of developers who care about memory safety and security.

Swift currently counts 5.1M developers, adding more than 1.6M net new developers over the past year. This growth continues to stem from Apple making Swift the default programming language across the Apple ecosystem, which has the effect of phasing out the use of Objective C. Despite this, Objective C has also shown strong growth, adding 1.0M developers in the last year alone, resulting in a community of 3.4M developers. This is primarily through its use among IoT developers, who are increasingly turning to it for their on-device code, as well as a growing number of AR/VR developers. Nonetheless, Objective C has fallen behind Rust, whose more modern approach may be more appealing to developers.​

Go and Ruby represent two of the smaller language communities that are important in backend development, but Go has seen substantially more growth over the last two years. Go’s developer community has more than doubled in the last two years, adding 2.3M new developers to its population, which stands at 4.7M developers. Similarly, Ruby has added 1.0M users to its community of 3.0M developers, showing impressive growth but trailing further behind Go. 

“Lua has added almost 1M developers to its community in the past year”

In the past six months, Lua has overtaken Dart to become the 14th most popular programming language. Lua has shown massive growth over the past year, going from 1.4M developers in Q1 2022 to 2.3M in Q3 2023. Lua is an alternative scripting solution for low-level languages, such as C and C++, and has seen more developers in IoT, games, and AR/VR picking it up. This could mark the beginning of Lua’s momentum and see it become increasingly popular, especially as the IoT and AR/VR spaces continue to grow. Dart has seen steady but slow growth over the past two years, predominantly due to the Flutter framework in mobile development filling a useful niche. However, with 13% of mobile developers currently working in Dart, a decrease from 15% in Q1 2022 may see Dart’s growth remain low, and its place within mobile development remain a minority language.

Categories
Community Tips

8 Java Programming Tricks Every Java Developer Should Know

Java is one of the most popular programming languages in the programming world, used by millions of developers to build complex software systems and applications. As a Java developer, it’s essential to stay up-to-date with the latest trends and techniques to remain competitive and produce high-quality code. In this article, we’ll explore eight Java programming tricks every Java developer should know, including how java developers for hire can help you implement them in your projects.

  • Use Lambda Expressions

Lambda expressions are a powerful feature introduced in Java 8 that allow you to write functional-style code with less boilerplate. With lambda expressions, you can define a method as a parameter to another method, reducing the amount of code you need to write. For example, instead of writing:

List<String> names = new ArrayList<>();
for (Person person : people) {
    names.add(person.getName());
}

You can use a lambda expression like this:

List<String> names = people.stream()
.map(Person::getName)
.collect(Collectors.toList());

This code is more concise and easier to read, making your code more maintainable.

  • Use Optional Instead of Nulls

Nulls can cause many problems in Java code, including NullPointerExceptions, which can be difficult to debug. Instead of using nulls, use the Optional class, which allows you to represent an object that may or may not be present. Optional provides a safer and more elegant way to handle nulls in your code.

  • Use Streams for Collection Operations
    Streams provide a concise and powerful way to perform operations on collections in Java. With streams, you can perform operations like filtering, mapping, and reducing without the need for complex loops or temporary collections. Streams can significantly simplify your code and make it easier to read and maintain.
  • Use String.format for String Concatenation
    String concatenation can be a performance bottleneck in Java code, especially when concatenating large strings. Instead of using the + operator, use the String.format method to concatenate strings. String.format creates a formatted string that you can customize with placeholders and arguments, making your code more readable and efficient. 
public class StrFormat  
{  
    /* Driver Code */  
    public static void main(String args[])  
    {  
        String s1 = new String("Hello");    //String 1  
        String s2 = new String(" World");    //String 2  
        String s = String.format("%s%s",s1,s2);   //String 3 to store the result  
            System.out.println(s.toString());  //Displays result  
    }  
} 
  • Use Immutable Objects

Immutable objects are objects whose state cannot be changed after creation. Immutable objects are thread-safe and can simplify your code by eliminating the need for locks or synchronization. Use immutable objects whenever possible to improve the performance and reliability of your code.

String name = "baeldung";
String newName = name.replace("dung", "----");
assertEquals("baeldung", name);
assertEquals("bael----", newName);
  • Use Interface Default Methods

Default methods were introduced in Java 8 and allow you to add methods to an interface without breaking existing implementations. Default methods provide a powerful way to extend existing interfaces and create more flexible and maintainable code.

import java.time.*; 
public interface TimeClient {
    void setTime(int hour, int minute, int second);
    void setDate(int day, int month, int year);
    void setDateAndTime(int day, int month, int year,
                               int hour, int minute, int second);
    LocalDateTime getLocalDateTime();
}
  • Use Reflection Sparingly

Reflection is a powerful but dangerous feature in Java that allows you to inspect and modify the behaviour of a program at runtime. Reflection can be slow and error-prone, and should only be used when necessary. If possible, use other features of Java, such as interfaces, to achieve your goals.

import java.lang.reflect.*;

 
   public class DumpMethods {
      public static void main(String args[])
      {
         try {
            Class c = Class.forName(args[0]);
            Method m[] = c.getDeclaredMethods();
            for (int i = 0; i < m.length; i++)
            System.out.println(m[i].toString());
         }
         catch (Throwable e) {
            System.err.println(e);
         }
      }
   }
  • Use Enumerations Instead of Constants

Enumerations are a more powerful and flexible way to represent constants in Java. Enumerations allow you to group related constants and define their behaviour, making your code more expressive and maintainable. Use enumerations whenever possible to avoid the problems associated with traditional constants.

public class Main {
  enum Level {
    LOW,
    MEDIUM,
    HIGH
  }

  public static void main(String[] args) {
    Level myVar = Level.MEDIUM; 
    System.out.println(myVar);
  }
}
  • Use Try-With-Resources for Resource Management
    Try-With-Resources is a feature introduced in Java 7 that allows you to automatically close resources such as files, sockets, and database connections after they are no longer needed. Try-With-Resources can simplify your code and ensure that resources are always properly closed, reducing the risk of resource leaks and other problems.
  • Use Javadoc to Document Your Code
    Javadoc is a powerful tool for documenting your Java code. With Javadoc, you can create professional-looking documentation for your code that can be easily shared with other developers. Javadoc can also help you understand your own code better and identify potential problems and bugs.
  • Use Dependency Injection for Loose Coupling
    Dependency Injection is a design pattern that promotes loose coupling between components of a system. With Dependency Injection, you can inject dependencies into a class instead of creating them inside the class, reducing the complexity and dependencies of your code. Dependency Injection can also make your code more flexible and easier to test, making it a valuable technique for Java developers to learn.

Use Unit Testing for Quality Assurance

Unit Testing is a crucial technique for ensuring the quality and correctness of your Java code. With Unit Testing, you can test individual units of code in isolation, identifying and fixing problems before they become larger issues. Unit Testing can also improve the maintainability of your code by ensuring that changes and updates don’t introduce unexpected side effects or bugs. As a Java developer, it’s essential to understand and practise Unit Testing to produce high-quality, reliable code.

Conclusion

Java developers for hire can help you implement these programming tricks in your projects. The tricks we mentioned can improve the quality and efficiency of your code, and help you stay up-to-date with the latest trends and techniques in Java programming. But if you need to do it asap, Java developers for hire can help you implement these programming tricks in your projects.

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

Ada Developers Academy: Diversifying the tech industry for good

The Developer Nation community takes great pride in collaborating with organisations that contribute to the diverse and inclusive evolution of the software development ecosystem. 

Featured in our blog spotlight today, the Ada Developers Academy whose mission is  to prepare women and gender expansive adults to be software developers while advocating for inclusive and equitable work environments. Ada primarily serves and addresses the needs of Black, Latine, Indigenous Americans, Native Hawaiian & Pacific Islander, LGBTQIA+, and low-income people. Here is more about Ada as explained by Alexandra Holien, VP of Revenue and Marketing, Deputy Director. 

Nine in ten students, employees, senior HR leaders, and human resources officers surveyed by Accenture in 2019 said that attracting women with tech experience is critical for their company’s success. 

Gender diversity brings substantial benefits to individual companies and the tech economy at large:

  • Bringing more women onto engineering teams directly improves product quality – by reducing problems like algorithmic or design bias, which are made worse by a lack of diversity. Companies with above-average diversity received 45% of their revenue from new products vs. 26% for companies with below-average diversity scores.
  • A study by the Stanford Graduate School of Business found that greater gender diversity raises tech company share prices. Companies in the top-quartile for gender diversity on executive teams are 21% more likely to outperform and out-earn the U.S. average (WomenDeliver.org), and tech companies led by women are more capital-efficient than companies run by men, achieving 35% higher ROI and, when venture-backed, 12% higher revenue (Kauffman Foundation). 
  • Companies with inclusive environments nurture innovation and shrink the gender pay gap. A study by the Gallup Organization found that more diverse companies have 22% less employee turnover rate; creating faster, sustainable growth.

Still, many companies struggle to recruit and retain diverse talent – that’s where Ada Developers Academy comes in. 

Our one-year, tuition-free coding school fast-tracks women and gender-expansive* folks into junior software developer roles. Through six months in the classroom and five months in an industry internship with one of our company partners, Ada students build the skills and experience they need to become developers. We know our model works – 94% of our graduates are hired into full-time software engineering jobs within six months of graduation. 

We develop engineers who are highly skilled and collaborative; graduates are experienced in practical, team-based software development and learning new technology rapidly. Our students are highly diverse; all are women or gender-expansive, 72% are people of color, 40% are racial minorities underrepresented in tech (Black, Latine, Indigenous, Native Hawaiian/Pacific Islander), and 34% are LGBTQIA+. Through our internship program, we help you find your future software developer from our diverse talent pool while also providing inclusive leadership training to managers to build better teams, better tech, and better business.

Our company partners rave about Ada graduates:

“Ada is a great partner that produces professional, and technically skilled women, who have proven successful in a fast-paced, technically challenging environment. Not only have the employees that we have hired through Ada internships continued to grow in their careers, given the strong foundation they started with, but they have all been strong carriers of our core values. They are collaborative, communicative and passionate about their work…I’ve gotten to know a lot of different coding education programs, and Ada continues to be a favourite to work with.”

Zillow 

“Diversity and Inclusion in the workplace is a top priority for Skytap. We know we still have a long way to go, but also recognise, we would not be where we are today without Ada. We have learned a great deal on the importance of having diverse talent and perspectives and ​inclusion in the workplace at all levels. Our organisation absolutely reaps the rewards by having more diversity in thought as we build a great product for our customers.”

Skytap

“The ability to attract outstanding tech talent is one of our greatest challenges. Ada has allowed us to do that while increasing the diversity of our workforce. Our software engineering organization is now 30% percent female — three times the national average. Ada has had a huge positive impact on our work culture. We’ve made improvements in our inclusivity and hiring practices, and it’s awesome to give our male developers the opportunity to work with devs who break the mold and shatter stereotypes.”

EnergySavvy

“After graduating from Ada, I not only successfully entered the industry but also advanced my career more quickly than I ever thought possible. Now, as a CTO, I can create opportunities for so many more people from non-traditional backgrounds, and I’m excited to impact how a whole company thinks about talent.”

Strike Graph CTO and Ada alum

“We want and could employ so many more Ada students.”

Amazon

Ada welcomes companies of all sizes to share in our mission by becoming a partner. We not only partner with tech heavyweights like Amazon, Google, Uber, and Microsoft, but also smaller companies and startups seeking diverse talent. Alexandra Holien, VP of Revenue and Strategy at Ada explains, “Companies are finally seeing the positive impact diversity has on productivity and the bottom line. DEI has steadily and rightfully become a priority for big tech. We are giving them direct access to the most diverse pool of talented coders that will transcend the next generation.” 

After nearly ten years of success in Seattle, Ada began expanding operations across the U.S., starting with Atlanta in 2021 and the greater Washington, D.C. area in 2023. “Our aim in expanding to diverse cities that are beginning to experience tech industry growth is to ensure that the wealth generated by the industry benefits the whole community and not just a select few,” says Ada CEO Lauren Sato. “Coming from Seattle, we have seen how booming tech can push communities out of their city, and we hope to see Atlanta become the first market to grow tech from within.” 

Since our founding in 2013, Ada has served over 1,000 participants and generated $50M in new salaries for women and gender-expansive folks in the tech economy, narrowing gender and racial equity gaps in one of our most prosperous and influential sectors. 

Learn more at www.adadevelopersacademy.org, and contact partnerships-team@adadevelopersacademy.org for information on partnering with us. Follow Ada on LinkedIn, Instagram, TikTok, Twitter, or Facebook

*Ada uses a national reference for the term “gender-expansive” (also sometimes called non-binary, non-conforming or genderqueer) and Transgender provided by GLAAD: https://www.glaad.org/reference/transgender  

Categories
Community

Let’s Talk About Developer Wellness

Twice per year we run our global surveys with developers like you including professional developers, hobbyists, students, no-code software creators and as always we invite you to leave feedback, which we love to read!

For a long time we have been focusing on developer research aiming to shape the developer ecosystem, and improve the tools and platforms you are using everyday.  Listening to your feedback, we realised that there are a lot of you out there facing anxiety, feeling burned out and trying to find ways to improve your overall health and wellbeing. 

You asked, we listened! The State of Developer Wellness Survey is our first 5-min survey dedicated to your wellbeing.

For each completed response, we’ll be donating $1 USD with an aim to donate up to $1,000 to the Turkey / Syria Earthquake Appeal. What’s more, we’ll be running a prize draw for swag and sharing our inaugural State of Developer Wellness Report in Q2 with you. 

We are confident that the report will help raise awareness around the importance of work well-being for software developers. It is also expected to contribute to our understanding of the Developer Nation community and the challenges that our members are facing so that we can better support them with our content and community offerings.

If you’ve taken the survey and want to be notified when the report is published, sign up here. If you’ve not yet taken the survey, you can participate now!

Categories
Community

Why Python is the perfect choice for AI & ML project

With most companies using Artificial Intelligence and Machine Learning technology, it’s significant to use a programming language that reduces the code complexity and offers simple implementation. 

Though developers have ample opportunity to use different programming languages, Python gives them an edge over other available languages. Python offers a large number of libraries with simple and flexible tools, which makes the job easier. 

Plus, it is one of the leading solutions that can work for ML and AI. Python has gained an extensive advantage over different programming languages and is being used for different projects. You can hire Python developers to know more about compatibility. 

Let’s dive deep and look into what makes Python an ideal choice. 

1. Huge frameworks and libraries 

Building different ML and AI projects can be time-consuming. And at times, the coding process can be a complex one. However, many libraries are prewritten and compatible with Python, so developers prefer it over other languages. 

The libraries available in the stock make the process seamless for new developers. Developers can pick a library based on the need of the project. For instance, the Pybrain is used for machine learning, and Scipy is specifically used for advanced computing. 

Also, programmers can save a lot of time by using the approach, which is a unique library. 

2. Flexible platform 

Python is a highly flexible platform and is suitable for every purpose. The programming language offers the benefit of choosing between scripting and OOPS. Plus, you can consider recompiling the source code in project development. 

It’s easier to bring any changes, which saves time. Additionally, it allows the developers to choose from different programming styles, following which they can combine various styles to create better projects. 

The language is suitable for linking different data structures and offers perfect backend solutions for programmers. Moreover, it’s the most feasible choice for programmers who are often stuck between different algorithms – providing them with the power to check the code.

3. Its quite popular 

Python is quite popular among the developer community for creating projects. It’s one of the top programming languages, and most developers love to use it for simple stacks and tools. 

Moreover, it is one of the most commonly used languages for new developers. Developers can easily choose from the many Python packages available online. With a wide choice of packages, choosing the one for the project becomes simple. 

Leading companies have been using the language for years, so it’s the most preferred choice for the AI community. It is also the number one choice for developers who work on machine learning projects.

4. Platform-independent nature

Python has a platform-independent nature and that’s why most developers prefer the language. It makes the entire process of building solutions more seamless and simple. 

Developers can work on multiple platforms without errors. By tweaking the codes, they can make the applications ready to run or go live in no time. Additionally, they can run the apps on different OS. 

By choosing Python, developers can save a lot of time they otherwise waste on testing applications. The flexibility of coding is the main feature of Python. 

5. Better visualization options 

As discussed earlier, Python comes with a variety of libraries that are available online, and those libraries come with visualization features and tools. Moreover, when it comes to AI, the developers need to develop visuals for a project. 

They need to highlight the visuals for accuracy and attention. Plus, it plays a vital role in presenting the data. For instance, libraries like Matplotlib can be helpful for programmers and data scientists. 

It allows creating of different charts and histograms and – creating plots for data comprehension. The tools help in visualization and representation, which helps the developers to build better reports. 

6. Clear readability 

With Python, you will get the benefit of readability, which is an important aspect of technology. It is a simple language, easy to use, and beginners can change the code. 

Unlike other programming languages, Python is not complex. Besides, ease of use plays a vital part in exchanging ideas, algorithms, and tools. As a result, AI professionals can use the language to bring minor or big changes to the project at any given time. 

Apart from the readability, there are tools available to create an interactive design. The external tools can help in debugging and tab completion. It can also help in testing. Additionally, it also plays a part in facilitating the work schedule. 

7. Rapid development and community support 

Python offers the benefit of prototyping, and if the developers are familiar with stacks, it saves time. Also, the developers don’t have to waste time in the integration of AI. Most developers consider Python simple as far as readability and writing are concerned. You won’t need to learn the complicated codes. 

Python offers extensive community support – backed by experts and professionals in the field. Additionally, it provides the developers with all the essential resources they need to work on. 

New developers can work quickly and hassle-free. Besides, the experts are always preparing to rescue new developers if they are stuck with the project. In every phase of the development cycle, you can take the help of experts. 

Wrapping up,  

AI and ML technology is constantly evolving and bridging gaps between companies. Implementation and integration can help increase efficiency and productivity. 

Additionally, the use of Python for the two technologies is providing solutions to real-life problems. Plus, you can expect a customised user experience with Python. 

Categories
Tips

Why Finding Programming Jobs is Difficult

A few years ago, I started guest lecturing and volunteering at a few of the coding bootcamps here in Chicago. I had a very non-traditional job search process (more on that in a minute), so it was surprising to me that so many new grads had a tough time finding their first roles.

Since then, I’ve realized that job hunting isn’t just hard for new software developers. There are virtually endless threads on Reddit (1, 2, 3, 4) bemoaning the process and how arbitrarily good programmers are rejected without reason after putting dozens of hours into the process.

In short, it’s demoralizing, but I’ve been on both sides of the table.

In my 12+ years in tech, I’ve been a software developer, an engineering manager, a CTO, and a founder. I’ve been in the hiring seat and the job-seeker’s seat at various times, and like many of you, I think most companies’ hiring systems are deeply flawed.

That said, there are ways to navigate it or work around it entirely. As an applicant, understanding how the system works and playing to your strengths can help make it a lot easier on yourself. So, in this piece, I’ll break down the hiring process from an employer’s perspective. I’ll share some of the reasons this process is so annoying (on both sides) and offer my perspective on how both sides can navigate it.

Why Is Job-Hunting So Difficult for Software Engineers? 

There are a number of factors at play in making job-hunting as hard as it is. Here are just a few factors:

1. Oversupply of Junior-Level Developers

Finding your first role is particularly hard for entry-level programmers, since the vast majority of openings are for mid or senior-engineers with 5+ years of experience. But, employers are somewhat justified because junior developers can be a risky bet.

Hiring a new software developer can cost tens of thousands of dollars. Add to that onboarding and training costs — which are significant for someone who’s completely new to the field — and it’s easy to invest $30,000 or more before they’ve added a line of production code.

Now imagine you make a bad hire.

It takes 8.8 weeks to dismiss someone, does damage to the hiring manager’s reputation, hurts morale, and the company has to recruit for that position all over again. Bad hires mean a lot of money and time is wasted, and most employers are extremely risk-averse (read fearful).

As a result, companies tend to be biased toward experienced candidates who are familiar with the language and frameworks they use. They tend to want proven contributors who are used to working in a professional environment and know all the tools of the trade.

I’m not saying this is right, but this is the economic case that any junior applicant is fighting against.

2. Outdated Hiring Practices

A lot of the frustration also stems from the fact that many steps in the process are not relevant to the actual job. Instead of testing for skills and knowledge applicable to their day-to-day work, applicants are made to jump through arbitrary hoops that often leave non-traditional and diverse candidates struggling.

> “But honestly, as an ACTUAL senior software developer, why do I have to brush up on things that don’t come up in the day to day often?” – Anonymous

Applicant Tracking Systems

For starters, ATSs, which are meant to help facilitate the hiring process and save everyone time, can be a huge barrier. Job seekers have to upload their resume and then fill out the exact same information all over again in most ATSs.

What’s more, many recruiters use these systems blindly.

Most ATSs will parse an application for keywords to determine if a candidate is qualified. If somebody wrote into their application that they’ve used Scala before, but they didn’t explicitly write that they’ve used Java, the ATS might tell the recruiter that they don’t know Java. A real engineer would know that the are closely related enough to be interchangeable in many environments, but naive recruiters may not.

This leads candidates to use hacks like (Amit Juneja’s here) to manipulate ATSs to get more positive replies.

While employers might save time using these tools, they’re clearly missing good candidates who just don’t know (or care) enough to game the system correctly.

Whiteboarding Sessions

Termed “whiteboard algorithm hazing” by David Heinemeier Hansson, the creator of Ruby on Rails, whiteboarding is one of the most aggravating experiences for job seekers.

This interview style, which is widely used by tech companies like Google, Facebook, and Amazon, asks candidates to spontaneously regurgitate any one of hundreds of algorithms that were last useful maybe 50 years ago. They’re asked to write out these algorithms on a whiteboard with no access to an IDE or any reference material.

Spoiler alert: this is nothing like the work that real programmers do.

In the job, they’ll get to work on their own computer using reference materials and all sorts of assistive devices. I’d argue that it’s more important that developers know how to actually look things up quickly on Stack Overflow than repeat algorithms by memory, but that’s just me.

Hanssen says as much in his blog: “I’ve known fabulous programmers flame out in the quizzing cage and terrible ones excel. So unless you’re specifically hiring someone to design you the next sorting algorithm, making them do so on the white board is a poor gauge of future success.”

So why do companies default to this method of weeding out applicants?

Some of it is laziness. Many managers do whatever the policy dictates rather than improve the policy. For others, it’s likely a form of elitism or bias. Many companies want to limit their applicant pool to people with more traditional computer science backgrounds rather than those with self-taught or bootcamp experience.

In any case, whiteboarding has forced many applicants to spend months brushing up on arcane programs like maze solving algorithms or the longest possible Collatz sequence, hoping that they get tested on one of those during their interview.

It has also spawned an entire industry of Online Judges — platforms where applicants can solve problems and spend time on coding exercises. LeetCode, HackerRank, and CodeForces are some of the most popular ones out there. It’s a lot like SAT prep for a job, except that you have to go through it again every time you want to change your job.

3. Job-Skills Mismatches

Finally, I see many developers struggling in the job market because they don’t have the right skills. This problem affects new and experienced developers.

For example, if you’re a senior developer who’s built a career working in PHP, but all the best companies are looking for Python or Golang developers, you’re going to have a hard time getting offers.

This goes back to point 1, but companies don’t want to spend money and time cross-training new hires. It’s expensive and risky, so they favor candidates who already have the skills they think their job needs.

The problem is that for many developers with a full-time job, family, and other commitments, it’s very hard to spend time learning a new programming language on the side. Keeping up with all the new technologies in this industry is one of the most common challenges of working in this industry.

So How Do I Get Hired? 

While there are movements being made against some of these arbitrary recruitment practices, many big companies have stuck with them. So in the meantime, how do you get hired and not get discouraged throughout the job hunt?

Here are a few pointers from my experience as a job seeker as well as conversations with fellow engineering managers:

1. Network, Network, Network

If you want to avoid the black hole of online applications, you need to build a network and reach out to people. I spend between four to eight hours every week building and maintaining my network.

Networking got me my first job right out of college and every subsequent job I’ve had since then. 

I started attending conferences and meetups very early in my career. As I began making connections, people started inviting me to speak at meetups and bootcamps, even though I was relatively early in my career.

I even kept track of all the people I met and got in the habit of reaching out to reconnect with them periodically. These efforts helped me avoid much of the chaos of traditional recruitment throughout my career. 

In a recent podcast on this topic I recorded with Taylor Dorsett, Software Engineer at Home Chef, he recommended treating each meeting as a learning process, especially when you’re young. “Can I learn something from this interview? Even if I fail at the coding problem, can I connect with this individual and learn something? [Through this] I actually had really good conversations with people and interacted a lot more afterwards.”

This mirrors my own experience. Even if the people I met weren’t looking to hire at the time, I stayed in touch. When they were hiring, I was the first person they thought of.

Whether you’re an entry-level programmer trying to get a foot in the door or an experienced one trying to find the right role, networking will make it a lot easier on you.

2. Contribute to Open-Source Projects

Another way you can distinguish yourself as a candidate is to get involved in a larger, existing project. There are plenty of open-source projects you can contribute to, and you don’t have to make major updates to help. Even bug fixes and documentation updates are valuable contributions!

As an employer, this practice shows me that you can learn an existing codebase, interact with others remotely, and think critically enough to make updates. Greenfield projects are rare in the real world, so showing that you can play well with an existing codebase is a huge asset.

3. Practice Intentionally

If you want to get hired, you have two options:

One: you can limit your search to companies which don’t have annoyingly arbitrary interview practices. Four Square, for instance, has ditched whiteboard interviews in favor of assignments you can take home. Pivotal Labs offers an engaging paired-programming interview style. Networking can help you connect with managers at a number of these companies, but believe me, there are plenty of them out there.

Two: you can spend a couple of hours every week practicing coding interviews. Doing LeetCode exercises is a grind, but you will get better at them over time. Platforms like AlgoMonster and Educative can also help you learn in a more structured way by understanding the patterns rather than memorizing the answers.

You can also practice with mock interviews. I haven’t used it, but Interviewing.io is a well-respected resource where you can anonymously practice interviews with Facebook and Google engineers.

4. Share What You Know

Finally, if you’re looking to stand out from other candidates and have more opportunities come to you, educating others is a great option.

Writing tutorials, recording YouTube videos, or creating an online course is a great way to build your personal brand and prove that you’re worth hiring. I wrote regularly my whole career as an engineer, and many of the blog posts I wrote led to job offers, consulting work, or new connections. Honestly, it’s why I still write pieces like this one, and it led me to create my current company, Draft.dev.

Sharing your knowledge is a great way to help others while showcasing your skills and building an online presence.

Conclusion

The software development field is still growing exponentially and there’s a significant shortage of qualified talent in the space. 

While job hunting can be a huge pain, this is still a good field to be in. But if you’re picky, you may just have to fight a little longer to find that perfect role. Meeting new people and building a body of work you can showcase is a tried-and-tested hack to stand out as a candidate. 

If you found this article helpful or have thoughts of your own, I’d love to hear them. Leave a comment or find me on Twitter to continue the conversation.

Categories
Community

A Deep Dive into Studios Game Developers Work for

The nature of professional game developers’ work can vary depending on the type of studio they work for. In this chapter, we will explore the profile of developers working for different types of game studios, focussing on their experience, roles, and technology choices. 

For the first time in the latest edition of our Developer Nation survey, we asked professional game developers to describe the type of game studio they work for. The modern game development space has stratified itself into several different studio types, and within these studios, the types of tools and technologies used can vary significantly. Further to this, the profile of developers also shows differences between studio types.

We break down professional game developers as belonging to the following studio types:

  1. Game publishers, who outsource most of their development;
  2. Large-scale studios that develop and self-publish a collection of games;
  3. Third-party developers who work on various games from different publishers;
  4. Indie studios that publish and develop a small number of games

Here’s what we found

Game developers may be equally spread among different studio types, but we observe some important differences in their profiles. Developers with 3-5 years of experience are most commonly found in all types of studios except third-party developers; for this type of studio, their team is most likely to have 1-2 years of experience. Those with more than 11 years of experience in game development make up only a small portion of the general game developer population (11%) but have a much higher representation at indie studios (20%). 

The most experienced developers in the industry can choose where they work. They may be choosing to work for indie studios due to greater creative control over projects or a preference for working within small teams, now rarely found in AAA development. They may also make personal decisions to work for studio types that are less likely to be involved in ‘crunch’.

“Developers at Indie studios are twice as likely to be highly experienced – 16 or more years under their belts – than those working for other studio types”

Mid-career game developers–those with 6 to 15 years of experience–make up more than a third (37%) of the developer workforce in large-scale studios, compared to only a quarter (24%) among professional game developers in general. The scope and complexity of the properties that large-scale studios work on may drive demand for more experienced developers. Despite this, the most experienced developers still more frequently choose indie studios, indicating that the previously suggested factors may outweigh the offers large-scale studios can make to these developers.

Of the many roles game developers may hold, we consider game designers, artists, UI designers, programmers, and QA engineers as the ones that consumers would likely identify with game development and are often the ‘core’ roles for producing games. Differences in studios can be seen by the different percentages of developers identifying themselves with these roles. Those who self-identify as programmers account for 39% of those working for indie studios, which is significantly higher than the professional game developer average (24%). 

Similarly, the proportion of developers working for indie studios describing their roles as either game designer (46%), artist (27%), or UI designer (14%) is nearly double that of the population average, 23%, 15%, and 8%, respectively. The proportion of these roles between studios makes sense, considering the nature of development within these types of studios. Indie studios are typically smaller than other studios, with 66% of indie developers working for companies with up to 20 employees, compared to only 43% and 34% of developers working for game publishers and third-party studios, respectively. This can lead to more employees in a studio being directly involved in game design and development.

“Third-party studios have twice the proportion of developers in test roles compared to other game studios”

A counter-example can be seen with QA engineers, who are twice as prevalent in third-party studios (10%) compared to the population average (5%). Third-party studios having a larger proportion of QA engineers corresponds to their role in development cycles. These studios do a lot of development in-house, often work on larger projects, and can undertake contract work for larger studios, all of which require dedicated QA departments.

Further differences between game studios can be found in the choices of game engines. Unity and Unreal Engine are the most used game engines, with 33% and 15% of game developers using them as their primary engines, respectively. However, among developers who work for indie studios, these two game engines account for 48% and 20% of developers, compared to less than 28% and 12% for developers at other studios. Both engines are widely used and popular, with Unity being the most used engine for all studio types, but they have specific business and technical aspects that appeal to indie developers.

Why Developers use Unity

Due to its flexibility and ease of use, Unity was the common choice for indie developers when the scene emerged. This has led to a large online community and marketplace to support indie developers with tutorials, assets, and customised libraries. Unreal Engine is also popular amongst indie developers with it being considered one of the most powerful out-of-the-box engines and having a licensing structure that doesn’t require royalties to be paid until a game makes more than $1 million in revenue. The difference in popularity between the two game engines for indie developers likely lies in the availability of assets in the Unity store. Unity Asset Marketplace has over 77,000 assets and tools, compared to Unreal Marketplace’s 22,000, allowing small indie studios to offset development time with ready-made assets and tools.

“Unity and Unreal Engine are the most popular engines for game developers, with particularly high adoption by developers at indie studios”

Unity and Unreal have many tools and utilities but are not capable of performing every possible aspect of game design. In contrast, in-house or custom tools allow developers to focus on working with engines designed around the specific requirements of their games, as well as develop tools to optimise both development and performance. Amongst the large-scale and third-party studios, the second most popular engine choice is the use of either an in-house or proprietary engine–16% and 12%, respectively. These studios have the resources, time, and business motivation to focus on developing their engines. Use amongst large-scale developers is further incentivised by allowing assets and developers to move between projects more seamlessly, with a greater familiarity with the engine.

Engines Game Publishers prefer

Game publishers have a similar level of resources and time, but their in-house engines are often pivoted to commercial engines. Unreal Engine was developed by publisher EpicGames, Source from Valve, and RedEngine from CDProjektRed. Among game publishers, the engines initially developed by a publisher but are no longer in-house, make up another 15% of primary engine choices.

Less than 5% of developers working at indie studios use in-house engines; instead, Godot is the next most common engine choice. Godot is an open-source game engine that has built a strong community of developers around it. It has created supporters due to its dedicated 2D engine and its Python-like language GDScript which accommodates many Python users worldwide and is especially popular among student developers. The open-source nature of the engine also means indie developers do not have to worry about licensing or subscription changes, reducing financial demands and worries. 

Access research reports that highlight key current and emerging development trends, expertly narrated by our analysts, based on the data from our global surveys by joining the community. Click here to join