Categories
Tips

Infographic: What do you know about the gender gap in programming?

When you look around your classroom or office (mobile office at a coffee shop counts too), what do you see? Do you see mostly guy coders in t-shits and hoodies or is there a healthy mix of both male and female developers? Hopefully it’s the latter. But that often isn’t the case in many developer settings. It’s important to acknowledge that the gender gap in programming is still a challenge.

In our earlier post, we’ve identified that despite massive technological advancement, today only 1 in 10 programmers is a woman. To understand better possible reasons behind the gender gap, we turned to the data from our own Developer Economics survey. Our infographic sums up some of the findings from the the 18th edition of our Developer Economics survey, fielded between November 2019 and February 2020.  The survey reached more than 17,000 developers in 159 countries.

For a full story behind the data, head over to our blog post. Don’t forget to share the infographic and let’s start a discussion on this important topic!

gender gap in programming, female programmers, female developers, infographic, developer data, developer survey, developer economics
Categories
Community

What did developers have to say about our Q2 2020 survey?

Do we read your feedback? Yes we do! We LOVE to see what our community has to say and always invite feedback in our surveys.

Our 19th Developer Survey was no different. 17,241 developers took part from 165 countries and 8,200 participants left feedback. We asked developers if there was anything we forgot to ask, whether they enjoyed the experience and how we can improve in our next Developer Economics Survey. This is what they said:

developer feedback

We loved hearing from our community and our team are taking on board all your comments to make our 20th survey even better. Did we say 20th? Yes that’s right, standby for our anniversary survey! To ensure that you are notified when it’s live, sign up. Don’t forget to make sure the survey notification option is ticked, so we can email you when we are ready. 

Categories
Community

Developer Prizes: Announcing our Q2 2020 survey prize winners!

Thanks to all of you who took part in our Q2 2020 Developer Economics survey! Your responses make a difference and contribute to the developer ecosystem. We’re super excited as it is now time to announce the full list of our developer prizes and their winners!

Developers who take our surveys earn 100 points for every new survey completed, plus 10 points for providing their feedback about the survey. You can see the list of benefits and rewards here.

Exclusive Community Prize Draw for members with 801+ points – Microsoft Surface Pro 7 and One Plus 7T

WinnerCountryPrize
j*****@h******.c** MexicoMicrosoft Surface Pro 7
m*****.t*********@g****.c** LithuaniaOnePlus 7T

Exclusive Community Prize Draw for members with 801+ points – Prizes: Vouchers, branded stickers, water bottles, surprise swag, and socks

WinnerCountryPrize
j*****@h******.c**MexicoMicrosoft Surface Pro 7
m*****.t*********@g****.c**LithuaniaOnePlus 7T
S********@h******.c**Pakistan$50 Udemy or Amazon voucher
a*********@y****.c**United States$50 Udemy or Amazon voucher
l*@l****.c**Colombia$50 Udemy or Amazon voucher
p****@p**********.n***Australia$50 Udemy or Amazon voucher
c****@h******.c**United States$50 Udemy or Amazon voucher
c*******@y****.c**United StatesBranded stickers and water bottle
z*********@g****.c**TaiwanBranded stickers and water bottle
b*****@e*************.c**United StatesBranded stickers and water bottle
r******@g****.c**CanadaBranded stickers and water bottle
d*.b****@g****.c**CanadaBranded stickers and water bottle
t*******.h******@g**.d*GermanySurprise swag
s******.s******@g****.c**GermanySurprise swag
l***********@g****.c**CanadaSurprise swag
m*****@c*******.i*ItalySurprise swag
s******.t**@g****.c**MalaysiaSurprise swag

Here’s a sneak peak at the surprise swag!


developer prize - surprise swag

Exclusive Community Prize Draw for members with 501+ points Prizes: Vouchers, surprise swag, branded stickers and socks

WinnerCountry Prize
j***********@g****.c**Japan$50 Udemy or Amazon voucher
a***********@g****.c**Malta$50 Udemy or Amazon voucher
a*************@g****.c**Spain$50 Udemy or Amazon voucher
f***********@g****.c**Nigeria$50 Udemy or Amazon voucher
n.s*******@g****.c**United Kingdom$50 Udemy or Amazon voucher
k******@g****.c**ItalySurprise swag
t****.a*******@g****.c**AlgeriaSurprise swag
p**********@g****.c**South AfricaBranded stickers and socks
j********@g****.c**United StatesBranded stickers and socks
k*****.k******@g****.c**GreeceBranded stickers and socks
n********@w****.c**IsraelBranded stickers and socks
s*********@g****.c**PortugalBranded stickers and socks

Exclusive Community Prize Draw for members with 301+ points Prizes: Branded surprise swag, stickers and socks

