In Defense of Documentation
Anyone who has spent a modicum of time working with software developers learns that developers hate creating designs, use cases, “readmes”, code samples and similar technical documentation. Agile...
View ArticleOf Patents and Putters
The recent victory of Apple over Samsung has brought the arguments for and against software patents to the forefront once again. With many of the big technology companies engaged in patent litigation,...
View ArticleA Glimpse at Stack Overflow
As any software developer that has searched for anything on the Internet probably knows, the Stack Exchange web sites contain an increasingly large body of useful knowledge. This initially included...
View ArticleDeveloper to Architect: A Matter of Perspective
When interviewed for a promotion some time ago, the interviewer told me two developers are arguing over whether to use programming language A or B for a project and asked me which I would recommend....
View ArticleA Clash of Development Cultures
Software developers often consider themselves perfectly rational. After all, their jobs consist of programming deterministic, rational machines (computers). However, anyone who has worked with...
View ArticleA Ticket to Security via Obscurity
A group of Australian university students recently “cracked” the ”encryption” used by public transport tickets in New South Wales (NSW), Australia. The public transport ticket format’s security relied...
View ArticleShould Software Architects Write Code?
Much has been written and debated on whether software architects should write code. Many argue the more architects understand the language, tools and environment they are designing for, the more...
View ArticleSoftware Development: An Overtime Culture
Software development is rife with overtime. Driven by passion and perfectionism, many developers throw everything into it, reveling in a culture of coding in darkened rooms late at night. Coupled with...
View ArticleIntellectual Property Ownership
Whenever anyone involved in intellectual property starts a new job, particularly in software development, the employment contract usually includes a lengthy intellectual property agreement where the...
View ArticleThe Software Development Employment Jungle
When I first looked for software development jobs after leaving university, most employers were looking for candidates with the right attitude, right aptitude and good marks. However, as the years...
View ArticleWhat makes a “good” software developer?
Spend any with software developers and the question of whether a software developer is “good” has invariably arisen. Want to hire a new software developer? Want to promote someone to a lead developer...
View ArticleBig Design Up Front versus Emergent Design
(This post is in response to Hayim Makabee’s posts on emergent design and adaptable design along with some of the follow-up discussions, such as the thread in the “97 Things Every Software Architect...
View ArticleArchitect/Stakeholder Inversion
Architect/stakeholder inversion occurs when non-technical stakeholders tell software architects how a system should work, not what it should do. Without the “what”, software architects are left trying...
View ArticleUnit Testing: The 20/70/0 Rule
Automated unit testing, one of the most important foundations of software quality, is still a struggle for many software development teams. Justifying the extra upfront time to business is difficult,...
View ArticleInformation Security vs Software Developers: Bridging the Gap
One of the biggest challenges in information security is application security. For example, Microsoft’s Security Intelligence Report estimates that 80% of software security vulnerabilities are in...
View ArticleTreating Enterprise Software like Game Design
In 2005, Robin Hunicke, Marc LeBlanc and Robert Zubek wrote an academic paper titled “MDA: A Formal Approach to Game Design and Game Research“. It was and is an influential attempt at quantifying game...
View ArticleThe Future of Product Management in Enterprise Software
In traditional enterprise software, product managers represent the customer to software development teams. They draw on industry experience to propose and prioritize features, usually as the scrum...
View ArticleAgile: It does not mean what you think it means
Many organizations adopt Agile development methodologies, or just Agile, for the right reasons. They want a software development methodology that welcomes change. They want something to give management...
View ArticleCCSP Review
After passing the exam, I wanted to capture my thoughts on the Certified Cloud Security Professional (CCSP), the latest certification from (ISC)2 (known for the CISSP certification) and the Cloud...
View ArticleThe Potential of Cosmos: Containers
Cosmos is an operating system construction kit in development since 2006. At first glance, it appeals to the “Internet of Things” (IoT) crowd. One could control home automation or run a Raspberry Pi...
View Article