Programming Language
A Programming Language is a formal language and method of controlling a machine (or type of machines) using instructions.
The following categories represent the most popular types of programming languages in existence today:
Contents
Paradigms
Imperative
Logical
- Prolog
- F-logic
- Rule bases (for running Rule Engines)
Procedural
Object-Oriented
Declarative
Fluent
Functional
Reactive
Code Metrics
Software Quality Attributes (commonly abbreviated SQA) may potentially display visible symptoms externally when there are issues, but the argument of those who closely measure, monitor and maintain Code Metrics believe the roots of such problems are commonly invisible internal quality attributes such as: program structure, complexity, coupling, testability, reusability, readability, maintainability. There are many possible metrics to look into, however it is commonly accepted that Coupling, Complexity, Cohesion and Size are the fundamental internal quality attributes of a software program.
There are many ways of measuring and assessing these 4 fundametnal SQA, for instance, the following are the Code Metrics measured by CodeMR tool, which has become one of the leading OSS options (with a basic free product and more comprehensive commercial offering):
- Coupling - aim for lower coupling (impact of changes in one area to other areas, unintended side-effects, etc)
- LCohesion - Lack of Cohesion measures how well the methods of a class are related to each other. High cohesion (low lack of cohesion) tend to be preferable, because high cohesion is associated with several desirable traits of software including robustness, reliability, reusability, and understandability. In contrast, low cohesion is associated with undesirable traits such as being difficult to maintain, test, reuse, or even understand.
- Complexity - Implies being difficult to understand and describes the interactions between a number of entities. Higher levels of complexity in software increase the risk of unintentionally interfering with interactions and so increases the chance of introducing defects when making changes.
- Size - one of the oldest and most common forms of software measurement. Measured by the number of lines or methods in the code. A very high count might indicate that a class or method is trying to do too much work and should be split up. It might also indicate that the class might be hard to maintain.
- CLOC - Class Lines of Code measures the number of all nonempty, non-commented lines of the body of the class. CLOC is a measure of size and also indirectly related to the class complexity.
- WMC - Weighted Method Count is the weighted sum of all class’ methods and represents the McCabe complexity of a class. It is equal to number of methods, if the complexity is taken as 1 for each method. The number of methods and complexity can be used to predict development, maintaining and testing effort estimation. In inheritance if base class has high number of method, it affects its' child classes and all methods are represented in sub-clasess. If number of methods is high, that class possibly domain spesific. Thefore they are less reusable. Also these classes tend to more change and defect prone.
- DIT - Depth of Inheritance Tree is the position of the class in the inheritance tree. Has 0 (zero) value for root and non-inherited classes.For the multiple inheritance, the metric shows the maximum length. Deeper class in the inheritance tree, probably inherit. Therefore, it is harder to predict its behavior. Also this class relatively complex to develop, test and maintain.
- NOC - Number of Children is the number of direct subclasses of a class. The size of NOC approximately indicates how an application reuses itself. It is assumed that the more children a class has, the more responsibility there is on the maintainer of the class not to break the children's behaviour. As a result, it is harder to modify the class and requires more testing.
- CBO - Coupling Between Object Classes is the number of classes that a class is coupled to. It is calculated by counting other classes whose attributes or methods are used by a class, plus those that use the attributes or methods of the given class. Inheritance relations are excluded. As a measure of coupling CBO metric is related with reusability and testability of the class. More coupling means that the code becomes more difficult to maintain because changes in other classes can also cause changes in that class. Therefore these classes are less reusable and need more testing effort.
- CBO_LIB - The number of dependent library classes.
- CBO_APP - The number of dependent classes in the application.
- RFC - Response For a Class is the number of the methods that can be potentially invoked in response to a public message received by an object of a particular class. It includes the full call graph of any method called from the originating method.If the number of methods that can be invoked at a class is high, then the class is considered more complex and can be highly coupled to other classes. Therefore more test and maintain effort is required.
- SRFC - Simple Response For a Class is the number of the methods that can be potentially invoked in response to a public message received by an object of a particular class. It includes methods directly invoced from the class. If the number of methods that can be invoked at a class is high, then the class is considered more complex and can be highly coupled to other classes. Therefore more test and maintain effort is required.
- LCOM - Lack of Cohesion of Methods measures how methods of a class are related to each other. Low cohesion means that the class implements more than one responsibility. A change request by either a Bug or a new feature, on one of these responsibilities will result in a change of that class, which greatly increases likelihood of further Regression Defects. Lack of cohesion also influences understandability and implies classes should probably be split into two or more subclasses.
- LCOM3 - varies between 0 and 2. Values 1..2 are considered alarming. In a normal class whose methods access the class's own variables, LCOM3 varies between 0 (high cohesion) and 1 (no cohesion). When LCOM3=0, each method accesses all variables. This indicates the highest possible cohesion. LCOM3=1 indicates extreme lack of cohesion. In this case, the class should be split. When there are variables that are not accessed by any of the class's methods, 1 < LCOM3 <= 2. This happens if the variables are dead or they are only accessed outside the class. Both cases represent a design flaw. The class is a candidate for rewriting as a module. Alternatively, the class variables should be encapsulated with accessor methods or properties. There may also be some dead variables to remove. If there are no more than one method in a class, LCOM3 is undefined. If there are no variables in a class, LCOM3 is undefined. An undefined LCOM3 is displayed as zero [1]. LCOM3 is calculated as follows: LCOM3 = (m - sum(mA)/a) / (m-1) where: m is number of procedures (methods) in class, a is number of variables (attributes) in class and contains all variables whether shared (static) or not, mA is number of methods that access a variable (attribute), sum(mA) is the sum of mA over attributes of a class.
- LCAM - Lack of Cohesion Among Methods (also referred to as "1-CAM")... CAM metric is the measure of cohesion based on parameter types of methods.
- NOF - Number of Fields (properties/attributes) in a class.
- NOM - Number of Methods in a class.
- NOSF - Number of Static Fields in a class.
- NOSM - Number of Static Methods in a class.
- SI - Specialization Index is defined as NORM # DIT / NOM... the Specialization Index metric measures the extent to which subclasses override their ancestors classes. This index is the ratio between the number of overridden methods and total number of methods in a Class, weighted by the depth of inheritance for this class. Lorenz and Kidd precise : Methods that invoke the superclass’ method or override template are not included.
- CM-LOC - Class-Methods Lines of Code is the total number of all nonempty, non-commented lines of methods inside a class.
- NoI - Number of Interfaces is the total number of Interfaces.
- NoCls - Number of Classes is the total number of classes in this project or specific module/package being examined.
- NoE - Number of Entities is the total number of Interfaces and classes.
- NORM - Number of Overridden Methods is the number of Overridden Methods.
- C3 - The max value of Coupling, Cohesion, Complexity metrics.
- nofP - Number of Packages in the project.
- nofPa - Number of External Packages is the number of External Packages referenced by the project.
- nofEE - Number of External Entities is the number of External classes and interfaces referenced by the project.
- NoPC - Number of Problematic Classes is the number of classes with high coupling, high complexity or low cohesion in the project.
- NoHPC - Number of Highly Problematic Classes is the number of classes with high coupling, high complexity and low cohesion in the project.
- LTCC - Lack of Tight Class Cohesion tric measures the lack cohesion between the public methods of a class. That is the relative number of directly connected public methods in the class. Classes having a high lack of cohesion indicate errors in the design.
- ATFD - Access to Foreign Data is the number of classes whose attributes are directly or indirectly reachable from the investiggated class. Classes with a high ATFD value rely strongly on data of other classes and that can be the sign of the God Class.
- I - Instability metric is used to measure the relative susceptibility of class to changes. It is defined as the ration of outgoing dependencies to all package dependencies and it accepts value from 0 to 1, and is calculated as follows: Instability = EC / (EC+AC) where: EC is Efferent Coupling measures "Outgoing Coupling" or the number of classes in other packages that the classes in the package depend upon is an indicator of the package's dependence on externalities, and, AC is Afferent Coupling measures "Incoming Coupling" or the number of classes in other packages that depend upon classes within the package is an indicator of the package's responsibility.
- Abs - Abstractness metric is used to measure the degree of abstraction of the package. abstractness is defines as the number of abstract classes in the package to the number of all classes.
- ND - Normalized Distance metric is used to measure the balance between stability and abstractness and is calculated as: ND = |Abs + I - 1|
- InDegree - In-degree of corresponding graph vertex of the class.
- OutDegree - Out-degree of corresponding graph vertex of the class.
- Degree - Degree of corresponding graph vertex of the class.
[13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24]
Code Ownership
- Code Ownership: http://wiki.c2.com/?CodeOwnership
[25] [26] [27] [28] [29] [30] [31] [32]
Collective
All of the codebase is owned by the entire Dev team, and responsibility for the quality is shared amongst all sub-teams and each of the team members equally. There are no leads in this model, everyone is considered to be at the same level for all changes.
Flexible
The codebase is divided up into modules or logically related sections with each assigned a respective owner/lead and potentially a secondary lead if deemed necessary; but developers are allowed to change modules owned by other people through the team's defined Code Review process.
Strict
Very defined & intentional strategy where codebase is broken up into very granular modules (classes, functions, files) and each module assigned to one developer to take the lead and a secondary (as much as possible the "secondary" should be from another team), other devs then only allowed to make changes to modules they own or by special request to someone else's module; without such a request the owner or backup lead must be the ones to make the change.
Design Principles
- Package by feature: https://phauer.com/2020/package-by-feature/ (modularity/loose-coupling intentionally "baked in" to our logical grouping of code)
DRY
SOLID
- wikipedia: SOLID
- Understanding SOLID Principles — Open Closed Principle: https://codeburst.io/understanding-solid-principles-open-closed-principle-e2b588b6491f
YAGNI
KISS
SoC
Modularization
- On the criteria to be used in decomposing systems into modules (famous 1971 paper by Lev Parnas): https://prl.ccs.neu.edu/img/p-tr-1971.pdf
- Package by Feature: https://phauer.com/2020/package-by-feature/
Coupling
Coupling occurs between two classes A and B if:
A has an attribute that refers to (is of type) B. A calls on services of an object B. A has a method that references B (via return type or parameter). A has a local variable which type is class B. A is a subclass of (or implements) class B.
Tight-Coupling
Tightly coupled systems tend to exhibit the following characteristics:
A change in a class usually forces a ripple effect of changes in other classes. Require more effort and/or time due to the increased dependency. Might be harder to reuse a class because dependent classes must be included.
Loose-Coupling
Cohesion
Low Cohesion
High Cohesion
Design Patterns
- SourceMaking -- Design Patterns: https://sourcemaking.com/design_patterns/
- Refactoring Guru -- Design Patterns: https://refactoring.guru/design-patterns/catalog
Creational Patterns
Singleton
Abstraction
Also commonly known as "Abstract Factory" pattern.
Factory Methods
- wikipedia: Factory pattern
- Factory Method Pattern (in JAVA): http://www.instanceofjava.com/2015/01/factory-method-pattern.html
Builder
- SourceMaking -- Builder: https://sourcemaking.com/design_patterns/builder | JAVA
- Refactoring Guru -- Builder: https://refactoring.guru/design-patterns/builder | JAVA
Object Pool
- SourceMaking -- Object Pool: https://sourcemaking.com/design_patterns/object_pool%7C JAVA
Prototype
- SourceMaking -- Prototype: https://sourcemaking.com/design_patterns/builder | JAVA
- Refactoring Guru -- Prototype: https://refactoring.guru/design-patterns/prototype | JAVA
Service Locator
Often combined with Factory pattern to implement a layer of interfaces between Server and Client.
Structural Patterns
Adapter
Bridge
Composite
Decorator
Facade
Flyweight
Proxy
Behavioral Patterns
Observer
Chain of Responsibility
Command
- Command Design Pattern In Java -- HomeAutomation example: https://dzone.com/articles/command-design-pattern-in-java
Iterator
Mediator
Memento
State
Strategy
Template Method
Visitor
Architectures
MVC
Model View Controller (commonly abbreviated MVC) is one of the most prevalent architectural approach for building complex UI-centric applications on the web, mobile or desktop. It evolved from a number of advances in computer science but is particularly attributed to Tygve Reenskaug
- wikipedia: Model View Controller (MVC)
- Alternatives to the MVC: https://stackoverflow.com/questions/141912/alternatives-to-the-mvc#145451
[47] [48] [49] [50] [51] [52] [53]
MVVM
MVP
Approaches
No Code
Low Code
Cowboy Coding
Every man, woman and child for themselves mindset programming, reminiscent of the Wild West. Development done in a silo, using whatever tools, languages or technologies one prefers, with little to no consideration to team/dept/organizational fit, maintainability, or broader long-term business value. Usually no documentation or coding standards.
Rapid Prototyping
Chaos Coding
Anti-pattern to quality/productivity.
RDD
Requirements Driven Design, typically paired with Waterfall, depends on analysts to deliver complete, detailed requirements to programmers for implementation with little to no collaboration before this hand-off. Requirements must be vetted for business value before reaching developers.
DDD
Design Driven, all functionality, look & feel details provided up-front, just turn an existing diagram/drawing/wireframe/storyboard into something that works in real life as described.
Pseudo-Coding
TDD
BDD
Pair-Programming
Teaming up between two specific team members (typically developers, but could be a developer with a tester, or, a developer and designer) to collaborate on delivery of a specific Backlog item (Story, Task, Bug fix, Project, Feature, etc).
Mob Programming
Also known as "Boardroom Programming" or "mobbing". Can be an anti-pattern if not relegated to very specific problem-solving, and if not constituting a very small portion of total coding efforts/outputs. While the "go-to" shouldn't be mobbing for every single Backlog item or issue worked on, it should be a reliable technique to use particularly for new tasks where there is a higher than normal degree of uncertainty where a broad spectrum of ideas is likely to produce the best solution, and also the best cross-team knowledge sharing.
- wikipedia: Mob Programming
- Mob Programming -- Find Fun Faster: https://link.springer.com/chapter/10.1007/978-3-319-33515-5_15
- Introducing Mob programming -- The best team technique you've (probably) never heard of: https://www.itworld.com/article/2940562/development/introducing-mob-programming-the-best-team-technique-youve-probably-never-heard-of.html?page=2
[67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87]
Interviews
- Google Interview Problems - Ratio Finder: https://medium.com/@alexgolec/google-interview-problems-ratio-finder-d7aa8bf201e3
- QUIZ - What's Your Developer Personality?: http://java.dzone.com/dzone-developer-personality-quiz
- The Simple Programmer Soft Skills Quiz: http://dzone.com/articles/the-simple-programmer-soft-skills-quiz
- How Would You Move Mount Fuji? (BOOK): https://ndtpm.files.wordpress.com/2012/01/how-would-you-move-mount-fuji.pdf (cracking Microsoft's cult of "logic puzzle" interviews)
- Hiring and Retaining Developers - Creating Great Teams: https://www.infoq.com/articles/hire-retain-developers
- How to Hire a Programmer: https://blog.codinghorror.com/how-to-hire-a-programmer/
- The No-BS Ultimate Guide to the Developer Interview: http://dzone.com/articles/the-ultimate-guide-to-developer-interviews
- Critical DevOps Interview Questions—and How to Answer Them: https://blog.newrelic.com/technology/critical-devops-interview-questions-and-how-to-answer-them/
- What are the main concepts to be prepared for Java interviews?: https://www.quora.com/What-are-the-main-concepts-to-be-prepared-for-Java-interviews[103]
- Master the JavaScript Interview -- What’s the Difference Between Class & Prototypal Inheritance?: https://medium.com/javascript-scene/master-the-javascript-interview-what-s-the-difference-between-class-prototypal-inheritance-e4cd0a7562e9
- Learn Enough React For The Interview: https://medium.com/bb-tutorials-and-thoughts/learn-enough-react-for-the-interview-f460a2fa3aeb
- Front-end Job Interview Questions: http://github.com/h5bp/Front-end-Developer-Interview-Questions (every Front-End dev should know)[109]
Certifications
- Certification Questions (exam dumps): https://www.certification-questions.com/
- Don’t hire top talent; hire for weaknesses: https://benjiweber.co.uk/blog/2021/04/10/dont-hire-top-talent-hire-for-weaknesses/
Tools
- Emmet: https://emmet.io/ | DOWNLOAD (HTML/CSS shortcut tool for web developers... type a CSS selecter/regex and auto-generate HTML templates or vice-versa CSS rules for a template)
- Bubble: https://bubble.is/ (info toolkit for data-driven apps/websites without code)
E-Learning
Top programming E-Learning resources/courses/services include:
- CodeAcademy: https://www.codecademy.com/[111]
- CodeSchool: https://www.codeschool.com/
- Udacity - "Coding" nanodegrees & courses: https://www.udacity.com/
- Udemy - "All Development" category: https://www.udemy.com/courses/development/
- KhanAcademy - Computing section: https://www.khanacademy.org/computing/ | PROGRAMMING skills
- WebOS courses: https://wesbos.com/courses/ (CSSgrid, Flexbox, JS, ES6, HTML5, CSS3, etc web-layer technologies)
- Code: https://code.org/ | EXAMPLE - StarWars (learn coding with StarWars for kids)
- Google Code Jam: https://code.google.com/codejam/
- Code Katas: http://www.codekatas.org/
- Project Euler: https://projecteuler.net/
- MIT - AppInventor: http://appinventor.mit.edu/explore/
- Swift Playgrounds: https://developer.apple.com/swift/playgrounds/
- Virtual Pair Programming: http://c2.com/cgi/wiki?VirtualPairProgramming
- TutorialsPoint - CodingGround: http://www.tutorialspoint.com/codingground.htm | JAVA (also supports Python, Ruby, Swift, C++, Scala, and many more)
- CodeSandbox (great for React/Angular): https://codesandbox.io/explore | EXAMPLE
- GLOT: https://glot.io/ (similar to CodingGround, provides runnable code snippets that actually get executed on their back-end servers)[112]
- Google -- Colaboratory: https://colab.research.google.com/notebooks/welcome.ipynb | EXAMPLE
- Adafruit Circuit editor: https://makecode.adafruit.com/#editor
- Typing.IO: https://typing.io/ (practice typing syntax/conventions/characters in many programming languages)
- "Typing of the Dead": http://store.steampowered.com/app/246580/The_Typing_of_The_Dead_Overkill/[113] (game to improve typing speed/accuracy)
Resources
- TIOBE Programming Community Index - Most Popular Programming Languages: http://www.tiobe.com/index.php/paperinfo/tpci/[118][119][120][121]
- Dev docs -- collection of API docs across languages: https://devdocs.io/
- OverAPI.com -- collecting all Programming Languages' cheat sheets: https://overapi.com
- RosettaCode - Library of Common Programming Tasks: http://rosettacode.org/wiki/Category:Programming_Tasks (language agnostic)
- The Big List of 256 Programming Languages: http://java.dzone.com/articles/big-list-256-programming
- i-Programmer: http://www.i-programmer.info/
- Peter Norvig - Teach Yourself Programming in Ten Years: http://norvig.com/21-days.html#sc
- WebAssembly: https://github.com/WebAssembly (working group & project to compile all languages to work on the web, via a browser)
- List of languages that compile to JS: https://github.com/jashkenas/coffeescript/wiki/list-of-languages-that-compile-to-JS
- Free Programming Books (on GitHub): https://github.com/vhf/free-programming-books/blob/master/free-programming-books.md
- Free Programming Courses (on GitHub): https://github.com/vhf/free-programming-books/blob/master/free-courses-en.md
- Programming & IT (E-BOOKS): https://github.com/apintocr/it-ebooks
- Advanced ICT guide for UK College/University students: https://www.advanced-ict.info/
- Destroy All Software: https://www.destroyallsoftware.com/ (industry-leading talks/webcasts)
- Sorting Algorithms Demonstration (Java): http://home.westman.wave.ca/~rhenry/sort/index.html
- A Comparison of Sorting Algorithms (VB): http://www.devx.com/vb2themax/Article/19900
- Radix Sort in JS: http://www.csse.monash.edu.au/~lloyd/tildeAlgDS/Sort/Radix/
- Radix Sort in C: http://www.sourcecodesworld.com/source/show.asp?ScriptId=1256
[123] [124] [125] [126] [127] [128]
- Best (Programming) Best Practices Ever: http://server.dzone.com/articles/best-best-practices-ever
- What are the algorithms required to solve all problems (using C++) in any competitive coding contest?: http://www.quora.com/What-are-the-algorithms-required-to-solve-all-problems-using-C++-in-any-competitive-coding-contest
- Layers of a Standard Enterprise Application: http://java.dzone.com/articles/layers-standard-enterprise
- No Silver Bullet — Essence and Accident in Software Engineering (by Frederick P. Brooks jr., 1986): http://worrydream.com/refs/Brooks-NoSilverBullet.pdf
- wikipedia: Design_pattern_(computer_science)#Classification_and_list (Gang of Four design patterns)
- Design Patterns - Gang of Four (GOF): http://www.uml.org.cn/c++/pdf/DesignPatterns.pdf (BOOK)[129][130][131]
- OverAPI - Cheat Sheets for the top Programming Languages and APIs: http://overapi.com/
- CodingBat -- code practice: http://codingbat.com/java
- TopCoder: https://www.topcoder.com/ (challenging coding problems, most only appropriate for Big5-Google/MS/Amazon/Apple/Facebook, or maybe, Aerospace/Security/Finance industry)
- Software Developer's Career Guide: https://simpleprogrammer.com/products/careerguide/links/[132]
- Refactoring -- Improving the Design of Existing Code: https://martinfowler.com/books/refactoring.html
- Strangler Pattern - How to strangle your legacy system: https://blog.fingo.pl/strangler-pattern-how-to-strangle-your-legacy-system/
[135] [136] [137] [138] [139] [140]
- "Decent" code guidelines: https://robatwilliams.github.io/decent-code/
- Awesome Code Review list: https://github.com/joho/awesome-code-review
- The Clean Code Blog: https://blog.cleancoder.com (by Robert C. Martin, infamously known as "Uncle Bob")
[141] [142] [143] [144] [145] [146] [147] [148] [149] [150]
Tutorials
- Want excellent free coding tutorials? Subscribe to these YouTube channels: https://medium.freecodecamp.org/want-amazing-free-coding-tutorials-subscribe-to-these-youtube-channels-b91f154db543
- SitePoint - Programming & Tech tutorials: http://www.tutorialspoint.com/
- 25 HTML & CSS Tutorials: https://codeburst.io/25-html-css-tutorials-6a864f387185
- Static vs. Dynamic typing of programming languages: https://pythonconquerstheuniverse.wordpress.com/2009/10/03/static-vs-dynamic-typing-of-programming-languages/
- Introduction to Static & Dynamic (as well as "Strong" .vs. "Weak") Typing: https://www.sitepoint.com/typing-versus-dynamic-typing/
- How to Get a Job Like Mine: https://aaronsw.jottit.com/howtoget
- Is Programming the Art of Making the Right Decision?: http://java.dzone.com/articles/programming-art-making-right
- Law of Demeter: http://www.captaindebug.com/2011/03/law-of-demeter.html#.UOW-Cqw0d8E
- Gresham’s Law — Why Bad Developers Push out Good Developer and Developers Create Low Quality Code: https://itnext.io/greshams-law-why-bad-developers-push-out-good-developer-and-developers-create-low-quality-code-9b6a8d15bffb
- WTF Is a Thread?: https://dzone.com/articles/wtf-is-a-thread
- Writing Good Code: http://java.dzone.com/articles/writing-good-code-0
- The Diabolical Developer - What You Need to Do to Become Awesome: https://blogs.oracle.com/java/entry/the_diabolical_developer_what_you_need_to_do_to_become_awesome
- The Diabolical Developer - Take the power back: http://www.devoxx.com/display/DV11/The+Diabolical+Developer+-+take+the+power+back[151]
- Dustin's Software Development - Cogitations and Speculations (Diabolical Developer REDUX): http://www.javaworld.com/community/node/8163
- How To Be A Real Elite Programmer And Make Sure Everybody Knows It: http://www.skorks.com/2010/05/how-to-be-a-real-elite-programmer-and-make-sure-everybody-knows-it/
- What have you tried?: https://web.archive.org/web/20120208080206/http://mattgemmell.com/2008/12/08/what-have-you-tried/
- Repository of useful pro-forma comments: https://meta.stackexchange.com/questions/136609/repository-of-useful-pro-forma-comments/136615#136615
- StackOverflow's "How to ask a good question" guideline: https://stackoverflow.com/help/how-to-ask
- StackOverflow's "How to create a Minimal, Reproducible Example" guide: https://stackoverflow.com/help/minimal-reproducible-example
- "Rubber Duck" problem solving: https://blog.codinghorror.com/rubber-duck-problem-solving/
- Why Programmers Work At Night: http://www.businessinsider.com/why-programmers-work-at-night-2013-1
- Holding a Program in One's Head: http://paulgraham.com/head.html
- What is BNF, and why should developers care?: http://www.techrepublic.com/blog/programming-and-development/what-is-bnf-and-why-should-developers-care/4346
- The Decorator Pattern: http://dzone.com/articles/the-decorator-pattern?oid=top_cta
- 100 Days of Google Dev (mini-tutorials): https://www.youtube.com/playlist?list=PLOU2XLYxmsIJDPXCTt5TLDu67271PruEk
- What are the differences between parallel, concurrent and asynchronous programming?: www.quora.com/What-are-the-differences-between-parallel-concurrent-and-asynchronous-programming
- 3R's Principles of Programming: https://dzone.com/articles/3r-principles-of-programming
- Remaining Technical as an Engineering Leader: https://anothermarkwood.medium.com/remaining-technical-as-an-engineering-leader-7627fe0322c
- The Well-Rounded Technical Lead -- A Model for Technical Leadership: http://www.engineeringandcareering.co.uk/2013/05/the-well-rounded-technical-lead-model.html (high-level overview)
- Corporate Realpolitik Explained -- The Tech Lead: https://daedtech.com/realpolitik-company-politics-tech-lead/
- How to Engage with your team (Be a Well Rounded Technical Lead, part 1): http://www.engineeringandcareering.co.uk/2013/10/how-to-be-well-rounded-technical-lead_20.html (center to top-right)
- How to Grow Architecture & Infrastructure (Be a Well Rounded Technical Lead, part 2): http://www.engineeringandcareering.co.uk/2013/12/wellrounded-architecture-infrastructure.html (center to bottom-right)
- How to Manage Delivery and Risk (Be a Well Rounded Technical Lead, part 3): http://www.engineeringandcareering.co.uk/2014/05/how-to-be-well-rounded-delivery-risk.html (center to bottom-left)
- How to Engage with & gain trust of the Business (Be a Well Rounded Technical Lead, part 4): http://www.engineeringandcareering.co.uk/2013/10/how-to-be-well-rounded-technical-lead.html (center to top-left)
- Growing into the role of the Well-Rounded Technical Lead: http://www.engineeringandcareering.co.uk/2013/06/growing-into-role-of-well-rounded.html
- Overview of Functional Programming: https://blog.codeship.com/overview-of-functional-programming/
- FreeCodeCamp: https://www.freecodecamp.org/map#nested-collapseBasicJavaScript
- Learn how to be a better programmer by automating the boring stuff: https://medium.freecodecamp.org/learn-how-to-be-a-better-programmer-by-automating-the-boring-stuff-74a67a568c50
- Why your programmers just want to code: https://hackernoon.com/why-your-programmers-just-want-to-code-36da9973388e
- Good Code .vs. Bad Code: https://medium.com/@navdeepsingh_2336/good-code-vs-bad-code-35624b4e91bc
- Eclipse Colletions: https://github.com/eclipse/eclipse-collections[152][153][154]
- Development workflows that put you in a flow state: https://blog.sebastian-daschner.com/entries/effective-development-workflows
- What are some examples of extremely clever problem solving in the software development world? In 1983, this guy was at Lucasfilm and made an optimization since called "Duff's Device": https://www.quora.com/What-are-some-examples-of-extremely-clever-problem-solving-in-the-software-development-world | ORIGINAL - email
- Error handling across different languages: https://blog.frankel.ch/error-handling/
External Links
- wikipedia: Programming paradigm
- wikipedia: List of programming languages by type
- wikipedia: Comparison of programming paradigms
- wikipedia: Turing Machine
- wikipedia: Turing completeness
- wikipedia: Chomsky hierarchy
- wikipedia: Metaprogramming
- wikipedia: Pseudocode
- wikipedia: Big O notation
- wikipedia: Cyclomatic complexity
- wikipedia: Fibonacci number
- wikipedia: Prime numbers
- wikipedia: Greatest common divisor (GCD)
- wikipedia: Fluent interface
- wikipedia: Builder pattern
- wikipedia: Backus–Naur Form
- wikipedia: Turing completeness
- wikipedia: Domain-specific language
- wikipedia: Semaphore (programming)
- wikipedia: Monkey patch
- wikipedia: Anti-pattern
- wikipedia: Conway's law
- wikipedia: Murphy's law
- wikipedia: Metcalfe's law
- wikipedia: Halstead complexity measures
- wikipedia: Law of Demeter
- wikipedia: Occam's razor
- wikipedia: Dunning–Kruger effect
- wikipedia: Dreyfus model of skill acquisition
- wikipedia: Chesterton's fence
- wikipedia: Elvis operator[155]
- wikipedia: Think aloud protocol
- wikipedia: Rubber duck debugging
- wikipedia: Socratic method
- wikipedia: Eureka effect
- wikipedia: Simplified Wrapper and Interface Generator (SWIG)
- wikipedia: Informal methods of validation and verification
- wikipedia: Software walkthrough
- See also: Code Review
- How to Choose Which Programming Languages to learn? (INFOGRAPHICS): http://www.thecrazyprogrammer.com/2015/02/how-to-choose-which-programming-languages-to-learn.html
- The Top 20 Most Popular Programming Languages: http://computerprogramming.suite101.com/article.cfm/the_top_20_most_popular_programming_langauges
- Hello World in many languages: http://en.wikibooks.org/wiki/Computer_Programming/Hello_world
- Digital Systems - Logic Gates (AND, OR, XOR, NOT, NAND, NOR and XNOR): http://whatis.techtarget.com/definition/logic-gate-AND-OR-XOR-NOT-NAND-NOR-and-XNOR
- "First, Do No Harm" - A Hippocratic Oath for Software Developers: https://queue.acm.org/detail.cfm?id=1016991
- Joi Ito -- Yak Shaving: http://joi.ito.com/weblog/2005/03/05/yak-shaving.html
- The Rise of the 'Brogrammer': http://www.businessweek.com/articles/2012-03-01/the-rise-of-the-brogrammer
- The most copied StackOverflow snippet of all time is flawed!: https://programming.guide/worlds-most-copied-so-snippet.html
- Brogramming - How does a programmer become a Brogrammer?: http://www.quora.com/Brogramming/How-does-a-programmer-become-a-Brogrammer
- "Gangbang Interviews" and "Bikini Shots" - Silicon Valley’s Brogrammer Problem: http://www.motherjones.com/media/2012/04/silicon-valley-brogrammer-culture-sexist-sxsw
- 10 Impressive Questions to Ask in a Job Interview: https://www.thecut.com/article/questions-to-ask-in-a-job-interview.html
- 10 types of programmers you'll encounter in the field: http://www.techrepublic.com/blog/10things/10-types-of-programmers-youll-encounter-in-the-field/262
- Some Thoughts on Gamification and Software: http://architects.dzone.com/articles/some-thoughts-gamification-and
- Readability and Performance is Beautiful Code: http://gusg.us/code/beautiful-code-readability-performance.html
- Code Structure and Readability Part 1 — Variables, Data Structures, and Functions: https://medium.com/swift2go/code-structure-and-readability-part-1-edd3537ada11
- Code Structure and Readability Part 2 — Classes and Structs: https://medium.com/swift2go/code-structure-and-readability-part-2-classes-ae33c11393e4
- Code Structure and Readability Part 3 — File Structure: https://medium.com/swift2go/code-structure-and-readability-part-3-file-structure-58ef1852037d
- The reality of a developer's life (in animated GIFs): http://server.dzone.com/articles/reality-developers-life-gifs
- All programming is web programming (nowadays): http://www.codinghorror.com/blog/2009/08/all-programming-is-web-programming.html
- Why Programmers work at night: http://en.codeceo.com/why-programmers-work-at-night.html
- Learning (Software, Mobile and Web) Development -73 Best Online E-Learning Resources: http://www.imcreator.com/blog/learn-web-development-online/
- Rise and Fall of the Black Box Developer: http://blogs.mulesoft.org/black-box-developer/
- What are advantages and disadvantages of prototypal OOP?: http://developer-interview.com/p/oop-ood/what-are-advantages-and-disadvantages-of-prototypal-oop-12
- The SPACE of Developer Productivity: https://queue.acm.org/detail.cfm?id=3454124
- How to Double the Productivity of Your (Programming) Staff and Your Business: http://www.cornerstoneadvisoryservices.com/blog/how-double-productivity-your-staff-and-your-business
- 5 Tips For Working Smarter, Not Harder: http://www.fastcompany.com/3041389/body-week/5-tips-for-working-smarter-not-harder
- How do (good) programmers code so quickly?: http://www.quora.com/How-do-programmers-code-so-quickly
- 10 steps to becoming a better than programmer: http://tutscode.com/10-steps-becoming-better-programmer.html
- Want A Proper Programming Style? Here Are Rules You Need To Follow: http://www.developersfeed.com/want-a-proper-programming-style-here-are-rules-you-need-to-follow/[156][157]
- A Coder, a Programmer, a Hacker, a Developer, and a Computer Scientist walk into a Venn Diagram: http://www.hanselman.com/blog/ACoderAProgrammerAHackerADeveloperAndAComputerScientistWalkIntoAVennDiagram.aspx
- Comment Your F**king Code!: https://dzone.com/articles/comment-your-fking-code
- Code Understanding - WE NEED A TASK: http://java.dzone.com/articles/code-understanding-step-step-0
- 15 Ways to Write Beautiful Code: http://dzone.com/articles/15-ways-to-write-beautiful-code
- Why Your Managers Think Your Software Quality is Great—or Not: http://dzone.com/articles/why-your-managers-think-your-software-quality-is-g
- 9 Steps to (properly) Start a Software Project : http://dzone.com/articles/nine-steps-to-start-a-software-project?oid=agile
- What the year 1972 looked like (when "C" programming language was introduced to the world): http://www.thepeoplehistory.com/1972.html
- Why Refactor Java Code? Here Are 44 Reasons (Based on 748 GitHub Projects): http://dzone.com/articles/why-refactor-java-developers-offer-44-reasons[158]
- The Reality of a Developer's Life - in GIFs, Of Course: http://dzone.com/articles/reality-developers-life-gifs
- What are some computer tricks that a CS student must know?: http://www.quora.com/Computer-Science/What-are-some-computer-tricks-that-a-CS-student-must-know
- Paul Ford's "What Is Code" interactive article in Bloomberg: http://www.bloomberg.com/graphics/2015-paul-ford-what-is-code/
- Questions every good PHP Developer should be able to answer: http://stackoverflow.com/questions/2118755/questions-every-good-php-developer-should-be-able-to-answer
- Rating potential PHP coders: http://terrychay.com/article/php-coders.shtml
- What are the most important questions to ask a full stack developer during an interview for a startup?: http://www.quora.com/What-are-the-most-important-questions-to-ask-a-full-stack-developer-during-an-interview-for-a-startup?share=1
- Full stack web developer interview questions?: https://www.reddit.com/r/webdev/comments/2jd2m2/full_stack_web_developer_interview_questions/
- Full-stack Developer Interview Questions and Answers: https://github.com/indy256/Full-stack-Developer-Interview-Questions-and-Answers
- Great developers are raised, not hired: https://sizovs.net/2019/04/10/the-best-developers-are-raised-not-hired/
- It Costs $50k to Hire a Software Engineer: https://blog.usejournal.com/it-costs-50k-to-hire-a-software-engineer-d06a0d051abf
- Developer Hiring Trends in 2017: https://stackoverflow.blog/2017/03/09/developer-hiring-trends-2017/
- Robert Half -- 2017 Technology & IT Salary Guide: https://www.roberthalf.com/technology/salary-center-for-technology-professionals
- Salesforce Sr. Developer - So You Want My Job?: https://www.adminhero.com/so-you-want-my-job-salesforce-developer/
- Salary levels (by company/location): https://www.levels.fyi/Salaries/Software-Engineer/Canada/
- Senior Developer .vs. Junior Programmer Definition: http://technoracle.blogspot.ca/2014/08/senior-vs-junior-programmer-developer.html
- The Role of a Senior Developer: http://mattbriggs.net/blog/2015/06/01/the-role-of-a-senior-developer/
- What does it mean to be a senior developer?: https://www.theguardian.com/info/developer-blog/2014/aug/28/what-does-it-mean-to-be-a-senior-developer
- What makes a developer "senior"?: http://www.techrepublic.com/blog/software-engineer/what-makes-a-developer-senior/
- When should you call yourself a senior developer?: https://softwareengineering.stackexchange.com/questions/25564/when-should-you-call-yourself-a-senior-developer
- What's the difference between Entry Level/Jr/Sr developers?: https://softwareengineering.stackexchange.com/questions/14914/whats-the-difference-between-entry-level-jr-sr-developers
- Senior Developer hierarchy of needs: http://agafonovslava.com/post/Senior-developer
- The Polyglot's Dilemma: http://dzone.com/articles/the-polyglots-dilemma-daedtech
- How Stripe teaches employees to code: http://stripe.com/blog/teaching-employees-to-code
- How to work with Junior (Programmers) -- And not to join the dark side: https://hackernoon.com/how-to-work-with-juniors-25ffd76bd413
- Care and Feeding of Your New Junior Dev: http://developer.telerik.com/content-types/podcast/care-feeding-new-junior-dev/
- REPORT - Autonomy essential while "You Build It, You Run It" (YBIYRI) also contributes to Developer happiness: https://sdtimes.com/softwaredev/report-autonomy-is-essential-for-developer-happiness/
- Developers Who Use Spaces Make More Money Than Those Who Use Tabs: https://stackoverflow.blog/2017/06/15/developers-use-spaces-make-money-use-tabs/
- Hello World! - A new grad’s guide to coding as a team (E-BOOK): http://atlassianblog.wpengine.com/wp-content/uploads/HelloWorldEbook.pdf
- 39 best kept secrets of great Devs: http://www.huffingtonpost.com/quora/39-best-kept-secrets-of-g_b_7812864.html
- The next career step for Senior Software Engineers (that isn’t management): https://codewithoutrules.com/2018/10/10/beyond-senior-software-engineer/
- Should switch statements always contain a default clause?: https://stackoverflow.com/questions/4649423/should-switch-statements-always-contain-a-default-clause
- Want to build something fun? Here’s a list of sample web app ideas: https://medium.freecodecamp.org/want-to-build-something-fun-heres-a-list-of-sample-web-app-ideas-b991bce0ed9a
- 9 Anti-Patterns Every Programmer Should Be Aware Of: https://sahandsaba.com/nine-anti-patterns-every-programmer-should-be-aware-of-with-examples.html#inner-platform-effect
- 10 Common Software Architectural Patterns in a nutshell: https://towardsdatascience.com/10-common-software-architectural-patterns-in-a-nutshell-a0b47a1e9013
- Top 19 architecture books: https://dzone.com/articles/top-19-software-architecture-books
- Top 50 Developer Tools of 2017: https://hackernoon.com/top-50-developer-tools-of-2017-7e616928416b
- The 2018 Modern Frontend Developer Roadmap: https://codeburst.io/the-2018-web-developer-roadmap-826b1b806e8d
- The 2018 Modern Backend Developer Roadmap: https://medium.com/tech-tajawal/modern-backend-developer-in-2018-6b3f7b5f8b9
- How to Level up Dev Teams: https://bravenewgeek.com/how-to-level-up-dev-teams/
- The Lines of Code That Changed Everything: https://slate.com/technology/2019/10/consequential-computer-code-software-history.html
- Sustainability in Software Development: https://blog.scottlogic.com/2019/12/30/sustainability-in-software-development.html
- Are Dark Themes Really Better for Your Eyes and Battery?: https://www.maketecheasier.com/are-dark-themes-better-for-eyes-battery/
- If-Else Is a Poor Man's Polymorphism https://levelup.gitconnected.com/if-else-is-a-poor-mans-polymorphism-ab0b333b7265
- Curb code rot with (complexity) thresholds: https://blog.ploeh.dk/2020/04/13/curb-code-rot-with-thresholds/
- Simple Code is Unstable: https://medium.com/@andrej.dyck/simple-code-is-unstable-fc5e63bfc35c
- The one and only (or arguably most important) software design principle: https://codeburst.io/the-one-and-only-software-design-principle-5328420712af
- Quality problems in software development -- Quality is teamwork: https://blog.codecentric.de/en/2021/03/quality-means-teamwork/
- Software Development in Disruptive Times: https://queue.acm.org/detail.cfm?id=3458743
- Why Cutting Costs is Expensive - How $9/Hour Software Engineers Cost Boeing Billions: https://medium.com/javascript-scene/why-cutting-costs-is-expensive-how-9-hour-software-engineers-cost-boeing-billions-b76dbe571957
- 7 Must-Do’s to Nurture 10x Engineers: https://medium.com/storyblocks-engineering/7-must-dos-to-nurture-10x-engineers-10a0ba2e7877
- How to be a "wizard programmer": https://news.ycombinator.com/item?id=12119800
- Better Performance Reviews for Developers with a Skill Matrix: https://phauer.com/2022/performance-reviews-skill-matrix-developers/ | SAMPLE EVALUATION SPREADSHEET
- Reflections on 10,000 Hours of Programming: https://matt-rickard.com/reflections-on-10-000-hours-of-programming/[160]
- Stop Designing Languages. Write Libraries Instead: http://lbstanza.org/purpose_of_programming_languages.html
- Replacing Throwing Exceptions with Notification in Validations: https://martinfowler.com/articles/replaceThrowWithNotification.html
- The Biggest Mistake I See Engineers Make: https://www.thezbook.com/the-biggest-mistake-i-see-engineers-make/
- Dependency Inversion Principle - How Google Developers write code: https://paigeshin1991.medium.com/dependency-inversion-principle-how-google-developers-write-code-f6cbd3b530a6
References
- ↑ Object Design Checklist: https://mcsee.medium.com/object-design-checklist-47c63d351352
- ↑ wikipedia: Declarative programming
- ↑ The Complete Guide to Declarative Programming: https://www.capitalone.com/tech/cloud/declarative-programming-guide/
- ↑ Declarative programming -- When “what” is more important than “how”: https://www.ionos.com/digitalguide/websites/web-development/declarative-programming/
- ↑ CSS is a Declarative, Domain-Specific Programming Language: https://notlaura.com/css-is-a-programming-language/
- ↑ Object-Oriented CSS -- What, How, and Why: https://code.tutsplus.com/tutorials/object-oriented-css-what-how-and-why--net-6986 (technique to match a Declarative programming language like CSS to a more OO mindset)
- ↑ wikipedia: List of programming languages by category
- ↑ FP vs. OO List Processing: http://blog.cleancoder.com/uncle-bob/2018/12/17/FPvsOO-List-processing.html
- ↑ Functional Programming Patterns -- A Cookbook: https://medium.freecodecamp.org/functional-programming-patterns-cookbook-3a0dfe2d7e0a
- ↑ Object-Oriented Programming — The Trillion Dollar Disaster: https://medium.com/better-programming/object-oriented-programming-the-trillion-dollar-disaster-92a4b666c7c7 (opinion piece heavily favoring "Functional Programming" paradigms/languages over OOP)
- ↑ wikipedia: Reactive programming
- ↑ The Reactive Principles: https://principles.reactive.foundation
- ↑ Architectural Quality Assessment with CodeMR: https://codemr.medium.com/architectural-quality-assessment-with-codemr-f15de87a8d56
- ↑ Supported Metric List by CodeMR: https://codemr.medium.com/supported-metric-list-by-codemr-a119c3cffc2d
- ↑ What is the fascination with code metrics?: https://stackoverflow.com/questions/195887/what-is-the-fascination-with-code-metrics
- ↑ What code metric(s) convince you that provided code is “crappy”?: https://stackoverflow.com/questions/187289/what-code-metrics-convince-you-that-provided-code-is-crappy
- ↑ Visual Studio - Code metrics values: https://docs.microsoft.com/en-us/visualstudio/code-quality/code-metrics-values?view=vs-2019
- ↑ How to Generate code metrics data (in Visual Studio): https://docs.microsoft.com/en-us/visualstudio/code-quality/how-to-generate-code-metrics-data?view=vs-2019
- ↑ Measure Your Code Using Code Metrics: https://www.c-sharpcorner.com/article/measure-your-code-using-code-metrics/
- ↑ A Survey of Metrics for UML Class Diagrams: http://www.jot.fm/issues/issue_2005_11/article1/
- ↑ Eclipse - Metrics plugin: http://metrics.sourceforge.net/
- ↑ How to Measure Code Quality - 7 Metrics Every Engineer Should Know: https://www.stepsize.com/blog/how-to-measure-code-quality-7-metrics-every-engineer-should-know
- ↑ We Can't Measure Programmer Productivity… or Can We?: http://java.dzone.com/articles/we-cant-measure-programmer
- ↑ Measuring Software Complexity - What Metrics to Use?: https://thevaluable.dev/complexity-metrics-software/
- ↑ Capitalism, Socialism, and Code Ownership: https://blog.scottlogic.com/2021/09/30/Collective-Code-Ownership.html
- ↑ Martin Fowler on Code Ownership types: https://martinfowler.com/bliki/CodeOwnership.html
- ↑ Martin Fowler - Shifting To Code Ownership: https://martinfowler.com/bliki/ShiftingToCodeOwnership.html
- ↑ Weak Code Ownership in detail: http://blog.jayfields.com/2015/02/experience-report-weak-code-ownership.html (our team started out using this approach)
- ↑ DZONE - Code Ownership – Who Should Own the Code?: https://dzone.com/articles/code-ownership-–-who-should
- ↑ Microsoft -- Don’t Touch My Code! - Examining the Effects of Ownership on Software Quality: https://www.microsoft.com/en-us/research/publication/dont-touch-my-code-examining-the-effects-of-ownership-on-software-quality/?from=http%3A%2F%2Fresearch.microsoft.com%2Fpubs%2F150498%2Fbird2011dtm.pdf
- ↑ Scaling Collective Code Ownership & Code Reviews at LinkedIn - Nikolai Avteniev: https://www.brighttalk.com/webcast/5742/333544
- ↑ Capitalism, Socialism, and Code Ownership: https://blog.scottlogic.com/2021/09/30/Collective-Code-Ownership.html
- ↑ The 7 Virtues of Good Software Design: https://dzone.com/articles/the-seven-virtues-of-a-good-design
- ↑ Software Architecture Cheat Sheet for Daily Usage: https://azeynalli1990.medium.com/software-architecture-cheat-sheet-for-daily-usage-9923922ea75b
- ↑ Design Principles and Design Patterns - by Rob "Uncle Bob" Martin (2000): https://fi.ort.edu.uy/innovaportal/file/2032/1/design_principles.pdf
- ↑ A Solid Guide to SOLID Principles: https://www.baeldung.com/solid-principles
- ↑ Why every element of SOLID is (according to this author) wrong: https://speakerdeck.com/tastapod/why-every-element-of-solid-is-wrong
- ↑ Solid Relevance: http://blog.cleancoder.com/uncle-bob/2020/10/18/Solid-Relevance.html (Uncle Bob's response to Dan North's "Write Simple Code rather than following SOLID" talk)
- ↑ CUPID – the back story: https://dannorth.net/2021/03/16/cupid-the-back-story/ (a bold claim that ever principle of SOLID is wrong)
- ↑ DesignPatterns implemented in JAVA: https://github.com/gkatzioura/DesignPatterns
- ↑ In28Mins -- Design Patterns for Beginners with Java examples: https://dzone.com/articles/design-patterns-for-beginners-with-java-examples
- ↑ How to Build Creational Design Patterns: Singleton Pattern: https://dzone.com/articles/creational-design-patterns-singleton-pattern
- ↑ Introducing the Single Element Pattern: https://medium.freecodecamp.org/introducing-the-single-element-pattern-dfbd2c295c5d | SRC
- ↑ WRITING TESTABLE CODEPRESENTATIONS Singletons are Pathological Liars: http://misko.hevery.com/2008/08/17/singletons-are-pathological-liars/
- ↑ Design Patterns Explained – Service Locator Pattern with Code Examples: https://stackify.com/service-locator-pattern/
- ↑ Usage of the Adapter pattern in Java: https://refactoring.guru/design-patterns/adapter/java/example#lang-features
- ↑ wikipedia: Trygve Reenskaug (researcher who coined the term "MVC")
- ↑ The original MVC reports Trygve Reenskaug Dept. of Informatics University of Oslo: https://www.duo.uio.no/bitstream/handle/10852/9621/Reenskaug-MVC.pdf?sequence=1
- ↑ The Model-View-Controller (MVC) -- Its Past and PresentTrygve Reenskaug, University of Oslo: https://folk.universitetetioslo.no/trygver/2003/javazone-jaoo/MVC_pattern.pdf | BACKUP
- ↑ MODELS - VIEWS - CONTROLLERS originakl 1979 whitepaper: https://folk.universitetetioslo.no/trygver/1979/mvc-2/1979-12-MVC.pdf
- ↑ Origins of Model View Controller: https://medium.com/@duncandevs/origins-of-model-view-controller-d685528857ce
- ↑ Do MVC like it’s 1979 (on iOS/Swift): https://medium.com/bumble-tech/do-mvc-like-its-1979-da62304f6568
- ↑ Trygve Reenskaug's MVC specification applied to a Java Swing GUI app: https://codereview.stackexchange.com/questions/163146/trygve-reenskaug-s-mvc-specification
- ↑ New to "No Code"? Start Here: https://kissflow.com/low-code/no-code/no-code-overview/
- ↑ Stripe’s first no-code product -- Payment Links: https://www.producthunt.com/newsletter/8463-stripe-s-first-no-code-product-payment-links
- ↑ Plasmic: https://www.plasmic.app (visual builder for your tech stack)
- ↑ AppSmith: https://www.appsmith.com (powerful open source framework to build internal tools)
- ↑ TechRepbulic -- REPORT - "Low-code" tech is the future for businesses and entrepreneurs: https://www.techrepublic.com/article/report-low-code-tech-is-the-future-for-businesses-and-entrepreneurs/
- ↑ Is "Low-code" the best “new” technology breakthrough: https://www.prolim.com/low-code-the-best-new-technology-breakthrough/
- ↑ 10 Best Low-Code Development Platforms in 2021: https://www.softwaretestinghelp.com/low-code-development-platforms/
- ↑ Introducing "Microsoft PowerFx" -- the low-code programming language for everyone: https://powerapps.microsoft.com/en-us/blog/introducing-microsoft-power-fx-the-low-code-programming-language-for-everyone/
- ↑ AppWrite: https://appwrite.io (Secure Open-Source Backend Server for Web, Mobile & Flutter Developers)
- ↑ Pair Programming and Why We Do It: https://dzone.com/articles/pair-programming-at-codacy-and-why-we-do-it-1
- ↑ Pair Programming (aka. Pairing): https://www.agilealliance.org/glossary/pairing
- ↑ What Is Pair Programming? Advantages and Challenges: https://dzone.com/articles/what-is-pair-programming-advantages-challenges-tut
- ↑ On Pair Programming: https://martinfowler.com/articles/on-pair-programming.html
- ↑ Teaching using Mob Programming: http://blog.code-cop.org/2014/09/teaching-using-mob-programming.html
- ↑ A Day of Mobbing: https://www.youtube.com/watch?v=p_pvslS4gEI
- ↑ "Mob Programming" Time Lapse: https://www.youtube.com/watch?v=Ev7uus12HRY
- ↑ A day of Mob Programming 2016: https://www.youtube.com/watch?v=dVqUcNKVbYg
- ↑ Mob Programming: https://www.infoq.com/presentations/mob-programming
- ↑ Woody Zuill on Mob Programming and No Estimates: https://www.infoq.com/interviews/zuill-mob-programming
- ↑ Agile Alliance -- Mob Programming – A Whole Team Approach (explained by Woody Zuill): https://www.agilealliance.org/resources/experience-reports/mob-programming-agile2014/
- ↑ GOTO 2017 conference -- Mob Programming - A Whole Team Approach (Woody Zuill): https://www.youtube.com/watch?v=SHOVVnRB4h0
- ↑ Mob programming and shared everything: https://blog.codecentric.de/en/2020/02/mob-programming-shared-everything/
- ↑ Team-oriented development: https://blog.codecentric.de/en/2020/04/team-oriented-development/
- ↑ How to Find the Right Collaborative Coding Tool for Remote Pair Programming: https://dzone.com/articles/the-right-collaborative-coding-tool-for-remote-pair-programming
- ↑ The Surprisingly Inclusive Benefits of Mob Programming: https://cucumber.io/blog/inclusive-benefits-of-mob-programming/
- ↑ Mob Programming - the Good, the Bad and the Great: https://underthehood.meltwater.com/blog/2016/06/01/mob-programming/
- ↑ Speed Up Your Scrum With Mob Programming : https://www.scrum.org/resources/blog/speed-your-scrum-mob-programming
- ↑ How Mob Programming Will Make You More Effective: https://hackernoon.com/how-mob-programming-will-make-you-more-effective-590a1b7e0418
- ↑ I did mob programming every day for 5 months -- here’s what I learnt: https://medium.com/comparethemarket/i-did-mob-programming-every-day-for-5-months-heres-what-i-learnt-b586fb8b67c
- ↑ Mob Programming – A Whole Team Approach: https://www.agilealliance.org/wp-content/uploads/2015/12/ExperienceReport.2014.Zuill_.pdf
- ↑ InfoQ -- Mob Programming overview (VIDEO): https://www.infoq.com/presentations/mob-programming
- ↑ Ping-Pong, Paired Programing (VIDEO): https://thoughtbot.com/upcase/videos/ping-pong-paired-programing
- ↑ The Secret to a Great Planning Process — Lessons from Airbnb and Eventbrite: https://review.firstround.com/the-secret-to-a-great-planning-process-lessons-from-airbnb-and-eventbrite
- ↑ Don’t do Code Review, try Mob instead: https://medium.com/verotel/dont-do-code-review-try-mob-instead-82149ef035df
- ↑ 7 Brain Tips for Software Developers: http://www.javacodegeeks.com/2014/12/7-brain-tips-for-software-developers.html
- ↑ The 7 Highest Paying Companies for Tech Workers in 2021: https://medium.com/@SomeTechGuru/the-top-7-paying-companies-for-tech-workers-in-2021-3b51dabf99b7
- ↑ Why Don’t Tech Companies Pay Their Engineers to Stay?: https://marker.medium.com/why-dont-tech-companies-pay-their-engineers-to-stay-b9c7e4b751e9
- ↑ The Argument for Location-Based Salaries Is Falling Apart: https://www.wired.co.uk/article/location-based-salary-discrepancy
- ↑ Cracking The Coding Interview - 12 Things You Need To Know: http://dotnet.dzone.com/articles/cracking-coding-interview-12
- ↑ Top 10 OOP Concepts Interview Questions: http://www.instanceofjava.com/2015/03/oops-concepts-interview-questions.html
- ↑ 10 Tricky Core-Java Interview Questions: http://javaconceptoftheday.com/tricky-core-java-interview-coding-questions/
- ↑ 7 Programmer Recruiting Mistakes: http://en.codeceo.com/7-programmer-recruiting-mistakes.html
- ↑ Resume Writing & Interviewing Skills: http://slideplayer.com/slide/5942078/
- ↑ Unifying the Technical Interview: https://aphyr.com/posts/354-unifying-the-technical-interview
- ↑ How to Prepare for Your DevOps Interview: https://dzone.com/articles/how-to-prepare-for-your-devops-interview
- ↑ Your DevOps Interview: https://itchronicles.com/devops/your-devops-interview/
- ↑ What’s Your Favorite DevOps Interview Question? 20 DevOps Pros Share Their Favorite Questions and How Developers Can Prepare: https://stackify.com/devops-interview-questions/
- ↑ DevOps interview questions: How to prepare: https://raygun.com/blog/devops-interview-questions/
- ↑ Top 8 DevOps Interview Preparation Tips: https://www.coachdevops.com/2019/07/tips-for-attending-devops-interviews.html
- ↑ Database of JAVA interview questions: http://javasearch.buggybread.com/InterviewQuestions/questionSearch.php
- ↑ Most Frequently Asked Java Interview Questions: https://blog.usejournal.com/most-frequently-java-interview-question-127e923f70d9
- ↑ Top 20 Java Interview Questions by Hiring Investment Banks: https://dzone.com/articles/top-20-java-interview-questions-with-answers
- ↑ Senior Developers are Getting Rejected for Jobs: https://glenmccallum.com/2019/05/14/senior-developers-rejected-jobs/
- ↑ The Best of Java Interview Questions: https://dzone.com/articles/interview-question-cluster
- ↑ 50+ Java Interview Questions for Programmers: https://dzone.com/articles/50-java-interview-questions-for-programmers
- ↑ Cracking the (Frontend) Coding Interview: https://blog.usejournal.com/cracking-the-frontend-coding-interview-ec7d5b1e6755 (with old-school vanilla JS)
- ↑ Recruiting Software Developers – Coding Tests (are they needed, and how to prepare): https://henrikwarne.com/2021/04/19/recruiting-software-developers-coding-tests/
- ↑ Codecademy, the free online coding school, raises another $30M led by Naspers: https://techcrunch.com/2016/07/12/codecademy-the-free-online-coding-school-raises-another-30m-led-by-naspers/
- ↑ GLOT - Selenium Python "Headless Chrome" Test example: https://glot.io/snippets/ew3ok1nh2g
- ↑ wikipedia: The Typing of the Dead
- ↑ Web Development Tools You Need to Know by the End of 2014: http://java.dzone.com/articles/web-development-tools-you-need
- ↑ Top 20 Developer Tools of 2016: http://dzone.com/articles/top-20-developer-tools-of-2016-1
- ↑ 17 key dev tools for 2017: http://dzone.com/articles/top-17-tools-used-in-software-development
- ↑ Get your kids coding with Minecraft: https://developer.atlassian.com/blog/2016/02/get-your-kids-coding-with-minecraft/ | EXAMPLE
- ↑ Which programming languages are most popular (and what does that even mean)?: http://www.zdnet.com/article/which-programming-languages-are-most-popular-and-what-does-that-even-mean/
- ↑ PYPL PopularitY of Programming Language: http://pypl.github.io/PYPL.html
- ↑ The 9 Most In-Demand Programming Languages of 2016: http://www.codingdojo.com/blog/9-most-in-demand-programming-languages-of-2016/
- ↑ How Popular is JavaScript in 2019?: https://medium.com/javascript-scene/how-popular-is-javascript-in-2019-823712f7c4b1
- ↑ Sorting Algorithms visualized: https://www.reddit.com/r/educationalgifs/comments/5fcfe4/sorting_algorithms_visualized/
- ↑ Biased Algorithms Learn From Biased Data - 3 Kinds Biases Found In AI Datasets: https://www.forbes.com/sites/cognitiveworld/2020/02/07/biased-algorithms/
- ↑ Algorithmic Bias - Why Bother?: https://cmr.berkeley.edu/2020/11/algorithmic-bias/
- ↑ Bias In AI Algorithms: https://towardsdatascience.com/how-are-algorithms-biased-8449406aaa83
- ↑ Babysitting Racist Algorithms: https://www.mediapost.com/publications/article/364336/babysitting-racist-algorithms.html
- ↑ Google ‘fixed’ its racist algorithm by removing gorillas from its image-labeling tech: https://www.theverge.com/2018/1/12/16882408/google-racist-gorillas-photo-recognition-algorithm-ai
- ↑ Google Searching For New Skin Tone Measures To Reduce Bias: https://www.mediapost.com/publications/article/364335/google-searching-for-new-skin-tone-measures-to-red.html
- ↑ Design patterns, the big picture, Part 1 -- Design pattern history and classification (Part 1 of 3): http://www.javaworld.com/article/2078665/core-java/design-patterns--the-big-picture--part-1--design-pattern-history-and-classification.html
- ↑ Design patterns, the big picture, Part 2 -- Gang-of-four classics revisited: http://www.javaworld.com/article/2078675/core-java/design-patterns--the-big-picture--part-2--gang-of-four-classics-revisited.html
- ↑ Design patterns, the big picture, Part 3 -- Beyond software design patterns: http://www.javaworld.com/article/2071208/core-java/design-patterns--the-big-picture--part-3--beyond-software-design-patterns.html
- ↑ A Software Developer’s Guide to Side Projects: https://dzone.com/articles/a-software-developers-guide-to-side-projects
- ↑ Learn to Code with Star Wars: https://code.org/starwars
- ↑ Minecraft Hour of Code Tutorials https://code.org/minecraft
- ↑ Monolith to Microservices Using the Strangler Pattern: https://dzone.com/articles/monolith-to-microservices-using-the-strangler-patt
- ↑ Strangler Applications: https://paulhammant.com/2013/07/14/legacy-application-strangulation-case-studies/
- ↑ Sharing UI Components to Build Consistent UIs Faster: https://medium.com/javascript-in-plain-english/sharing-ui-components-to-build-consistent-uis-faster-5e60141ca855
- ↑ Switching from LESS to SASS with the Strangler Pattern: https://hoyer.io/LESS-to-SASS-with-Strangler-Pattern/
- ↑ Strangler Applications: https://paulhammant.com/2013/07/14/legacy-application-strangulation-case-studies/
- ↑ Chopping the monolith: https://blog.frankel.ch/chopping-monolith/
- ↑ Naming Conventions From Uncle Bob's Clean Code Philosophy: https://dzone.com/articles/naming-conventions-from-uncle-bobs-clean-code-phil
- ↑ 5 Tips to Master the Art of Clean Code: https://mrshrestha.medium.com/5-tips-to-master-the-art-of-clean-code-cdd11a25b372
- ↑ What Is Clean Code?: https://medium.com/s/story/reflections-on-clean-code-8c9b683277ca
- ↑ How to make your code better with intention-revealing function names: https://medium.freecodecamp.org/how-to-make-your-code-better-with-intention-revealing-function-names-6c8b5271693e
- ↑ Why 4 spaces are used as the unit of indentation in Java?: https://stackoverflow.com/questions/4802381/why-4-spaces-are-used-as-the-unit-of-indentation-in-java
- ↑ Why are spaces preferred over tabs as indentation in Python?: https://www.reddit.com/r/learnpython/comments/34dpn4/why_are_spaces_preferred_over_tabs_as_indentation/
- ↑ Domain-Oriented Observability: https://martinfowler.com/articles/domain-oriented-observability.html
- ↑ The Clean Code Talks - Don't Look For Things!: https://www.youtube.com/watch?v=RlfLCWKxHJ0
- ↑ 10 Must-Have React Developer Tools to Write Clean Code: https://dev.to/alexomeyer/10-must-have-react-developer-tools-to-write-clean-code-1808
- ↑ Every second matters - the hidden costs of unoptimized "Developer workflows": https://humanitec.com/blog/hidden-costs-of-unoptimized-developer-workflows (excellent chart of max. time to spend to save a certain amount of time, based on frequency of the task carried out)
- ↑ The Well-Grounded Java Developer: http://manning.com/evans/
- ↑ Eclipse Collections Kata: https://github.com/eclipse/eclipse-collections-kata
- ↑ JVM Calendar -- 19 Lessons in a Kata: https://dzone.com/articles/jvm-calendar-19-lessons-in-a-kata
- ↑ Code Kata: http://codekata.com/
- ↑ Elvis operator etymology: https://stackoverflow.com/questions/35844113/elvis-operator-etymology
- ↑ Tabs vs Spaces -- How They Write Java at Google, Twitter, Mozilla and Pied Piper: https://blog.takipi.com/tabs-vs-spaces-how-they-write-java-in-google-twitter-mozilla-and-pied-piper/
- ↑ * Linus Torvalds on 80-character code limit being outdated, suggests 142: https://lkml.org/lkml/2020/5/29/1038
- ↑ Refactoring comics/infographics: http://llewellynfalco.blogspot.com/p/infographics.html
- ↑ Leak of Microsoft Salaries Shows Fight for Higher Compensation: https://onezero.medium.com/leak-of-microsoft-salaries-shows-fight-for-higher-compensation-3010c589b41e
- ↑ Changelog podcast #463 - 10,000 hours concept applied to development: https://changelog.com/podcast/463
See Also
Programming Languages | IDE | E-Learning | Technology/TechDebt | Virtualization | Docker | OS | Device | Client/Server | API | Testing | CI/CD/CDD | DevOps | Agile | PM | Productivity | LAMP | MEAN | WebApp | DesktopApp | Mobile App