Best Practices

Best Practices

116 bookmarks
Custom sorting
Skills Matter : In The Brain of Simon Brown: Good code isn t
Skills Matter : In The Brain of Simon Brown: Good code isn t
In this session Simon Brown, author of the Software Architecture for Developers Workshop and Enterprise software developer will look at why delivering a successful software project requires more than simply choosing some technology and throwing it together, showing how you can take the best bits from traditional and modern approaches to form a structured yet lightweight approach to software development. The session will cover the complete end-to-end software development process; from planning, gathering requirements and software architecture through to the effective use of source code control, automated unit testing, continuous integration and load testing. Good code isn't enough.
Skills Matter : In The Brain of Simon Brown: Good code isn t
Bugfixes without Tests are Anti-fixes — Agile Web Development & Operations
Bugfixes without Tests are Anti-fixes — Agile Web Development & Operations

A bugfix without a test is an anti-fix. You heard me – right up there next to the anti-christ himself. After committing the bugfix, the developer thinks their ‘Done’ when in reality they’ve just introduced a new bug (and more complexity) into the system.

Bugs are incredibly interesting facts. They are indicative of that rare species – source code that is actually used (remember the Urban Myth that only 20% of your source code is actually used on a daily basis?). If a customer has taken the time to try and get something done with your application, the least you can do is write tests for any bugs they happened to come across. The test is your unspoken agreement with the end-user that this particular bug won’t happen again.

Bugfixes without Tests are Anti-fixes — Agile Web Development & Operations
What and How to Measure Performance « Nick Gerner
What and How to Measure Performance « Nick Gerner

Last week I wrote about performance testing Open Site Explorer.  But I didn’t write much about how and why to collect the relevant data.  In this post I’ll write about the tools I use to collect performance data, how I aggregate it, and little bit about what those data tell us.  This advice applies equally well when running a performance test or during normal production operations of any web application.

I collect three kinds of data:

system performance characteristics client-side, perceived performance server-side errors and per-request details

What and How to Measure Performance « Nick Gerner
Coding Horror: Paying Down Your Technical Debt
Coding Horror: Paying Down Your Technical Debt
I believe that accruing technical debt is unavoidable on any real software project. Sure, you refactor as you go, and incorporate improvements when you can -- but it's impossible to predict exactly how those key decisions you made early on in the project are going to play out. All you can do is roll with the punches, and budget some time into the schedule to periodically pay down your technical debt.
Coding Horror: Paying Down Your Technical Debt
Centralised logging with rsyslog | Canonical
Centralised logging with rsyslog | Canonical
The management of multiple systems requires the setup of tools to control the servers behaviour in real time and post analysis. Moreover, regulations and best practices often require the IT department to maintain an accurate log of all events happening in their systems in order to allow for later analysis. Performing such analysis on each system is time consuming and is relatively insecure because if a server is compromised, the attacker, having gained root access, will be able to cover its traces by removing the portions of the logs that he wants.
Centralised logging with rsyslog | Canonical
Puppet - Puppet Best Practice - Puppet Labs
Puppet - Puppet Best Practice - Puppet Labs

To effectively maintain a large number of systems, Puppet is essential to keep the systems in a consistent state. Often, Puppet manifests will be written by multiple system administrators to manage several dozen types of systems. These standards and best practices are presented here as an evolving effort to document and architect the Puppet service in a manageable fashion in such a large environment. One should also review the Style Guide .

These best practices were developed at Stanford University with contributions from the greater Puppet community and represent the embodiment of two years of Puppet infrastructure deployment and management.