WinnerCountryPrize
b*****@g****.c**HungarySurprise swag
g****.o**@o******.c**United KingdomSurprise swag
t***********@g****.c**United StatesBranded stickers and socks
m*********@g****.c**United StatesBranded stickers and socks

General Prize Draw

WinnerCountryPrize
h*********@g****.c**EgyptiPhone 11
d*****@y*****.r*RussiaJetBrains All Products Pack
o*********@g****.c**MexicoGitKraken Pro license
a******@o******.c**KenyaGitKraken Pro license
g****.c*****@h******.c**CanadaGitKraken Pro license
s******.a***@g****.c**IndiaGitKraken Pro license
z***********@g****.c**RussiaGitKraken Pro license
p************@g****.c**IndiaGitKraken Pro license
n************@g****.c**JapanCloud Guru x 6 months license
j*****@g****.c**RussiaCloud Guru x 6 months license
d************@g****.c**IndiaCloud Guru x 6 months license
m*******.m*******@g****.c**RussiaRaywenderlich.com 3 months Professional subscription
e****.s******.9*@g****.c**RussiaRaywenderlich.com 3 months Professional subscription
A*********@y*****.r*RussiaRaywenderlich.com 3 months Professional subscription
f.a*****@g****.c**TurkeySitePoint premium subscriptions x 6 months
n***********@g****.c**RussiaSitePoint premium subscriptions x 6 months
b****@l***.r*RussiaSitePoint premium subscriptions x 6 months
v****.m**********@g****.c**UkraineSitePoint premium subscriptions x 6 months
n*******@g****.c**RussiaSitePoint premium subscriptions x 6 months
s*************@y****.c*.u*United KingdomSeagate STGX5000400 Portable 5TB External Hard Drive HDD
r*****.c****.g*******@g****.c**VenezuelaCorsair K68 RGB Mechanical Gaming Keyboard
m*****.a********@g****.c**Nigeria$20 Amazon voucher
i***.f****@m*.e**.a*Australia$20 Amazon voucher
t***********@g****.c**Russia$20 Amazon voucher
a************@g****.c**Ghana$20 Amazon voucher
j************@g****.c**United States$20 Amazon voucher
g*****@g****.c**France$20 Amazon voucher
n***********@g****.c**Brazil$20 Amazon voucher
m***.l**.p*******@g*********.c**Japan$20 Amazon voucher
m*************@g****.c**India$20 Amazon voucher
d*******@g****.c**United States$20 Amazon voucher
m******@g****.c**Canada$20 Amazon voucher
m***.d*******@g****.c**NetherlandsBaseCode field guide – full kit
h********@g****.c**RussiaBaseCode field guide – full kit
h***@j*************.e*SpainBaseCode field guide – full kit
t*************@g****.c**South AfricaBaseCode field guide – full kit
d****.b****@f*******.c**FranceBaseCode field guide – full kit
a****************@g****.c**UkraineBaseCode field guide – full kit
r****@m***.r* RussiaIntroduction to Algorithms, 3rd Edition (The MIT Press)

The State of AR/VR Survey Prize Draw

WinnerCountryPrize
h******@g****.c**MexicoOculus Quest 64GB
i******@g****.c**United KingdomSketchfab 12 month Pro License
m*******.t*****@g****.c**United StatesOctaneRender Studio for Unity – 12 months license
d*********@g****.c**United StatesiPhone 11
a****.q**********@g****.c**CanadaVufori12 months Basic License
a***.p********@g****.c**IndiaVR Ninjas Virtual Reality Mat
n******.c******.f@g****.c**ChileVR Ninjas Virtual Reality Mat

Extra Prize Draws

