Fibonacci Must Die! Leonardo Fibonacci died over 760 years ago but he had a profound effect on mathematics in western civilization. He brought what he had learned from mathematician in north Africa back to Europe and authored the book Liber Abaci, which described such things as the Hindu-Arabic numeral system and place value of numbers. In the book he also showed how a number of mathematical problems were solved using the techniques he had learned, one of which was the growth of a population of rabbits. Although he didn't invent it, that sequence bears his name today, and is seen in many places in nature. The use of the Fibonacci sequence in a slightly modified form has also been popularized in the Agile community as values which can be used to estimate the effort required to deliver work.
If you look, though, at James' paper and Mike's excellent 2005 book Agile Estimating and Planning, they both make a very similar point. From James: As the estimates get longer, the precision goes down. Why is that? What’s Your Start-up’s “Bus Count”? 7 Myths of Entrepreneurship and Programming. (Photo: Stuck in Customs) For the last two years, one name has come up again and again when talking with A-class start-up investors: Pivotal Labs. See, Pivotal Labs quietly helps dozens of the fastest-growing tech companies in the world, including freight trains like Groupon and Twitter. If your start-up needs to get good coding done quickly, as in lightning fast — or if new hires need to get good at coding quickly — top venture capitalists are likely to look over their shoulder and confide: “Call Pivotal Labs.”
I first met the Founder of Pivotal Labs, Rob Mee, when one of the start-ups I advise, TaskRabbit, began working with them. One thing is immediately clear: Rob is obsessed with how to get obscenely high output. My kinda guy. I then posed a few questions: How do you create a scalable, bullet-proof business? What are the myths of tech product creation (software specifically, and entrepreneurship more broadly) that he’d like to expose? Think software doesn’t apply to you? Enter Rob Mee. How to Create a Business Model Canvas in Google Docs.
KANBAN. Lack of Progress Bar. Documenting Requirements For Software Development Projects. Bottom-Up Project Estimating. How to develop web applications. This is a question that comes up a lot and for good reason. As a programmer, how the hell am I supposed to learn how to develop web applications? There’s no easy answer and even learning institutions don’t seem to know exactly how to do it; the university I went to doesn’t offer any classes on the topic. So, as most other web developers in the field, I’ve learned by doing and trying. No one told me how to do it, I just started developing something for myself and learned how to develop a web application as a side effect. This is always a great way to learn how to program anything. Fortunately for you, I’ll try to explain most of the process here.
Difference between web application and website First of all, I’d like to point out that developing a web application is not the same thing as developing a web site. Application software, also known as an application, is computer software designed to help the user to perform singular or multiple related specific tasks. Step 1: Analysis Building it. Planning for Failure - The Problem with Working Overtime. There’s an old programmer quote that goes something like this, Some people, when confronted with a problem, think “I know, I’ll use regular expressions.” Now they have two problems. I feel the same way about teams working overtime. In fact, I would phrase it like this, Some people, when confronted with a problem, think “I know, we’ll just work some overtime.” They still have their original problem and have now added one more problem to the pile. So what’s the second problem? The problem is that overtime has been proven time and again to be detrimental to both teams and organizations.
FatigueUndertimeA Demotivated teamTurnover, which in turn results in a loss of tacit knowledge to the organizationA reduction in qualityLack of predictability and increased variance Let’s explore these items. When workers work overtime they get fatigued, this should be obvious. It also demotivates the team. Eventually, the people who can find other jobs, do find other jobs. Oh, and if that wasn’t enough. • What is a good software architecture in a nutshell? | test.ical.ly. Yesterday Nils posted a new article on PHP hates me about starting quick and dirty rather than with a full blown architecture (German, here’s what Google translate does from it ). This produced the question: What is a good architecture and why are there apparently two opposing trenches supporting quality on the one side and speed of development on the other side? After having had enough time to think about this whilst flying to Spain I came to the conclusion that Nils question whether it would be better to start quick and dirty to fail cheap in case the project is a looser or to stick to a clean and solid architecture and spend more time and money.
Does quick always have to be dirty, clean always have to be slow, is dirty always quicker? There has been a comment that assumes that Facebook would not be online today if they concentrated on the architecture right away. After all stuff like HipHop took so long to develop. But that’s ridiculous! First it has to be pragmatic above all. Shove It, FizzBuzz! The First Trait of Successful Developers: Intelligence. A few months ago, I wrote an article titled The Five Traits of Succesful Developers, where I said that, to succeed as a developer, you should possess the following five traits: IntelligenceAbility to get things doneLikeabilityPassionDetermination I go into detail in my book about each one, and I’ve decided to share those details here on the blog, with one post for each of the five traits, so let's take a look at #1.
“Knowing a great deal is not the same as being smart; intelligence is not information alone but also judgment, the manner in which information is collected and used.”– Carl Sagan, world famous astronomer and astrophysicist “You can’t teach height.”– Frank Layden, former coach of the NBA’s Utah Jazz Developers have to be intelligent, but it’s very difficult to actually teach intelligence. It’s like some people are just born with bigger brains. If the interviewer asks you about a specific technology and you don’t know the answer, just say so. A Word About Employer Provided Training. Decomposition of Projects: How to Design Small Incremental Steps by Tom Gilb. Click here to view the complete list of archived articles This article was originally published in the Fall 2010 issue of Methods & Tools Decomposition of Projects: How to Design Small Incremental Steps Tom Gilb, The basic premise of iterative, incremental and evolutionary project management (Larman 2003) is that a project is divided into early, frequent and short duration delivery steps.
Introduction See figure 1, which outlines the difference between the Waterfall method, incremental methods and evolutionary methods. There is evidence that evolutionary methods provide benefits. Figure 1. The experiences of a Norwegian company producing a market research tool, Conformit, also proved the benefit of using Evo. Table 1: The end result of about 10 weekly result deliveries to one stakeholder, in 1 of 4 web survey product areas improved simultaneously. A Policy for Evo Planning One way of guiding Evo planners is by means of a ‘policy’. Evo Planning Policy Figure 2. Figure 3. 3 Simple But Critical Steps For Project Management.
3 Simple But Critical Steps For Project Management. From the Mule’s Mouth » Blog Archive » Implementing Kanban for Sustaining Engineering. I’ve been working at MuleSoft on the Sustaining Engineering team for a few months. In this time I watched how things work and find out what type of challenges we deal everyday have and how we solved them. I watched a great team working long hours to solve customers problems as fast as possible. Our primary goal is to enable our customers to meet their deadlines, and remove any problem they might have with MuleSoft’s products in the process.
Context on the type of work The sustaining engineering team works on solving problems for our customers, improving the code, implementing new features and reviewing how things behave to answer questions. Problems and challenges This is the list of problems I’ve seen during this time. Uncontrolled growth of Work in Progress. Looking better into the problems, I can see that most of our them are actually an effect of uncontrolled WIP growth. What’s Kanban? In a few words, Kanban is a pull system with a visual way of organizing work.
How will Kanban help us? Waste #6: Task Switching. Welcome to episode six of our series "The Seven Wastes of Software Development. " In episode one, we introduced the concept of eliminating waste from our software development efforts. Waste elimination can be traced all the way back to the the mid-1900's, the birth of lean manufacturing, and the Toyota Production System (TPS). This is how Taiichi Ohno, the father of the TPS, described its essence: All we are doing is looking at the time line, from the moment the customer gives us an order to the point when we collect the cash. And we are reducing the time line by reducing the non-value adding wastes. [1] In this episode, I'd like to focus on "Task Switching. " Of all of the wastes confronting us as software developers, this one is perhaps the deadliest.
Read the other parts in this series: The cost of task switching in software development has been a recognized problem for many years. DeMarco and Lister were two of the first to describe flow - the holy grail of coding. References. Are You a Casualty of This Biggest Software Development Disaster? When IT projects fail, software design or software process issues like requirements management are usually the first to come up on post-implementation reviews. What almost always overlooked is the human aspect that software developers are bringing into the picture and that alone can turn around virtually any project in no time at all.
"The greatest forces of the Universe don't come down on us like a hurricane but act subtly, quietly changing our lives one day at a time" I few days ago I bumped into the Chaos Report from Standish Group. When I finished reading it I had mixed feelings - there was no surprise to get an official confirmation of my long time experience - "application software development projects are truly in troubled waters". Report states yet again that 4 out of 5 IT project fail. I thought of thousands top notch developers and architects who secretly hate being in IT even though they passionate about technology. Perfection in the IT – or “less is more” Just a thought … A few days I read the following citation: “Perfection is reached not when there is no longer anything to add, but when there is no longer anything to take away.”
(A. Saint-Exupéry) I thought about it for a while and from my perspective there is a lot of truth and wisdom in this short sentence. One should think that confronted with more and more complexity we should strive for that kind of perfection by getting rid of anything that we do not absolutely need to accomplish our goal. I could probably go on for hours, but I think you got the point, and I am sure that you could instantaneously add some more examples. By trying to deal with the limits of our brains or sometimes just because of our laziness or our fear of decisions we pick the worst alternative very often: We add complexity instead of removing it.
When I look at this trend within the IT that everything becomes more and more complex I think it is urgently about time to change course. “Less is more!” Here's the Secret Behind Almost Every Application Software Development Disaster !!!! Believe it or not - it's so simple - everyone in software development should instantly recognize it. By the time you finish reading this article - you will be asking yourself - "if the reason is so simple, how come 4 out of 5 IT projects still fail? " Read on... Consider this. Let's pretend that you were tasked with building your company a new office. You call your pre-approved builder and send them a list of what the new building should look like. Would you expect a beautiful building to come out of this project? Doesn't it remind you off the way most IT projects are handled? "What about software process, iterative development and agile methodologies" you might ask? Does it mean that most software developers don't know what they doing?
Not at all! What makes agile development so successful at producing quality software? Management skills! If you don't know how to play piano and hate it - can you train yourself to become a decent pianist? So is it hopeless? Absolutely not! Scale-out vs Scale-up. In my previous post Concurrency 101 I touched on some of the key terms that often comes up when dealing with multi-core concurrency. In this post I'll cover the difference between multi-core concurrency that is often referred to as Scale-Up and distributed computing that is often referred to as Scale-Out model.
The Difference Between Scale-Up and Scale-Out One of the common ways to best utilize multi-core architecture in a context of a single application is through concurrent programming. Concurrent programming on multi-core machines (scale-up) is often done through multi-threading and in-process message passing also known as the Actor model.Distributed programming does something similar by distributing jobs across machines over the network. Conceptually, the two models are almost identical as in both cases we break a sequential piece of logic into smaller pieces that can be executed in parallel.
Choosing Between Scale-Up and Scale-Out 1. 2. 3. 4. Designing for Seamless Scale-Up/Scale-Out. Pros & Cons of Outsourcing. You Need a Static Organizational Model. Okay... I want to make an assertion here. In order for agile to work, you've got to understand the static organizational model for your company. Why? If you are organizing around things that are transient, like projects, you are doomed to fail. Most organizations are organized around one static model, the resource team. Agile asks us to organize around the parts of the business that deliver value, and in common practice, that is usually the product.
That works awesome in small product driven organizations. Uneven investment in products over time is what drives our obsession with project work. I'll admit, you could create multi-disciplinary teams and run your project work through these static teams. So... back to our static organizational model. In our complex product example, the delivery capabilities might be the various products delivered by the organization. Before you begin your agile transformation, you need to think about your organizational structure. The Start-up from Hell. The start-up from hell. True story. That ‘true story’ is mandatory here, some of the stuff that you are about to read will sound so outrageous that you might think that this is a work of fiction. That, sadly, is not the case. To protect the guilty I’ve changed some of the names, they arguably do not warrant such protection but I don’t feel like fending off lawsuits.
This story starts somewhere in 1987, I’d been working for an architectural company in the city of Delft on a cad program to design structural components and after the contract ended I was looking for a new gig. The appeal to the tinkerer in me was strong, after all, this project involved moving bits, low level software and other hands on things that I felt were interesting.
Fred would handle the sales and the machining as well as the packaging, I would do the software and the electronics design. We talked over the features that the program was going to have to have. There were several draw-backs to this decision: Waste #2: Extra Features.
Artistas - unAplauso.com.