Do you authorize the makers of this survey to use the data you provide in the survey for research purposes and to publish it in anonymized form? This authorization is required for you to take the survey.,Which is the highest level of formal education that you graduated?,How long professional experience (in any profession) do you have? ,How long do you code? (Please include also coding for fun) ,"How long professional experience in software development do you have? (Please include programming, testing, administration, management etc.)",How long professional experience in programming do you have? ,How long professional experience in programming in object-oriented paradigm do you have?,How long professional experience in programming in functional paradigm do you have?,How long professional experience in programming in JVM-based languages do you have?,How long professional experience in programming in Java do you have?,In which country did you spend most of your programming career? ,Which company are you currently working for?,Which programming languages did you use throughout your career?,Which of those tools did you ever use?,Which of those industries did you work in?,Which of those roles have you held throughout your professional career?,Which of those are your current roles?,When were you last involved in programming activities (in any programming language)?,"Did you work in projects of following sizes (counting all people involved, not only developers)",How long does an average project you work on take?,Do you write code as a hobby?,Do you prefer to work in the office or remotely?,Do you contribute to open source projects?,Which of those programming paradigms do you use during programming?,"When you choose a language for new project, which reasons do you take into consideration?",Are you familiar with the concept of code reviews?,How long have you been conducting regular code reviews for your peers?,Code in which of those languages would you feel comfortable reviewing? ,Are you familiar with the concept of code smells?,Which of the following code smells do you believe you can recognize?,"Do you use names of code smells (Blob, Shotgun Surgery etc.) during discussions with your peers?","Do you feel that code smells in traditional sense (Feature Envy, Blob, Shotgun Surgery) make the code less maintainable?","How big problem is Blob (1 - not at all, 5 - significant)? Please don't answer if you're not familiar with this code smell","How big problem is Data Class (1 - not at all, 5 - significant)? Please don't answer if you're not familiar with this code smell","How big problem is Feature Envy (1 - not at all, 5 - significant)? Please don't answer if you're not familiar with this code smell","How big problem is Long Method (1 - not at all, 5 - significant)? Please don't answer if you're not familiar with this code smell","How big problem is Shotgun Surgery (1 - not at all, 5 - significant)? Please don't answer if you're not familiar with this code smell","How big problem is Inappropriate Intimacy (1 - not at all, 5 - significant)? Please don't answer if you're not familiar with this code smell","How big problem is Refused Bequest (1 - not at all, 5 - significant)? Please don't answer if you're not familiar with this code smell",Do you feel that a catalogue of code smells may be something useful to you?,Do you feel that concept of code smell can be transferred between programming languages?,Which factors do you believe are relevant when assessing if a given code fragment is a code smell?,What is your opinion about the concept of code smells?,What is the biggest problem you encounter in code written by other people?,What is the biggest problem you encounter in your code after some time?,Which problem is the most frustrating one that you encounter during programming?,What are the biggest problems in code that you encounter?,Which quality assurance techniques do you perceive as useful?,Which quality assurance techniques do you use in your daily work?,"Which elements should, in your opinion, be part of code review?",Do you believe that reviews contribute to code quality?,Which of the following should be provided by automatic static analysis tool?,How important is customization for static analysis?,How do you feel about current state-of-the-art static analysis tools?,What do you believe to be the biggest problem of static analysis tools?,Please describe your earlier experience with static analysis and linting tools,Submitted At,reviewer_id TRUE,Bachelor of Science (BSc) / Bachelor of Engineering (BEng),1Y2M,3Y7M,1Y1M,1Y1M,0Y9M,1Y1M,0Y9M,0Y9M,Great Britain,1,"Groovy, Java, JavaScript, TypeScript, bash","A linter, A static analysis tool (e.g., FindBugs), A compiler","Banking / Finance, Retail, Food",Junior Software Developer/Engineer,Student - Master level,I am still involved in them,>50 kLoC or >5 people,Over 3 years,TRUE,In the office,"No, I don't","Procedural, Object-oriented, Functional","Skillsets of your team, Current industry trends, Code maintenance difficulty","Yes, I know about them and use them",Between half a year and two years,"Groovy, Java, JavaScript, TypeScript, bash","Yes, I know what they are","Blob / God Class, Long Method, Data Class, Feature Envy, Shotgun Surgery, Swiss Army Knife",FALSE,"Definitely, that's why the concept was invented",5,1,4,5,3,,,"Not sure, maybe I'd take a glance or two","In a family of languages, with minor adjustments","Its complexity, How well it is tested, Language conventions and restrictions, Project conventions and restrictions, Its change proneness","The concept itself is useful, but it's an oversimplification (e.g. doesn't include industry and other project-specific needs)","The code is ill-conceived – mostly it works, but doesn't conform to SOLID",It's contrived - I tend to use design patterns where it can be simplified other way,There are no perfect solutions,"Untested code, Cascading changes, Code not adhering to common style, Undocumented code","Unit testing, Integration/system testing, Linting, Static analysis (e.g. model checking, symbolic execution), Code review","Code review, Unit testing, Integration/system testing, Linting, Program proving, Automated API testing, E2E","Manual application execution, Code style checking, Checking for typical code smells, Verification of correctness of test cases, Advising on how to deal with the problem (not only pointing it out)","Yes, positively","Checking for forbidden patterns (e.g. linters), Checking for common high-level antipatterns, Defect prediction, Code style checking",Not very important - the rules should be given by the toolmaker and only modified rarely,They're great,Too resource-consuming,I started using them at the university and they made me aware of many things I did wrong. I always read upon vulnerabilities they show.,3/14/2019 21:39:08,8 TRUE,Bachelor of Science (BSc) / Bachelor of Engineering (BEng),0Y7M,4Y0M,0Y6M,0Y6M,0Y6M,0Y0M,0Y6M,0Y0M,Poland,2,"C#, Java, JavaScript, TypeScript",A compiler,Manufacturing,Junior Software Developer/Engineer,Student - Master level,I am still involved in them,>50 kLoC or >5 people,Less than 6 months,TRUE,In the office,"No, I don't","Object-oriented, Functional","Your own skillset, Tool availability (e.g., static analysis, security checks etc.), Current industry trends, Learning curve","Yes, I know about them and use them",I don't conduct code reviews,Java,"Not really - I heard about them, but never cared much","Blob / God Class, Long Method",FALSE,"I'd assume so, but in my experience I hardly ever find this a problem",,,,,,,,"Not sure, maybe I'd take a glance or two",Only between very similar languages,,"The concept itself is useful, but it's an oversimplification (e.g. doesn't include industry and other project-specific needs)",Everyone has its own style of coding. It's very hard to understand the concept of someone's code even if it is written in some kind of standard. ,I do not rememer idea that i had when i was writting the code,Bad decisions from start that needed to be rewrite instead of refactor or expand,"Functional defects, Cascading changes, Undocumented code",Code review,"Unit testing, Code review","Code style checking, Verification of correctness of test cases","Yes, positively",Code style checking,Not very important - the rules should be given by the toolmaker and only modified rarely,I don't use any,,I didn't use one,3/16/2019 9:45:26,9 TRUE,Bachelor of Science (BSc) / Bachelor of Engineering (BEng),1Y8M,4Y0M,1Y7M,1Y7M,1Y7M,0Y0M,0Y0M,0Y0M,Poland,3,"JavaScript, SQL, TypeScript, C#","A static analysis tool (e.g., FindBugs), A compiler, A linter",Retail,Junior Software Developer/Engineer,"Student - Master level, Junior Software Developer/Engineer",I am still involved in them,>1 MLoC or > 50 people,Between 1 and 3 years,FALSE,In the office,"No, I don't",Object-oriented,Skillsets of your team,"Yes, I know about them and use them",Between half a year and two years,"C#, JavaScript, SQL","Somewhat - I heard about them and maybe used some tools, but never dug deeper","Data Class, Long Method, Blob / God Class",FALSE,"Definitely, that's why the concept was invented",3,2,3,4,,,,"Yes, I'd gladly use it","Yes, but it may no longer be meaningful","Its dependencies, Its change proneness, Its complexity, Its size","The concept itself is useful, but it's an oversimplification (e.g. doesn't include industry and other project-specific needs)",Code was not refactored,Too many layers - middle man,Designing good architecture,"Rigid structures (hard to adapt when requirements change), Functional defects, Cascading changes, Untested code","Linting, Static analysis (e.g. model checking, symbolic execution), Code review, Unit testing, Integration/system testing","Unit testing, Integration/system testing, Static analysis (e.g. model checking, symbolic execution), Code review","Code style checking, Checking for forbidden patterns (e.g. linters), Checking for typical code smells, Verification of correctness of test cases","Yes, positively","Defect prediction, Checking for common high-level antipatterns, Checking for forbidden patterns (e.g. linters), Code style checking","Quite important in the beginning, but once best practices for language and organization are settled, they don't change much",They could be better,Too obvious problems,,3/20/2019 6:48:25,15 TRUE,Bachelor of Science (BSc) / Bachelor of Engineering (BEng),1Y5M,7Y7M,1Y0M,1Y0M,1Y0M,0Y0M,1Y0M,1Y0M,Poland,4,"SQL, JavaScript, TypeScript, C#, Groovy, Java","A compiler, A static analysis tool (e.g., FindBugs)","Automotive, Retail","Software Tester, Junior Software Developer/Engineer","Student - Master level, Junior Software Developer/Engineer",I am still involved in them,">1 MLoC or > 50 people, >250 kLoC or > 20 people, >50 kLoC or >5 people",Less than 6 months,TRUE,Remotely,"No, I don't","Object-oriented, Functional","Your own skillset, Current industry trends","Yes, I know about them but do not use them",,"SQL, Java","Yes, I know what they are","Feature Envy, Inappropriate Intimacy, Shotgun Surgery, Swiss Army Knife, Blob / God Class, Long Method, Data Class",TRUE,"Definitely, that's why the concept was invented",3,1,4,3,5,4,,"Not sure, maybe I'd take a glance or two","In a family of languages, with minor adjustments","Its change proneness, Its size, Its dependencies, Its complexity","The concept itself is useful, but it's an oversimplification (e.g. doesn't include industry and other project-specific needs)",It depends on the person,Sometimes I find fields for improvement if the code is really old and my skills have grown,I sometimes get lost if my own code if the functionality is really big and complicated and I need a lot of time to analyze it while programming,"Code not adhering to common style, Cascading changes, Functional defects, Rigid structures (hard to adapt when requirements change)","Unit testing, Integration/system testing, Performance testing, Code review",Integration/system testing,"Verification of correctness of test cases, Code style checking, Checking for typical code smells","Yes, positively","Code style checking, Checking for common high-level antipatterns, Defect prediction","Quite important in the beginning, but once best practices for language and organization are settled, they don't change much",I don't use any,Too obvious problems,I have very little experience,3/20/2019 10:47:07,6 TRUE,Bachelor of Science (BSc) / Bachelor of Engineering (BEng),1Y6M,3Y0M,1Y6M,6M,0Y6M,0Y0M,0Y6M,0Y6M,Poland,4,"Java, JavaScript","A linter, A static analysis tool (e.g., FindBugs), A defect prediction tool, A compiler",,,"Junior Software Developer/Engineer, Student - Master level",I am still involved in them,>100 kLoC or > 10 people,Between 6 months and 1 year,TRUE,In the office,"No, I don't","Object-oriented, Functional","Skillsets of your team, Tool availability (e.g., static analysis, security checks etc.), Current industry trends, Community support, Learning curve","Yes, I know about them and use them",Less than half a year,Java,"Yes, I know what they are","Blob / God Class, Long Method, Data Class, Feature Envy",TRUE,"Definitely, that's why the concept was invented",3,4,4,4,,,,"Yes, I'd gladly use it","In a family of languages, with minor adjustments","Its size, How well it is tested, Its dependencies, Its complexity, Its change proneness, Its heterogenity","The concept itself is useful, but it's an oversimplification (e.g. doesn't include industry and other project-specific needs)",Overusing inline code using Java Streams that was hard to read and nearly impossible to debug. Code not tested or tested not fully/unproperly,"Too large methods, unclear pieces of code",Setting up environment and incompatible versions of libraries,"Functional defects, Untested code, Code not adhering to common style","Unit testing, Integration/system testing, Static analysis (e.g. model checking, symbolic execution), Code review","Unit testing, Integration/system testing, Code review, Static analysis (e.g. model checking, symbolic execution)","Checking for forbidden patterns (e.g. linters), Checking for typical code smells, Verification of correctness of test cases","Yes, positively","Defect prediction, Code style checking, Checking for forbidden patterns (e.g. linters), Checking for common high-level antipatterns","Quite important in the beginning, but once best practices for language and organization are settled, they don't change much",They're great,Too many false positives,"Used them in professional project. They are really useful, they speed up code review and help to keep code cleaner and of better quality.",3/20/2019 10:42:10,23 TRUE,Bachelor of Science (BSc) / Bachelor of Engineering (BEng),2Y0M,3Y6M,2Y0M,2Y0M,2Y0M,0Y2M,3Y0M,3Y0M,Poland,5,"Java, JavaScript, Kotlin, Scala, SQL, C++, Bash","A compiler, A linter, A static analysis tool (e.g., FindBugs), A defect prediction tool",Telecommunication,"Junior Software Developer/Engineer, Software Developer/Engineer","Student - Master level, Junior Software Developer/Engineer",I am still involved in them,">1 MLoC or > 50 people, >250 kLoC or > 20 people, >100 kLoC or > 10 people",Over 3 years,TRUE,,"No, I don't","Object-oriented, Functional","Toolchain complexity, Tool availability (e.g., static analysis, security checks etc.), Current industry trends, Community support, Learning curve, Your own skillset, Skillsets of your team, Availability of libraries","Yes, I know about them and use them",Less than half a year,Java,"Somewhat - I heard about them and maybe used some tools, but never dug deeper","Blob / God Class, Long Method, Feature Envy, Inappropriate Intimacy",FALSE,"I'd assume so, but in my experience I hardly ever find this a problem",4,1,4,3,3,3,,"Yes, I'd gladly use it","Yes, but it may no longer be meaningful","Its complexity, Its change proneness, Its size","This is a useful concept, that simplifies talking about a problem, but we should not stick to pre-defined names","Lack of clean code, spaghetti code","No tests, code hard to change",spaghetti code,"Rigid structures (hard to adapt when requirements change), Untested code, Undocumented code","Unit testing, Integration/system testing, Static analysis (e.g. model checking, symbolic execution), Code review","Code review, Unit testing, Integration/system testing, Performance testing, Static analysis (e.g. model checking, symbolic execution)","Code style checking, Checking for typical code smells, Verification of correctness of test cases, Checking for forbidden patterns (e.g. linters)","Yes, positively","Code style checking, Checking for forbidden patterns (e.g. linters), Checking for common high-level antipatterns, Defect prediction","Quite important in the beginning, but once best practices for language and organization are settled, they don't change much",They provide only basic features,Most useful errors are raised by compiler anyway,,3/20/2019 10:42:24,25 TRUE,Bachelor of Science (BSc) / Bachelor of Engineering (BEng),,6Y7M,0Y9M,0Y9M,0Y9M,0Y0M,0Y0M,0Y0M,Poland,6,"C#, SQL",A compiler,Banking / Finance,Junior Software Developer/Engineer,Junior Software Developer/Engineer,I am still involved in them,>250 kLoC or > 20 people,Between 6 months and 1 year,TRUE,In the office,"No, I don't",Object-oriented,"Skillsets of your team, Availability of libraries, Current industry trends","Yes, I know about them but do not use them",,"C#, SQL","Somewhat - I heard about them and maybe used some tools, but never dug deeper","Data Class, Long Method, Blob / God Class, Feature Envy",FALSE,"Definitely, that's why the concept was invented",4,3,4,4,,,,"Yes, I'd gladly use it",Only between very similar languages,"Its complexity, Its size, Project conventions and restrictions, Language conventions and restrictions","This is a useful concept, that simplifies talking about a problem, but we should not stick to pre-defined names"," Failure to comply with the convention"," Bad naming of variables, functions and classes"," Incomprehensible tasks","Untested code, Cascading changes","Unit testing, Code review",Code review,"Code style checking, Checking for typical code smells, Checking for forbidden patterns (e.g. linters)","Yes, positively",Checking for common high-level antipatterns,"Quite important in the beginning, but once best practices for language and organization are settled, they don't change much",I don't use any,Too resource-consuming,Lack,3/20/2019 10:59:03,7 TRUE,Master of Science (MSc) / Master of Engineering (MEng),6Y3M,11Y3M,6Y3M,6Y3M,5Y8M,3Y2M,3Y6M,1Y5M,Poland,7,"C++, Java, JavaScript, Perl, Scala, TypeScript, Go, PHP, Python, Lua","A static analysis tool (e.g., FindBugs), Mutation tester, A compiler, A linter, Proof assistant","Banking / Finance, Telecommunication, Manufacturing, Academia, Consulting","Software Developer/Engineer, Senior/Lead Software Developer/Engineer","Senior/Lead Software Developer/Engineer, Student - PhD level",I am still involved in them,">50 kLoC or >5 people, 1 person, >1 MLoC or > 50 people, >100 kLoC or > 10 people",Between 1 and 3 years,TRUE,In the office,"Yes, I write code or documentation, Yes, I create issues","Object-oriented, Functional","Skillsets of your team, Community support, Learning curve, Availability of libraries, Toolchain complexity, Your own skillset","Yes, I know about them and use them",More than two years,"JavaScript, Scala, TypeScript, C++, Java","Yes, I know what they are","Inappropriate Intimacy, Blob / God Class, Long Method, Data Class, Feature Envy, Shotgun Surgery, Swiss Army Knife",FALSE,"Definitely, that's why the concept was invented",4,1,4,3,4,5,5,"Not sure, maybe I'd take a glance or two",Only between very similar languages,"Language conventions and restrictions, Its complexity, Its change proneness, Its heterogenity, Its size, Project conventions and restrictions, How well it is tested, Its dependencies","This is a useful concept, that simplifies talking about a problem, but we should not stick to pre-defined names","Brute-force methods of solving problems (e.g. by adding flags when unnecessary, big if-else ladders etc.) and lack of proper typing (e.g. using raw integers instead of dedicated types)",Overengineering - too many design patterns or levels of abstraction applied without need,"Depends on the language - for ones with dynamic typing - lack of type checks, for ones with static typing - either lack of proper abstractions or complexity of some solutions that would seem common (e.g. Scala macros)","Rigid structures (hard to adapt when requirements change), Functional defects, Fragile structures (changing very often), Cascading changes, Untested code","Unit testing, Integration/system testing, Performance testing, Static analysis (e.g. model checking, symbolic execution), Program proving, Code review, Fuzzing","Linting, Code review, Unit testing, Integration/system testing, Performance testing","Verification of correctness of test cases, Manual change correctness assessment","Yes, positively","Code style checking, Checking for forbidden patterns (e.g. linters), Checking for common high-level antipatterns","Quite important in the beginning, but once best practices for language and organization are settled, they don't change much",They provide only basic features,Most useful errors are raised by compiler anyway,"Linters help preserve common code layout and remove some typical ""no-nos"" which is useful, but often overrated, especially for smaller teams. For bigger ones it may be a good choice. Static analysis tools (like Klocwork) usually have very defensive settings, which means that they detect many more things than are actually troublesome, and extracting useful info from the noise is hard - especially that newer compilers (clang, rustc, dotty) provide quite sophisticated analysis themselves and report warnings on many suspicious patterns.",04/01/2019 10:26,3 TRUE,Bachelor of Science (BSc) / Bachelor of Engineering (BEng),1Y9M,4Y0M,0Y9M,0Y9M,0Y9M,0Y9M,0Y0M,0Y0M,Poland,,"Swift, C++, R, Scala, SQL, Python, Assembly, C#, Java, JavaScript","A compiler, A linter",Gaming,"Designer, Junior Software Developer/Engineer","Junior Software Developer/Engineer, Student - Master level",I am still involved in them,">50 kLoC or >5 people, >100 kLoC or > 10 people, >1 person",Between 6 months and 1 year,TRUE,Remotely,"No, I don't","Object-oriented, Functional","Community support, Your own skillset, Skillsets of your team","Yes, I know about them but do not use them",,C#,"Somewhat - I heard about them and maybe used some tools, but never dug deeper","Long Method, Blob / God Class, Data Class, Feature Envy",TRUE,"Definitely, that's why the concept was invented",4,3,3,2,,,,"Yes, I'd gladly use it","Yes, but it may no longer be meaningful","Its heterogenity, Its complexity, Its size, Its change proneness","This is a useful concept, that simplifies talking about a problem, but we should not stick to pre-defined names",,,,"Rigid structures (hard to adapt when requirements change), Untested code, Undocumented code","Code review, Performance testing","Code review, Performance testing","Manual change correctness assessment, Checking for typical code smells","Yes, positively","Code style checking, Checking for common high-level antipatterns, Defect prediction",Not very important - the rules should be given by the toolmaker and only modified rarely,They provide only basic features,Too many false positives,,04/09/2019 17:21,13 TRUE,Master of Science (MSc) / Master of Engineering (MEng),15Y0M,15Y0M,15Y0M,15Y0M,15Y0M,0Y0M,10Y0M,10Y0M,Poland,8,"Delphi, Java, Go, Elixir, Ruby, JavaScript, Python, Swift","A compiler, A linter, A static analysis tool (e.g., FindBugs), A defect prediction tool","Entertainment, Banking / Finance, Consulting","Other management role, Junior Software Developer/Engineer, Software Developer/Engineer, Senior/Lead Software Developer/Engineer, Project Manager, Architect",Other management role,In the last year,>250 kLoC or > 20 people,Between 6 months and 1 year,TRUE,In the office,"No, I don't","Object-oriented, Procedural","Your own skillset, Skillsets of your team, Availability of libraries","Yes, I know about them and use them",More than two years,"Java, Ruby, Objective-C","Yes, I know what they are","Blob / God Class, Long Method, Data Class, Feature Envy, Shotgun Surgery",TRUE,"Definitely, that's why the concept was invented",5,4,5,5,3,,,"Yes, I'd gladly use it","In a family of languages, with minor adjustments","Its complexity, Its size, Its change proneness","This is a useful concept, that simplifies talking about a problem, but we should not stick to pre-defined names",Lack of conventions and too long methods.,Over Engineering,,"Cascading changes, Code not adhering to common style, Functional defects, Rigid structures (hard to adapt when requirements change)","Integration/system testing, Static analysis (e.g. model checking, symbolic execution), Code review, Unit testing","Unit testing, Integration/system testing, Static analysis (e.g. model checking, symbolic execution), Linting, Code review","Checking for forbidden patterns (e.g. linters), Code style checking, Checking for typical code smells, Manual application execution","Yes, positively","Defect prediction, Checking for common high-level antipatterns, Code style checking, Checking for forbidden patterns (e.g. linters)","Quite important in the beginning, but once best practices for language and organization are settled, they don't change much",They could be better,Too many false positives,,4/25/2019 7:26:22,20 TRUE,Other Master-level,1Y3M,2Y3M,1Y3M,1Y3M,1Y3M,0Y0M,0Y0M,0Y0M,Poland,,"JavaScript, Ruby, Go",A linter,"Banking / Finance, Retail","Junior Software Developer/Engineer, Software Developer/Engineer",Software Developer/Engineer,I am still involved in them,>1 person,Between 6 months and 1 year,TRUE,Doesn't matter,"No, I don't",Object-oriented,Your own skillset,"Yes, I know about them and use them",Less than half a year,Ruby,"Yes, I know what they are","Blob / God Class, Long Method, Data Class, Feature Envy, Swiss Army Knife",FALSE,"Definitely, that's why the concept was invented",5,1,3,4,,,,"Yes, I'd gladly use it",Only between very similar languages,"Its size, Its age, How well it is tested, Its complexity","This is a useful concept, that simplifies talking about a problem, but we should not stick to pre-defined names",,,,"Rigid structures (hard to adapt when requirements change), Functional defects, Fragile structures (changing very often), Untested code, Undocumented code","Integration/system testing, Code review","Integration/system testing, Linting, Code review","Manual application execution, Verification of correctness of test cases","Yes, positively",Checking for common high-level antipatterns,"Quite important in the beginning, but once best practices for language and organization are settled, they don't change much",They provide only basic features,Too obvious problems,,4/25/2019 7:40:24,11 TRUE,Secondary school (or lower),13Y,6Y,5Y,5Y,5Y,1Y,0Y1M,0Y0M,Poland,8,"Elixir, JavaScript, Kotlin, Ruby, SQL","Mutation tester, A compiler, A linter, A static analysis tool (e.g., FindBugs)","Retail, Literature","Junior Software Developer/Engineer, Software Developer/Engineer, Senior/Lead Software Developer/Engineer, Software Tester",Senior/Lead Software Developer/Engineer,I am still involved in them,">50 kLoC or >5 people, >1 person",Between 6 months and 1 year,TRUE,Remotely,"Yes, I create issues, Yes, I write code or documentation","Object-oriented, Functional","Your own skillset, Skillsets of your team, Availability of libraries, Current industry trends, Community support, Learning curve","Yes, I know about them and use them",More than two years,"Elixir, Ruby","Yes, I know what they are","Feature Envy, Blob / God Class, Long Method, Data Class",TRUE,"Definitely, that's why the concept was invented",5,1,3,,,,,"Yes, I'd gladly use it","In a family of languages, with minor adjustments","Language conventions and restrictions, Its size, Project conventions and restrictions, How well it is tested, Its dependencies, Its complexity","This is a useful concept, that simplifies talking about a problem, but we should not stick to pre-defined names",Not enough care and thought put into design and execution of the code and business logic.,Poor maintainability.,Discovering that my solutions are not exactly scalable.,"Rigid structures (hard to adapt when requirements change), Fragile structures (changing very often)","Code review, Unit testing, Integration/system testing, Mutation testing, Linting","Code review, Unit testing, Integration/system testing, Linting","Verification of correctness of test cases, Code style checking, Checking for forbidden patterns (e.g. linters), Checking for typical code smells, Manual application execution","Yes, positively","Defect prediction, Code style checking, Checking for forbidden patterns (e.g. linters), Checking for common high-level antipatterns","Quite important in the beginning, but once best practices for language and organization are settled, they don't change much",They're great,Too many false positives,Rubocop and Credo. Worked OK.,4/25/2019 7:45:06,14 TRUE,Master of Science (MSc) / Master of Engineering (MEng),6Y3M,10Y0M,6Y3M,6Y3M,6Y3M,1Y0M,6Y3M,6Y3M,Poland,8,"Java, Kotlin","A linter, A static analysis tool (e.g., FindBugs), A compiler",Consulting,"Junior Software Developer/Engineer, Software Developer/Engineer, Senior/Lead Software Developer/Engineer",Senior/Lead Software Developer/Engineer,I am still involved in them,>250 kLoC or > 20 people,Less than 6 months,TRUE,In the office,"Yes, I create issues, Yes, I write code or documentation","Object-oriented, Functional","Tool availability (e.g., static analysis, security checks etc.), Your own skillset","Yes, I know about them and use them",Between half a year and two years,"Kotlin, Java","Yes, I know what they are","Blob / God Class, Long Method, Data Class, Feature Envy",FALSE,"Definitely, that's why the concept was invented",4,2,4,5,5,5,5,"Not sure, maybe I'd take a glance or two","In a family of languages, with minor adjustments","Its size, Its change proneness, Its complexity","The concept itself is useful, but it's an oversimplification (e.g. doesn't include industry and other project-specific needs)","Not having enough tests, abundance of long methods with many side effects, not adhering to the same standards between different parts of code",Not enough tests,Errors in APIs/ SDKs I'm working with,"Code not adhering to common style, Rigid structures (hard to adapt when requirements change), Untested code","Code review, Unit testing, Integration/system testing, Linting, Static analysis (e.g. model checking, symbolic execution)","Integration/system testing, Linting, Code review, Unit testing","Code style checking, Manual change correctness assessment, Checking for typical code smells","Yes, positively","Code style checking, Checking for forbidden patterns (e.g. linters), Checking for common high-level antipatterns, Defect prediction",Not very important - the rules should be given by the toolmaker and only modified rarely,They could be better,Most useful errors are raised by compiler anyway,Positive,4/25/2019 7:51:40,10 TRUE,Master of Science (MSc) / Master of Engineering (MEng),4Y0M,2Y0M,1Y5M,1Y5M,0Y6M,0Y12M,0Y0M,0Y0M,Poland,8,"JavaScript, Ruby, TypeScript",A linter,"Entertainment, Manufacturing","Software Developer/Engineer, Project Manager, Business Analyst / Requirements Engineer, Junior Software Developer/Engineer",Software Developer/Engineer,I am still involved in them,">1 person, >50 kLoC or >5 people, 1 person",Less than 6 months,TRUE,In the office,"Yes, I create issues, Yes, I'm involved in forums/discussions","Object-oriented, Functional, Procedural","Availability of libraries, Your own skillset, Current industry trends, Community support, Learning curve","Yes, I know about them and use them",Between half a year and two years,"JavaScript, TypeScript","Somewhat - I heard about them and maybe used some tools, but never dug deeper","Blob / God Class, Data Class, Feature Envy, Long Method",FALSE,"Definitely, that's why the concept was invented",4,2,3,4,,,,"Not sure, maybe I'd take a glance or two","In a family of languages, with minor adjustments","Its change proneness, Language conventions and restrictions, Its size, Its complexity",It's perfect,Writing messy code with no respect to clean code principles,"Messy, overcomplicated code, hard to read",Debugging - when I don't know why something doesn't work,"Rigid structures (hard to adapt when requirements change), Functional defects","Linting, Code review, Unit testing, Integration/system testing","Unit testing, Code review, Linting","Code style checking, Checking for forbidden patterns (e.g. linters), Checking for typical code smells, Verification of correctness of test cases","Yes, positively","Checking for forbidden patterns (e.g. linters), Checking for common high-level antipatterns, Defect prediction, Code style checking","Quite important in the beginning, but once best practices for language and organization are settled, they don't change much",I don't use any,,"ESlint, TSlint",4/25/2019 12:03:03,17 TRUE,Other Bachelor-level,7Y0M,2Y1M,1Y7M,1Y7M,1Y7M,0Y0M,0Y0M,0Y0M,Poland,,Ruby,"A linter, A static analysis tool (e.g., FindBugs), Mutation tester, A compiler","Banking / Finance, Food, Gaming, Consulting","Junior Software Developer/Engineer, Software Developer/Engineer",Software Developer/Engineer,I am still involved in them,"1 person, >1 person, >50 kLoC or >5 people",Between 1 and 3 years,TRUE,Remotely,"No, I don't",Object-oriented,"Availability of libraries, Your own skillset, Skillsets of your team, Current industry trends, Community support, Learning curve","Yes, I know about them and use them",Less than half a year,Ruby,"Yes, I know what they are","Long Method, Feature Envy, Swiss Army Knife, Blob / God Class",FALSE,"I'd assume so, but in my experience I hardly ever find this a problem",,,2,2,,,,"Not sure, maybe I'd take a glance or two","In a family of languages, with minor adjustments","Its change proneness, Its heterogenity, Project conventions and restrictions, Language conventions and restrictions, Its complexity","The concept itself is useful, but it's an oversimplification (e.g. doesn't include industry and other project-specific needs)","Lack of clarity, eg metaprogramming for the sake of metaprogramming (just to save a few lines of code)",,,"Undocumented code, Untested code","Unit testing, Integration/system testing, Linting, Static analysis (e.g. model checking, symbolic execution), Code review","Unit testing, Integration/system testing, Linting","Checking for typical code smells, Manual application execution","Yes, positively","Code style checking, Checking for forbidden patterns (e.g. linters), Checking for common high-level antipatterns","Quite important in the beginning, but once best practices for language and organization are settled, they don't change much",They could be better,Too many false positives,,4/25/2019 7:54:16,16 TRUE,Master of Science (MSc) / Master of Engineering (MEng),9Y0M,4Y0M,3Y3M,3Y0M,3Y0M,1Y7M,3Y0M,1Y6M,Poland,,"Visual Basic, JavaScript, Java, Kotlin, Swift, SQL, Scala","A compiler, A linter, A static analysis tool (e.g., FindBugs)","Banking / Finance, Manufacturing","Junior Software Developer/Engineer, Software Developer/Engineer",Software Developer/Engineer,I am still involved in them,">1 person, 1 person, >100 kLoC or > 10 people",Between 6 months and 1 year,TRUE,In the office,"No, I don't","Object-oriented, Functional","Your own skillset, Current industry trends","Yes, I know about them and use them",Between half a year and two years,"Java, Kotlin","Somewhat - I heard about them and maybe used some tools, but never dug deeper","Blob / God Class, Long Method",TRUE,"Definitely, that's why the concept was invented",5,2,,,,,,"Yes, I'd gladly use it","Yes, but it may no longer be meaningful","Its complexity, Its size, Its change proneness, Its dependencies","This is a useful concept, that simplifies talking about a problem, but we should not stick to pre-defined names",complexity (too long functions and god objects) and multiple conventions used,,lack of tests for existing code; long build times;,"Code not adhering to common style, Cascading changes, Untested code","Integration/system testing, Linting, Code review, Static analysis (e.g. model checking, symbolic execution), Performance testing, Unit testing","Code review, Unit testing, Linting","Checking for typical code smells, Verification of correctness of test cases, Code style checking","Yes, positively","Code style checking, Checking for common high-level antipatterns, Checking for forbidden patterns (e.g. linters), Defect prediction","Quite important in the beginning, but once best practices for language and organization are settled, they don't change much",They could be better,Most useful errors are raised by compiler anyway,"used findbugs, ktLint and IDE's built-in static analysis capabilities. ",4/25/2019 9:18:56,22 TRUE,Master of Science (MSc) / Master of Engineering (MEng),7Y6M,5Y0M,5Y0M,5Y0M,5Y0M,1Y6M,0Y0M,0Y0M,Poland,8,"Matlab, Objective-C, Swift, C++","A compiler, A linter, A static analysis tool (e.g., FindBugs)","Medicine, Academia","Senior/Lead Software Developer/Engineer, Junior Software Developer/Engineer, Software Developer/Engineer",Senior/Lead Software Developer/Engineer,I am still involved in them,"1 person, >1 person, >50 kLoC or >5 people, >100 kLoC or > 10 people, >250 kLoC or > 20 people",Between 6 months and 1 year,TRUE,In the office,"No, I don't","Functional, Object-oriented",No many languages available for my platform ,"Yes, I know about them and use them",More than two years,"Swift, C++, Objective-C","Somewhat - I heard about them and maybe used some tools, but never dug deeper","Long Method, Data Class, Feature Envy, Swiss Army Knife, Blob / God Class",FALSE,"Definitely, that's why the concept was invented",3,2,4,3,,,,"Yes, I'd gladly use it","In a family of languages, with minor adjustments","Language conventions and restrictions, Its size, Project conventions and restrictions, Its complexity, Its heterogenity","This is a useful concept, that simplifies talking about a problem, but we should not stick to pre-defined names",Code lacking in comments or description what is it used for.,Previously implemented solutions are not easy to reconfigure for changing requirements ,Crashing IDE and build times.,"Functional defects, Fragile structures (changing very often), Undocumented code","Unit testing, Linting, Code review","Unit testing, Linting, Code review","Manual application execution, Code style checking, Checking for forbidden patterns (e.g. linters), Checking for typical code smells","Yes, positively","Code style checking, Checking for forbidden patterns (e.g. linters)",Not very important - the rules should be given by the toolmaker and only modified rarely,They provide only basic features,Most useful errors are raised by compiler anyway,SwiftLint - lots of customisable rules.,4/26/2019 7:42:19,12 TRUE,Secondary school (or lower),2Y8M,5Y0M,2Y0M,2Y0M,2Y0M,0Y8M,2Y0M,2Y0M,Poland,8,"Java, JavaScript, Kotlin, PHP, Python, SQL","A compiler, A linter","Retail, Banking / Finance","Junior Software Developer/Engineer, Software Developer/Engineer","Software Developer/Engineer, Student - PhD level",I am still involved in them,>1 person,Between 6 months and 1 year,TRUE,Doesn't matter,"No, I don't",Object-oriented,"Skillsets of your team, Availability of libraries, Community support, Current industry trends, Learning curve, Your own skillset","Yes, I know about them and use them",Between half a year and two years,"Kotlin, Java","Somewhat - I heard about them and maybe used some tools, but never dug deeper","Swiss Army Knife, Long Method",FALSE,"I'd assume so, but in my experience I hardly ever find this a problem",,,,3,,,,"Not sure, maybe I'd take a glance or two","In a family of languages, with minor adjustments","Project conventions and restrictions, Its dependencies, Its complexity","The concept itself is useful, but it's an oversimplification (e.g. doesn't include industry and other project-specific needs)",Boilerplate which makes code hard to read,Not sticking to the architecture in some cases,Writing a lot of boilerplate in some architectures,"Rigid structures (hard to adapt when requirements change), Code not adhering to common style, Undocumented code","Code review, Unit testing",Code review,"Manual application execution, Code style checking, Checking for forbidden patterns (e.g. linters)","Yes, positively","Code style checking, Checking for forbidden patterns (e.g. linters), Checking for common high-level antipatterns, Defect prediction","Quite important in the beginning, but once best practices for language and organization are settled, they don't change much",I don't use any,Most useful errors are raised by compiler anyway,Intellij built in only,4/26/2019 8:00:14,5 TRUE,Master of Science (MSc) / Master of Engineering (MEng),19Y0M,28Y0M,19Y0M,19Y0M,18Y0M,5Y0M,9Y0M,9Y0M,Poland,8,"Go, Groovy, TypeScript, Elixir, Haskell, Kotlin, Python, Ruby, C, C++, Delphi, SQL, Objective-C, Scala, Matlab, Smalltalk, Swift, Assembly, Java, JavaScript","A compiler, A linter, A static analysis tool (e.g., FindBugs)","Banking / Finance, Retail, Medicine, Consulting, Government, Telecommunication","Architect, Junior Software Developer/Engineer, Software Developer/Engineer, Senior/Lead Software Developer/Engineer, Other management role","Operations Engineer / System Administrator, Other management role, Senior/Lead Software Developer/Engineer, Architect",I am still involved in them,">1 person, >50 kLoC or >5 people, >100 kLoC or > 10 people, >250 kLoC or > 20 people, >1 MLoC or > 50 people, 1 person",Less than 6 months,TRUE,Doesn't matter,"No, I don't","Object-oriented, Functional","Learning curve, Availability of libraries, Skillsets of your team, Current industry trends","Yes, I know about them and use them",More than two years,"Java, Kotlin, Objective-C, Python, Swift, SQL","Yes, I know what they are","Swiss Army Knife, Blob / God Class, Long Method, Data Class, Feature Envy, Inappropriate Intimacy, Shotgun Surgery",FALSE,"I'd assume so, but in my experience I hardly ever find this a problem",3,1,3,4,5,3,4,"Not sure, maybe I'd take a glance or two","In a family of languages, with minor adjustments","Its complexity, Its change proneness, Its size, Its dependencies","The concept itself is useful, but it's an oversimplification (e.g. doesn't include industry and other project-specific needs)",,,,"Cascading changes, Rigid structures (hard to adapt when requirements change), Functional defects","Unit testing, Linting, Static analysis (e.g. model checking, symbolic execution), Performance testing, Code review, Integration/system testing","Unit testing, Integration/system testing, Linting, Static analysis (e.g. model checking, symbolic execution), Code review","Checking for typical code smells, Verification of correctness of test cases, Code style checking, Manual change correctness assessment","Yes, positively","Code style checking, Checking for forbidden patterns (e.g. linters), Checking for common high-level antipatterns, Defect prediction","Quite important in the beginning, but once best practices for language and organization are settled, they don't change much",They're great,Too obvious problems,,5/16/2019 8:20:54,4 TRUE,Master of Science (MSc) / Master of Engineering (MEng),7Y6M,15Y,7Y6M,7Y6M,7Y6M,0Y0M,0Y3M,0Y3M,Poland,8,"C++, Groovy, JavaScript, PHP, Ruby, Visual Basic, C, Go, Java, Python, SQL, TypeScript, C#","A linter, A static analysis tool (e.g., FindBugs), A compiler","Banking / Finance, Consulting","Software Developer/Engineer, Senior/Lead Software Developer/Engineer, Junior Software Developer/Engineer",Senior/Lead Software Developer/Engineer,I am still involved in them,"1 person, >1 person, >50 kLoC or >5 people, >100 kLoC or > 10 people",Between 1 and 3 years,TRUE,In the office,"No, I don't","Object-oriented, Functional","Availability of libraries, Your own skillset, Skillsets of your team, Toolchain complexity, Community support","Yes, I know about them and use them",More than two years,"Go, JavaScript, TypeScript, SQL, Python","Yes, I know what they are","Data Class, Long Method, Blob / God Class, Feature Envy, Shotgun Surgery",FALSE,"I'd assume so, but in my experience I hardly ever find this a problem",3,1,2,4,3,,,"Yes, I'd gladly use it","In a family of languages, with minor adjustments","Its size, Project conventions and restrictions, How well it is tested, Its complexity, Language conventions and restrictions","The concept itself is useful, but it's an oversimplification (e.g. doesn't include industry and other project-specific needs)","overfitting, new code solving a particular problem without regard for a broader situation",lack of comments why some decisions were made,undocumented behavior,"Rigid structures (hard to adapt when requirements change), Untested code, Cascading changes","Static analysis (e.g. model checking, symbolic execution), Code review, Unit testing, Integration/system testing, Linting","Unit testing, Linting, Static analysis (e.g. model checking, symbolic execution), Code review","Manual application execution, Checking for forbidden patterns (e.g. linters), Manual change correctness assessment, Checking for typical code smells, Verification of correctness of test cases","Yes, positively","Code style checking, Checking for forbidden patterns (e.g. linters), Checking for common high-level antipatterns","Quite important in the beginning, but once best practices for language and organization are settled, they don't change much",They could be better,Too obvious problems,"I've used language-specific linters: - javascript - eslint, jshint - typescript - tslint - python - pep8, pyflakes, pylint - ruby - rubocop, reek - go - golint and dependency checkers: - javascript - npm audit - ruby - brakeman",07/05/2019 13:43,1