developer challenges