Puppet - Puppet Best Practice - Puppet Labs
InformIT: Continuous Delivery: Anatomy of the Deployment Pipeline Introduction
InformIT: Continuous Delivery: Anatomy of the Deployment Pipeline Introduction
"The deployment pipeline is the key pattern that enables continuous delivery. A deployment pipeline implementation provides visibility into the production readiness of your applications by giving feedback on every change to your system. It also enables team members to self-service deployments into their environments. Learn how to create and manage a deployment pipeline, and how to use the crucial information it provides on the bottlenecks in your software delivery process so you can work to continuously improve it."
InformIT: Continuous Delivery: Anatomy of the Deployment Pipeline Introduction
Software Quality Connection
Software Quality Connection
At Software Quality Connection, we care about helping software developers, testers and IT professionals in the trenches. We aim to provide an unfiltered platform to help them discuss their views with peers and experts, stay up to date on the latest trends, talk about and advance their careers, learn how to improve the quality of their software, share the problems that matter most to them — with joy, and with up-to-date knowledge. Our articles and community let you be creative,  and we give you a place to talk, and occasionally, laugh — with no corporate red tape to get in the way.
Software Quality Connection
Threat Risk Modeling - OWASP
Threat Risk Modeling - OWASP

When you start a web application design, it is essential to apply threat risk modeling; otherwise you will squander resources, time, and money on useless controls that fail to focus on the real risks. The method used to assess risk is not nearly as important as actually performing a structured threat risk modeling. Microsoft notes that the single most important factor in their security improvement program was the corporate adoption of threat risk modeling. OWASP recommends Microsoft’s threat modeling process because it works well for addressing the unique challenges facing web application security and is simple to learn and adopt by designers, developers, code reviewers, and the quality assurance team. The following sections provide some overview information (or see Section 6.9, Further Reading, for additional resources).

Threat Risk Modeling - OWASP
Dette Technique : il n’y a pas de pénalité à la rembourser en avance « DantotsuPM.com
Dette Technique : il n’y a pas de pénalité à la rembourser en avance « DantotsuPM.com

Une fois que ce point de basculement est déterminé, une société peut décider où et quand elle doit aborder les problèmes de qualité structurelle qui ont créé la dette technique. La partie agréable de se débarrasser de dette technique est la même que pour la dette personnelle: cela évite le paiement de plein d’intérêts. Pourtant, il n’y a aucune pénalité à rembourser en avance… en fait, cela apporte une récompense significative grâce à un logiciel de meilleure qualité.

Dette Technique : il n’y a pas de pénalité à la rembourser en avance « DantotsuPM.com
Scott Chacon on the Interwebs
Scott Chacon on the Interwebs

So, what is GitHub Flow?

  Anything in the master branch is deployable   To work on something new, create a descriptively named branch off of master (ie: new-oauth2-scopes)   Commit to that branch locally and regularly push your work to the same named branch on the server   When you need feedback or help, or you think the branch is ready for merging, open a pull request   After someone else has reviewed and signed off on the feature, you can merge it into master   Once it is merged and pushed to ‘master’, you can and should deploy immediately

Scott Chacon on the Interwebs
InfoQ: Patterns for Continuous Delivery
InfoQ: Patterns for Continuous Delivery
Continuous Delivery can be applied to companies of any size, but the exact process is going to differ widely from company to company. Clearly the needs of a four-man team that handles everything is going to be different from that of a large, multi-team company with formal QA and a well-equipped production support department. Rather than try to make a one-size-fits-all solution, this white paper will cover a variety of scenarios and options.
InfoQ: Patterns for Continuous Delivery
Converting a Subversion repository to Git, (7 steps to migrate a complete mirror of svn in git) | JohnAlbin
Converting a Subversion repository to Git, (7 steps to migrate a complete mirror of svn in git) | JohnAlbin
Our goal is to do a complete conversion of our Subversion repository and end up with a bare Git repository acceptable for sharing with others (privately or publicly). Bare repositories are ones without a local working checkout of the files available for modifications. They are the recommended format for shared repositories.
Converting a Subversion repository to Git, (7 steps to migrate a complete mirror of svn in git) | JohnAlbin
Guide to HTML5 Web Security
Guide to HTML5 Web Security

HTML5 Web Security describes issues, vulnerabilities, threat & attack scenarios and countermeasures across 80 pages including numerous well thought-out diagrams, and is backed up with detailed references and an appendix full of attack details.

The main sections are:

2.2 Cross-origin resource sharing 2.3 Web storage 2.4 Offline web application 2.5 Web messaging 2.6 Custom scheme and content handlers 2.7 Web sockets API 2.8 Geolocation API 2.9 Implicit relevant features of HTML5 Web workers, new elements, attributes and CSS, Iframe sandboxing and server-sent events

Guide to HTML5 Web Security
Better Code Starts with Review
Better Code Starts with Review
ugs – the bane of a software developer’s existence. When not found and fixed quickly, even the most minor bugs can escalate to cause severe functionality issues for all kinds of software, not to mention causing hours of software team frustration spent locating and making fixes. Fortunately, as the below infographic illustrates, today’s code review methods can crack down on buggy code and save companies thousands of dollars and developers man-hours over time. The key is to start the review process during the development process. And while many software operations can be performed by machine, code review still requires the human touch. Don’t code without code review – implement these tactics in your organization and help fight bad code today!
Better Code Starts with Review
Crisp's Blog » Good and Bad Technical Debt (and how TDD helps)
Crisp's Blog » Good and Bad Technical Debt (and how TDD helps)

"Technical Debt is usually referred to as something Bad. One of my other articles The Solution to Technical Debt certainly implies that, and most other articles and books on the topic are all about how to get rid of technical debt. But is debt always bad? When can debt be good? How can we use technical debt as tool, and distinguish between Good and Bad debt?"

Crisp's Blog » Good and Bad Technical Debt (and how TDD helps)
If you inject a container into your class, you are using Service Locator, not Dependency Injection | Paul M. Jones
If you inject a container into your class, you are using Service Locator, not Dependency Injection | Paul M. Jones

"ContainerAware is the new Singleton.

While many people agreed by retweeting and faving. I feel the need to elaborate some more on this statement and safe the explaination for the future.

TL;DR: No class of your application (except for factories) should know about the Dependency Injection Container (DIC).

The ContainerAware interface (actually ContainerAwareInterface, ContainerAware is a basic implementation of it) is part of the Symfony2 API, but a similar concept is known from many other frameworks and many applications rely on it. It defines only the one method setContainer(), which allows to inject the DIC into into an object so that it can directly retrieve services from it."

If you inject a container into your class, you are using Service Locator, not Dependency Injection | Paul M. Jones
ATDD From the Trenches
ATDD From the Trenches

"Then this article is for you – a concrete example of how to get started with acceptance-test driven development on an existing code base. It is part of the solution to technical debt.

This is a real-life example with warts and all, not a polished schoolbook example. So get your trench boots on. I will stay with just Java and Junit, no fancy third-party testing frameworks (which tend to be overused)."

ATDD From the Trenches
GOTO Berlin: DO’s and DON’Ts in a Web API
GOTO Berlin: DO’s and DON’Ts in a Web API
"There are a lot of discussions in matters around REST and web APIs in mailing lists and discussion forums and this is my opinionated thoughts in some of these matters, there is no absolute truth here, Oliver Wolf, principal consultant at InnoQ, started his talk at the GOTO Berlin Conference called ”Web API DOs and DON'Ts"."
GOTO Berlin: DO’s and DON’Ts in a Web API
Third party-performance (Airbnb Nerds, Nov 2013)
Third party-performance (Airbnb Nerds, Nov 2013)
"Almost every site on the internet today serves 3rd-party assets and code - jQuery, analytics, trackers, share buttons, ads - from both their own servers and others - cloud providers, dedicated hardware, CDNs, google hosting. These third parties can have a significant effect on performance, delaying the load event, deferring actions, and being a single point of failure beyond your control. This deck discusses techniques and strategies for working with 3rd parties within these limitations, and shares some relevant community work."
Third party-performance (Airbnb Nerds, Nov 2013)
Snugug/north
Snugug/north
"North is a set of standards and best practices for developing modern web based properties. Included are standards and best practices for all aspects of a project, from kick off through development. North encourages an agile, content-first, approach to product development and a mobile-first, in-browser, system based approach to design and development."
Snugug/north