WinnerCountryPrize
s*******.1*@g****.c**India$50 Amazon voucher
j**********@i*****.c**BrazilDeveloper Economics hoodie
s*****.b********@g****.c**United StatesAugmented Reality: Principles and Practice (Usability) book
m***.l****@g****.c**United StatesThe Pragmatic Programmer: 20th Anniversary Edition, 2nd Edition: Your Journey to Mastery book
f********@b*.r*KazakhstanInsomniPlus license ($50 value) – Debug APIs like human, not robot
p*********@g****.c**VietnamDeveloper Economics hoodie
s*******@g****.c**RussiaSoft Skills: The software developer’s life manual
s******.l*****@g****.c**South AfricaDeveloper Economics hoodie
t*****************@g****.c**South Africa$20 Amazon voucher
r*************@g****.c**NigeriaThe 10X Rule: The Only Difference Between Success and Failure book
r**********@g****.c**GermanyDeveloper Economics hoodie
2*******@w**.d*Germany$20 Amazon voucher
m********@b*.r*RussiaGame Engine Architecture, Third Edition book
m**************@n****.c**IndonesiaDeveloper Economics hoodie
m************@m***.r*Russia$20 Amazon voucher
m*****.b****@g****.c**SpainPrecision: Principles, Practices and Solutions for the Internet of Things book
g*********.s**@g****.c**VietnamDeveloper Economics hoodie
l*********@g****.c**India$20 Amazon voucher
d********@g****.c**NigeriaDeep Learning (Adaptive Computation and Machine Learning series) book
j**************@y****.c**United StatesDeveloper Economics hoodie
s***********@g****.c**Russia$20 Amazon voucher
s***********@g****.c**RussiaRaywenderlich.com 3 months Professional subscription
m******.b********@g****.c**IndiaDeveloper Economics hoodie
x*******@y****.c*.j*Japan$20 Amazon voucher
v************@g****.c**UkraineMastering Bitcoin: Programming the Open Blockchain 2nd Edition book
o******.m******@c**********.n**FranceDeveloper Economics hoodie
d*******@g****.c**United States$20 Amazon voucher
p***********@m***.r*RussiaThe Phoenix Project: Novel about IT, DevOps, and Helping Your Business Win
j********@g****.c**South Africa$20 Amazon voucher
g*************@g****.c**IndonesiaDeveloper Economics hoodie

Dicoding Prize Draw – Dicoding Learning Path (Beginner Android or Beginner Web class or mixed) Exclusive developers taking the survey from Indonesia

Winners
g**********@g****.c**
t**************@g****.c**
w********@g****.c**
y*******@g****.c**
d***************@g****.c**
r***********@g****.c**
a***************@g****.c**
s**************@g****.c**
a**********@g****.c**
h**********@g****.c**
w******@g****.c**
f*********@g****.c**
a***************@g****.c**
a******************@g****.c**
r****.h****@g****.c**
t****.i********@g****.c**
w**********@g****.c**
w**************@g****.c**
d**************@g****.c**
m***********@g****.c**
r********@g****.c**
a************@g****.c**
i******@g****.c**
s*********@g****.c**
m*******@g****.c**

We’ve already reached out to the winners by email. Do you recognise one of the email addresses as yours but haven’t received your email yet? Please contact us at community@developereconomics.com

The lists above only include prize-draw winners and not runner-ups. If the prize draw winners do not claim their prizes within 10 workings of us contacting them, then runner-ups will be invited to claim them instead. 

Some of the winners have generously donated the cost of their prize to Techfugees, the charity we supported during the survey. 

We’d like to say a special thanks to the lovely people at BaseCode, Dicoding, GitKraken, SitePoint, Sketchfab who supported us during our Q2 2020 Developer Economics survey by donating a prize – you rock!!

If you’re not a winner, don’t despair, our next survey, our 20th (!!), will be live later this year. We’re already on the hunt for some amazing prizes, and open to your suggestions. What prizes would you like to win? Drop us an email or send us a Tweet.

To ensure that you are notified when our next survey is live, sign up. Don’t forget to make sure the survey notification option is ticked.

Categories
Tips

Common developer frustrations and how to overcome them

Derek Lee Boire, Senior Member of Technical Staff at VMware Pivotal Labs, addresses common developer frustrations, such as decision fatigue,  and the tools and methods to overcome them.

If you’re a developer, whether you realize it or not, you’ve probably experienced ‘decision fatigue’ at one point in your career. Decision fatigue occurs when the quality of the decisions we make deteriorates due to the mental fatigue of having already made a lot of decisions. While some people may want to believe that they have infinite willpower, our mental energy and focus has a limit no different than our physical bodies do. You can train long, or you can train hard – either way your body will tire eventually.

But just as we can train our bodies to endure additional stress, we can also train our minds to increase our focus. Or ideally – simplify our work to allow us to save our energy for the mental challenges that really make a difference. For example, a person with a clear idea of how they would like to manage their diet will be able to make easier decisions when grocery shopping, which can be helpful when different options are particularly abundant.  

While this example refers to a relatively simple, personal decision, it’s even more important to alleviate the burden of choice for more complex decisions which involve a greater number of stakeholders. These are the types of decisions software developers will make with each line of code written, putting them at a high-risk of experiencing decision fatigue. Here we look at some of the ways in which decision fatigue and other common developer frustrations that can manifest in software development, and the tools and methods that can be employed to combat them.

Common developer frustrations

Discoverability

If there is a task that must be performed many times, or takes a long time to do manually, or is complicated and error-prone, developers should consider using automation. Continuous integration and continuous delivery (CI/CD), the practice of automating testing and deployment of your application, is one example of this. When you automate a process, you don’t just make it easier to execute, save time, and ensure consistency – you also make it discoverable. 

