Software Development Methodology

The industry of software development differs from others because its raw material, and primary success factor is made by people. Individuals' efficiency on a project can vary incredibly from one context to another. Trying to manage people in a mechanistic way is one of the best way to get rid of talent and to lower the team's productivity. Productivity boosts cannot be achieved unless individuals, team motivations and communication dynamics are taken into account.

Development Process

Aggressive Development processes, such as SCRUM, aim to a x10 factor in software development productivity. Be it an achievable goal, or just marketing, in many contexts the development process is just stuck, barely claimed, or simply doesn't exists. Even where projects are normally delivered without turning into a bloodbath, significant improvements are still possible. Anyway, different situations need different solutions: development process is not an one-size-fits-all item, so observation and review are needed to contnuously improve the overall efficiency.

Software Configuration Management

Even though SCM is often treated as a second-class-citizen in the IT landscape, it is a key factor in the development process productivity. A nasty feature of bad SCM is that it gets in the way during critical times, such as releases, maintenance updates and so on. Failing to master the basics of the SCM discipline and tools, often leads to tricks and "workarounds" that will spawn malicious effects during the next critical time. Knowledge about theory and practice can be achieved through specific training and supported via on-site mentoring.

Unified Modeling Language

UML is a powerful tool with a given purpose: the ability to express the representation of a system (existing ore to be developed) in a shared language, with the lowest degree of ambiguity. It can (and probably must) be the current language between members of the development team, and it is an obvious choice (yet not the only one possible) when it comes to share blueprints between multiple teams, especially in an offshore development scenario. But is far from being the optimal choice when it comes to grasp the information from the domain experts. In such cases, it's preferable to choose or define a common ground, to allow all the domain experts to share their valuable knowledge with the lowest possible language mismatch.

Software Project Management

Software Estimation

Software Architecture

Service Oriented Architecture

Offshore Software Development

Offshore software development is just another variation on the software development theme, which means that if you can't control in-house software development, you have little hopes to control development in another country.
Apart from obvious issues such as language, remoting and time zones, offshoring needs an open minded approach to understand cultural differences between the team and to turn them into advantages. Communication is generally the key issue: tools and techniques used to share information, interacting with teammates, defining requirements, and so on could be tuned to reduce deadlocks and slack time to a minimum.

Web 2.0


Blogging is definitely not only about having an on-line diary. Blogging dynamics have to do with the topics you blog about, your ultimate purpose, communications flows, multimedia content, ripple effects, chaos theory, social factors, and so on. Blogs could be a way to make money for some individuals, or a way not to lose money for large companies, or viceversa.

Social Software

Guarda questa pagina in italiano

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License