text: Like | by Chris Sims Chris Sims Follow 0 Followers on Mar 30, 2009. Estimated reading time: 2 minutes |
  In My Framework is More Productive than Your Framework, Ken DeLong examines approaches to making software projects more productive. He finds that despite the hype about frameworks, languages, and project management tools, these tend not to be the bottlenecks. Ken believes that the largest productivity gains are likely to come from improved communication, code readability and debugability.
  From the Theory of Constraints, we know that the only way to substantially increase productivity is to attack the bottlenecks. Gains made in other areas will still be dominated and subsumed by the bottleneck constraint.
  Ken notes that frameworks often tout how easy it is to get a project set up and ready for real development. Certainly this is useful, but over the life of a project, the setup time is not likely to be significant.
  Another area of optimization that is likely to have only minor impact on productivity is reducing the time it takes to write code. While certain languages, frameworks or programming techniques can significantly reduce the amount of code that must be written, this is not likely to translate into big productivity gains for the project.
  This is where I get really suspicious of "expressive" programming languages. There are many ways to be "expressive" - which typically means cramming large amounts of functionality on a single line. Those who have struggled with reading "expressive" Perl or C might care to comment about how wonderful it is to have the whole program on a single line of code. I would assert that readability of code is orders of magnitude more important that writeability.
  A recent poster on Stack Overflow appeared to want to improve productivity by hiring coders who could type fast. Respondents indicated that typing speed was an irrelevant metric for judging the productivity of developers, and warned against using a typing test as part of the interviewing process. In Pair Programming Misconceptions, Martin Fowler points out that pair programming increases productivity, not reduces it, in part because typing is not the hardest part of programming.
  After pointing out things that are not likely to be the bottleneck constraint for developers, Ken goes on to discuss several areas that are more likely to be, including: communication with business stakeholders, understanding preexisting code, and debugging.
  Ken says: "Trying to hammer out requirements, understanding the true business goal, and finding compromises that are technically feasible, surely takes the most of my time." In his case, it is likely that the greatest productivity gains would come from embracing the aspects of agile development that improve communication between developers and the business. For example, colocating with a product owner or on-site customer would allow frequent collaboration and promote understanding of the business goals and requirements. Similarly, replacing heavyweight written requirement specifications with: user stories, conversations, and acceptance tests (sometimes called executable requirements), would reduce ambiguity and misunderstanding of requirements.
  He writes that project setup time is not really important, because he only spent 3 hours setting up a new project. I agree. But still, why does that take 2 minutes with Rails? Yes, it doesn't save a lot of time, but why wait if you don't have to? If setting up a project takes that long that's a good indication that your tools are too complex.
  Coding time. This is actually very important. I agree that coding itself doesn't take that much time, but you can trade coding for communication. If you can implement a feature fast enough you can do it live in a meeting (I do this with my clients). This means that you have to discuss it less because you can check immediately if this is what the client wants. Last time I implemented two prototypes in Django after the first meeting. This also saves a lot of communication time because in the next meeting the client can say "this is what I want, and not that" and point at the screen. If they have to describe exactly what they want that will take a lot longer, and I certainly don't get what they mean the first try (often THEY don't even know what they want).
  Short code is not only easier to write, but also easier to read. This is obvious. Java code may be easier to read per line. I'd rather read Ruby code because it will be fewer lines with less irrelevant stuff.
  Cripes, I can't even remember in Java whether its Object.equal() or Object.equals() because I haven't typed the whole method even once since I installed Eclipse about 9 years ago.
  Struts was a big step up from bare servlets, and Spring MVC is another order of magnitude. Spring+Hibernate must be 100 times more productive than bare servlets and JDBC ... I can easily imagine Comet giving you a 10-100 X productivity boost over the bare technologies. Is there another framework better than Comet? No idea. Would it give another factor of 10? I strongly doubt it.
  I doubt the high factors (100x) and I don't think that another framework can give a factor of 10 soon. If we scale down the factors a bit, yeah I think 2x over Rails is possible.
  This one is a good point, it really amazes me how some Ruby guys claim they are 10 times more productive based on project setup time comparisons.
  Trying to hammer out requirements, understanding the true business goal, and finding compromises that are technically feasible, surely takes the most of my time.
  Yes, that is true. But when you get those requirements, find compromises, etc., how do you fit that stuff into your brain? A structure of some sort? Some object structure with responsibilities of particular objects (object-oriented approach) or what the system should do in response to some user action (more like the functional one)? User stories? Сard of accounts? These are all languages of some sort. The more of the languages you understand the easier you fit stuff into your brain. I find that some of the hype around the languages is about realizing that a class diagram is not everything and there are other ways to describe what's happening. Another part of the hype is about what's mentioned in the first paragraph - code readability and debugability. And some of the hype is, well, just hype.
  I don't think you are addressing the point. If indeed the bottleneck is not in programming, it is a waste of time and irrelevant talking about languages and frameworks.
  The real question is, where is your organization's bottleneck? If it is in programming, then everything you say makes sense. If it is not, then no matter how fast you program, product will NOT come out faster.
  1) Why use an inferior language if you have a choice? Even if it doesn't matter much, I'll save a few hours if I have the choice.
  Let me clarify this: "Even if it doesn't matter much, I'll save a few hours if I have the choice.". I mean even if it doesn't make the project come out faster because you're waiting for other things. Then you can play minesweeper or something in the extra free time.
  Like | by Abel Avram Abel Avram Follow 12 Followers on Aug 10, 2016. Estimated reading time: 1 minute |
  According to the latest Developer Nation Q3 2016 survey from VisionMobile, Android’s lead over iOS as primary platform and developer mindshare has been consolidated. Also, Windows developers prefer C# in the cloud while Linux ones stay with Java.
  For many years iOS topped the preference of developers when it came to platform priority. When a company started to create a new application, iOS was the first to target, and if the app proved successful they would attempt the same with Android. But now, Android has caught up with iOS in developers’ preference in North America and Western Europe and has an important lead in the rest of the world, especially in Asia, according to VisionMobile. The following table shows the actual numbers. They are even higher for Android compared to iOS for hobby and side-projects (not shown here).
  When it comes to developer mindshare, Android now has a record 79% while iOS is at 61%. The Mobile Browser used to enjoy great mindshare among developers, 56% back in 2011, but it fell to 7% in 2014. Now it has rebound some at 30%.
  The following chart depicts developers’ preference for a server-side language by primary desktop platform (click on picture to enlarge):
  We see that C# leads as a desirable server-side language when Windows is the platform of choice for the desktop, followed by PHP and Java. For Linux developers, Java is the main language for the cloud, followed by C/C++ and Python, while Mac developers prefer PHP, then Java. In spite of Microsoft’s efforts to make C# the main language for the cloud, open sourcing many technologies and taking .NET cross platform, the report notices that only 2%/3% of Linux/MacOS developers want to use it.
  For more details on the findings of this survey, including developers’ interest in IoT, we recommend reading the entire report. The results of this survey are based on the responses of over 16,500 developers from 145 countries around the world.