This means that if a new member joins the team and has never worked with CI/CD before, reviewing the script that manages this automated process will help them to easily understand how the application is deployed. 

This can apply to source-code as well. If you’ve ever worked on a backend API that is consumed by others, you know how important it is for your API to be easily understood in order for users to easily consume it. This same level of understanding can be applied to your internal APIs that you build for yourself, for future you, and for other members of your team. 

As software engineers, we are all authors. As such, we need to consider the audience who is consuming the code that we are writing. 

Rabbit Holes

When working independently, it can be easy to find yourself lost down a “rabbit hole” – deep into trying to solve a problem and unable to remember where you had started or why you went down this route in the first place. Developers working in isolation are particularly prone to finding themselves in a rabbit hole, which is a sure-fire sign that decision fatigue is settling in. 

Collaborative development processes, like pair programming, help developers avoid rabbit holes through creating a culture of fast feedback and knowledge-sharing. When there’s only one person who understands how a specific feature was implemented, this carries a risk for the team if that person is out on vacation, happens to get sick, or is out for any number of reasons, then the team can get stuck. 

One recommended practice for pair programming is to rotate who pairs with who daily to ensure that several different team members have knowledge of how each part of the system works. This is a great way to share knowledge throughout the team as well as to ensure that the team can always continue to make forward progress, even if a team member is unavailable. 

Pair programming is built upon equality and mutual respect, a by-product of which is the establishment and/or sustenance of a culture of knowledge-sharing. Approaches to collaboration based on equal parts observation and communication are always more effective in keeping people engaged. After all, too much of one or not enough of the other can make it difficult to concentrate, which is especially detrimental when trying to absorb or share knowledge.  For example, I recently learned from a pair programming session about how test-driven deployment (TDD) could be applied to configuring docker containers using scripting purely vicariously.

Domino Code

Unsure how to implement a new feature or enhance an existing feature? If there’s a similar feature in the application, it could be a good reference so you can just follow the existing code patterns and tack on the new functionality, right? Sure, this might work for the first or second time – but by the third or fourth time you’ve repeated this pattern, it could start to get unwieldy. The easy way may be to follow the same pattern, and this can be good to maintain consistency in the codebase. However, to ensure that the software can continue to evolve, a different abstraction might be helpful. 

Developers often see an existing pattern and simply copy and paste or tack on more of the same.  While the pattern may have been easy to understand when it was initially implemented, repeated use can eventually create a ‘domino’ effect –  whereby that same pattern, at scale, may no longer serve the code after it has evolved. 

While there are some developers who are strictly against code duplication, it can sometimes actually be helpful. There’s a delicate balance between code duplication and creating a premature abstraction. Sometimes duplication is, in fact, necessary if an abstraction or cleaner way of writing can’t yet be discerned. It can be good to just let the code “simmer” for a bit longer and see how it will evolve. 

Developers should therefore be aware of the code being copied or the patterns continually being promoted in the code. The next time you find an existing code pattern and your initial instinct is to simply copy it, consider this: the next time you or someone else encounters this code, would it make sense to continue using this pattern, or is it time to consider refactoring or creating an abstraction? A good example is when a class becomes so long that it is difficult to manage (also known as ‘long class code smell’ amongst developers). The easy action is to continue to add to it and make it longer. When you detect this “smell”, consider if it would become easier to manage if it was broken down into more than one class. Are there multiple responsibilities within the same class that could be separated?

Culture of Growing and Sharing Knowledge

This is by no means an exhaustive list of all practices for building code which works for everyone. Consistency in the practices deployed (i.e. code style, formatting, automation) is another significant area where many of the major barriers can be overcome. But the first step toward implementing any of the practices described here involves a more widespread, cultural change within the organisation itself. 

Developers work best when organisational culture promotes growing and sharing knowledge within the team. This should be approached comprehensively rather than on the basis of incentives: “lunch and learn” sessions are great, but free food will only get you so far when you don’t really get to take a break from work. Instead, development teams should tie core values like communication, courage and respect to every aspect of the work they do. Doing this will help alleviate common barriers faced by developers to writing great software, while also contributing to an increase in productivity, quality of work, and developer well-being.

About

Derek Lee Boire is a Senior Member of Technical Staff at VMware Pivotal Labs. Derek’s career as an IT professional and consultant has given him experience in every aspect of software development. From working with clients to understand and detail their requirements, prototyping solutions, designing technical architectures for large-scale systems, leading development teams and helping implement agile design methodologies. 

GitHub: derekleerock

Twitter: @derekleerock

Further reading

We cover Dev Ops CI/CD usage trends here. Interested in insights? Check out our latest research reports and graphs based on data from developers like you who took our global surveys.