Logo                 Yusufarslan.net Yusufarslan.net

rss

Choosing a control panel for server management
Link: view
Body:

My control panel usage scenario

The most common operations that I currently (with Plesk) perform is:

  1. Create a virtual host for a (sub) domain name (with a limit for hard disk and traffic usage for safety)
  2. Duplicate or create a MySQL database and a database user - Import a SQL file
  3. Create a FTP account
  4. Make automated website backups
  5. Manage PHP settings like memory_limit or upload_max_filesize
  6. Occasionally take a look at statistics like traffic usage by domain or server hard disk usage

Ajenti

Ajenti_1.png

Ajenti_2.png

Installing Ajenti

It's really straightforward to install the Debian package. There was no problem during installation. Within 10 minutes I had it up and running. The only thing that I didn't like is that there is a default user and password (root:admin) that needs to be quickly changed after the installation. I would prefer that it's prompted during the installation.

Functionality of Ajenti

System management functionalities are very comprehensive. A lot of server utilities such as cron, firewall or users  can be managed via the interface. There are also integrated tools such as a file manager and a terminal emulator. Especially the last one seems to me unnecessary.

The key functionalities that I need for my usage scenario is a separate Ajenti plugin that really disappointed me. The plugin is currently in closed beta so I couldn't quickly try it out. Therefore Ajenti was actually immediately eliminated.

User experience of Ajenti

The user interface is nice and easy to use. But on the other hand, my impression caused by the screenshots was that it was more polished. There were minor cosmetic imperfections such as misaligned buttons and it was not possible to remove a widget from the dashboard. Automatic refresh is very annoying because it causes repeatedly loading of the dashboard.

The fact that almost every click makes the screen reload takes away the feeling that things can be executed quickly. (Miller's 100 ms threshold -  100ms delay after each click is perceivable and decreases the productivity.) It's, of course, explainable that complex activities take time to execute, but there are a lot of interactions like opening a row, that shouldn't trigger a loading screen.

There were also sporadic issues such as a hanging interface or after clicking a button to install a plugin, the whole application become unresponsive. This did not provide much confidence to run the control panel someday on a mission critical system.

Performance of Ajenti

The control panel interface is a heavy client-side JavaScript app. It needs to load resources.js file which is 4,5 MB. This makes that the building of the first screen takes even at a very fast internet connection a long time. The configuration on the server-side needs more attention and should actually be tested separately.

Froxlor

Froxlor_1.png

Froxlor_2.png

Installing Froxlor

There is also for Froxlor a Debian installation package which takes care of all the dependencies. The command line installation wizard is really great. It presents a number of questions. There are installation profiles (Webserver, Nameserver, FTP-server, Mail Delivery Agent or Mail Transport Agent) for the scenario that you want to use the server for and before you know it's ready for use. The installation has to be further configured with the web interface. All in all, the installation is smooth and without difficulties.

Functionality of Froxlor

What immediately stands out is subtle difference in focus as compared to Ajenti. Froxlor is aimed more at web hosting management and less on system management. Functionality to create domains is cumbersome: it didn't create the documentroot directory. I couldn't find the cronjob that is supposed to do this. Perhaps it's a small bug or an incorrect setting, but I expected that one of the main functionalities should really work straight out of the box. Functionality to create a databases and a FTP account is decent.

There is a cronjob to create a system backup. But I didn't see it on domain or customer level. It's not possible to edit PHP settings but PHP info can be viewed in the panel (with a small iframe horizontal width problem). There is no way to view the CPU load history or system RAM usage. What I also miss is the integration of a database admin tool like phpMyAdmin.

The Wikipedia page mentions that Froxlor is a fork of SysCP and thereby raises the expectation that there would have enough functionality to accomplish primary tasks. But Froxlor lacks really basic things like restarting a service (for example Apache). It comes very quickly to simultaneously having to login to the shell which makes it a bit pointless to use a control panel.

User experience of Froxlor

The interface is lightweight and snappy. I especially liked the styling for the forms. It's easy to tab through the fields and save the input.

What also appeals me is that Froxlor doesn't entirely take over the control of the server. Almost everything is (like which user name the webserver uses) configurable and the default settings seems to be close to the default settings of the distro.

Performance of Froxlor

The control panel and the default running services are really light weight and seems like they aren't creating any load at all. Everything is very responsive and works as expected. The interface uses conventional HTML pages and jQuery with only a footprint around 150 KB.

Vesta

Vesta_1.png

Vesta_2.png

Installing Vesta

There is a Bash script that can be executed which first checks which OS the server runs and after that, it runs a Bash script to install the needed packages and configures the server. Installer categorizes servers into groups depending on the available RAM. The installer prompts for an e-mail address and informs that the installation will take about 15 minutes. It does install a lot of packages like Roundcube and SpamAssassin that I don't need. (Selecting a setup profile like Floxor would be preferable.)

Functionality of Vesta

It seems like Vesta is exactly focused on my usage scenario. I can easily create a domain with the possibility to choose a plan to set the quotas. I can create a database and phpMyAdmin is integrated. It's possible to create a user with a separate FTP account. Backups are provided and are great with even a restore option.

It's not possible to edit PHP config but that is non-essential. DNS and mail disabling would be also a nice to have.

RRDtool is integrated with great graphs for load average, memory, bandwidth, Apache, Nginx, MySQL, FTP and SSH usage. This is almost like a dream coming true. Another cool things is that Nginx is configured as a proxy and you can check on or off. It's also possible to create and edit templates for services like Apache and Nginx to further configure to the needs.

User experience of Vesta

The user interface is really simple and great. Page transitions are blazing fast. The information architecture is also great. Everything is intuitively placed. All the needed information can be viewed immediately. One minor improvement would be to link the Vesta logo to the main dashboard.

Performance of Vesta

The control panel is on the client-side lightweight with a page footprint around 120KB. Server-side needs to be further evaluated, but I expect that it can handle also high stress situations and that it's configured properly. But these are only assumptions after a brief glimpse.

Overview of the control panels

  Froxlor Ajenti Vesta
License GPLv2 LGPLv3 - Commercial GPLv3
Contributors 27 24 12
Language PHP Python PHP
Files size 6,5 MB 3,7 MB 2,8 MB
First commit date January 17th 2010 February 28th 2010 June 12th 2011
Lead Developer Michael Kaufmann Eugene Pankov Serghey Rodin 
Github URL Froxlor Repository Ajenti Repository Vesta Repository
Website http://www.froxlor.org http://ajenti.org http://vestacp.com

Conclusion

I'm still not entirely convinced for the choice. Of these three control panels, Vesta clearly is the most appropriate for my needs. But the relatively small development capacity without a large community worries me. The documentation is not very extensive. Some issues are on the forum discussed in Russian. I do not know to what extent it already runs on production servers and how often security updates are released. Maybe it's just as easy to prepare a few Bash scripts for what I need. I have to think again about it.

I certainly see all the blood, sweat, and tears that people have put to develop these applications. And I want definitely that one of them will be the Next-gen control panel beating Plesk and cPanel and replacing Webmin/Virtualmin. But maybe they need to join the forces, especially since they have the same goal in mind.

Author uid: 53
Post date: Tuesday, February 4, 2014 - 14:20
The road to hell is paved with Agile intentions
Link: view
Body:

What is Agility?

In a broader organizational context, being Agile is the extent and the speed to which an organization is able to interact. In an ideal situation, the optimal corrective action would be calculated in real time. The set point would be instantly derived from the vision, strategy and goals of the organization.

The model below makes it comprehensible that there are a lot of factors to take in account when changing an organization. It also shows how internal and external behavior influence each other.

organizational_behavior.png

The reality is also that many unpredictable, illogical and irrational human decisions influence the system. Emotional or counterproductive behavior can not be neglected but is also very difficult to take in account.

How Scrum can go wrong

Most of the popular online discussions about implementing Scrum lack a holistic understanding. The questions are usually limited by how a small group of people within the organization can be more Agile. Very quickly, such a transformation ends unsuccessfully leaving frustrated programmers behind.

Frequently, the present state of the organization is not very well understood. Unjustified conclusions are often the result of rushed and superficial analysis. Ultimately, the outcome is a costly battle about the terminology and rituals to be used for the same way of working and result.

Examples

The first part of this story may seem rather abstract. For that, I will try to illustrate it with some (fictional) practical situations:

  • Example 1: Web agency with 15 employees

    This company faces the problem that customers often complain about a lack of clarity about the process and insufficient quality of the produced websites. After many internal discussions some developers suggest that Scrum might be a solution. They quickly follow a Scrum training and declare Scrum as their new way of working.

    But serious problems arise right away. The clients of the web agency demand clear guarantees about the product to deliver. They also feel very uncomfortable with the fact that they have to be so involved. The clients avoid taking any responsibility and refuse to appoint somebody for the role of Product Owner. The Scrum team assigns someone within the team as a substitute.

    The sales team has a strong benefit to get new clients by promising everything that they want to hear. The new work approach makes it even easier. The already problematic scope creep becomes a bigger problem which results in more bugs and functionality not meeting expectations.

    The owner of the web agency had understood that Scrum would make everything much more profitable. But the lack of signed documents resulted in clients who do not want to pay without that certain work is performed first.

    There are also a lot of internal problems. Some employees are very demotivated because they can not work alone anymore. The whole well-intentioned attempt is getting out of control and causes a lot of of trouble.

    Analysis

    The internal structure and regulations are drastically changed. But vision, strategy and goals are not adapted to the new situation. They are actually under stress and paralyzed by unknown implications.

    No account has been taken with heavy financial consequences. For sales, the incentive model does not fit the new way of working: they have to choose between being honest or having personal gain.

    The environment sees the services as a commodity product and doesn't accept to invest in it like a research project. The market is full of similar providers with readymade products for a fixed price. Internal procurement rules prohibit to take such risks.

    Assessment

    Trying to solve a problem of no clear work process by choosing Scrum is troublesome because Scrum is not a process. The focus of it is much more on innovation. It often solves the problem of heavy bureaucratized organizations where there is no freedom to try new things. This web agency had a problem with standardization of their product and process. While Agile practices could be helpful, a much more thorough transition was needed to succeed.

    The quality problems could have various causes such as not the right skills of the developers. Limiting and clarifying of the scope of the project has much more to do with sales training and positioning of the company than the internal structure. 

  • Example 2: IT department of a large corporation

    The department has understaffing and the requests are piling up. The waiting times are very high and there are many complaints. Technology has changed a lot in recent years, but knowledge gathering and education of the employees stood still because of the high workload.

    The products do not meet the expectations of the internal organization and therefore people often use 3rd party products and even products of competitors.

    The motivation of the developers is very low because salaries have not increased in proportion to the salaries of the sales department.

    External consultants are brought in to analyze the situation and recommend a solution. After some interviews and exploring the work flows, they come up with a report that describes a mix of Kanban and Scrum to implement.

    But after the first two months, the complaints have only increased and waiting times have become longer. The board has a incidental function: it is perfect to show that they can do one thing at a time. The new definition of Done justifies when more time is spent on a task. Agreed release schedule according to 2 weeks sprints ensures that there are no ad hoc releases and therefore lot of customers walk away.

    Analysis

    The new work approach does not change anything concerning the motivation of the individual developers. They are even more demotivated because the Kanban board shows the impossible amount of work that the team needs to accomplish with insufficient capacity.

    Human resource management plays a key role, but the plans didn't involve attracting new employees and increasing the capacity.

    Technology progress is ignored. Dumping of legacy software would be a huge time saver.

    Assessment

    Choosing a more Agile approach for the development team is misplaced. A proper portfolio analysis would bring faster results. By eliminating maintaining low profitable software, capacity would be released for higher priority work.

    An education plan and acquiring new people for missing knowledge areas would be a quick fix.

Searching for a Magical Process®

There is not an universal formula or a Magical Process®. Every situation has other contingency factors. Dynamic and complex relations in an organization should be taken into account. Having good intentions and following the latest trend is not necessarily a formula for success.

Author uid: 53
Post date: Sunday, December 15, 2013 - 11:00
Project management constraints: counter-intuitive but true issue
Link: view
Body:

The “good, fast, cheap” premise doesn’t create a very useful correlative conjunction: fast and cheap are in software development nearly synonyms for each other.  I can’t think of a lot of scenarios where it is possible to create good and cheap software while it is not delivered fast.

A scenario for the logical fallacy

I understand the schedule versus the spent time difference, but it is generally agreed that adding more people to a project doesn’t make it faster to develop.

The assumed scenario is as follows: we have system x, that can be developed by either 1 developer in 4 months or by 2 developers in 2 months. While this seems intuitive if it is considered purely from a Gantt chart perspective, reality has repeatedly shown that the development of the system by 2 developers can result in more time required and the total duration can be 5 months. (More time needed for communication [agreeing on the “right” framework], overhead of reading the same code by two people, inefficiencies by merging the code, interpretation of the requirements etc.)

The correlation between the amount of developers, the development time and the duration doesn’t necessarily exist and isn’t universally accepted.

Improved diagram

An alternative and maybe a more useful Venn diagram would be in my opinion:

Extensiveness of the software is an important factor for software projects. It includes the complexity of the requirements which is often appointed as one of the major critical success factors. Besides it is a key indicator for predicting the impact of requirement changes. It corresponds with the “scope” constraint from the classic management triangle.

Logical statements of my diagram

A system can be developed “extensive and fast”. This will automatically reduce the quality of the system. Because we stated that fast is a synonym for cheap, it also means that it will be inexpensive.

If the chosen bias is “good and extensive”, this will result that the effort and the duration will increase and makes it expensive.

If the system needs to be “good and fast” then it will lead to a system with less features but it will also be low cost.

Usefulness of diagrams

It may seem that showing a diagram makes life easy. Actually, in business meetings “now you have two problems”: you need to help the client to choose the right two constraints besides that you need to convince him that good, fast and extensive can’t be combined all together. So be careful.

Links

Critical success factors for software projects: A comparative study - http://www.academicjournals.org/sre/pdf/pdf2011/18May/Nasir%20and%20Sahi...

A survey study of critical success factors in agile software projects -
http://www.ccunix.ccu.edu.tw/~kcchen/PM/Presentations/2012.05.25/Team4.pdf

An instrument for measuring the key factors of success in software process improvement -
http://faculty.ksu.edu.sa/ghazy/Documents/Emp%20SWE%2000/An%20Instrument...

Defining software process model constraints with rules using owl and swrl - http://www.cc.uah.es/drg/jif/RodriguezEtAl_IJSEKE10ExtendedDraft.pdf

Author uid: 53
Post date: Thursday, May 9, 2013 - 09:00
Is Agile and Scrum really better than Waterfall?
Link: view
Body:

All creators and supporters of development methods, claim that their method does deliver better software, with less effort and faster then other approaches. While such an idea is nice and calming, part of your brains want proof and why it is so. Software development process is not a religion and therefore there is no place for faith fanatics. (Although I must admit that most online discussions on the topic suggests otherwise.)

The popularity (or notoriety) of Agile methods are growing and a quick Google Trends query suggests that it's not on its peak.

However, there is one major dilemma. As much of a fan of empirical data with rigorous statistical validity, it is maybe impossible to scientifically prove that one methodology is any better or worse than any other. Software engineering doesn't have (yet) uniform scientific data to compare and back up touted methodologies such as Scrum or Agile. Projects depend on domain, knowledge and skills of the people involved, process methodology, the choices made at various phases of the project from the technology to use to the system architecture and design: It becomes very difficult to look at projects and generalize information in such a way that it is both scientifically valid and useful across the majority of projects.

Besides, the "No true Scotsman" fallacy is overused and is very easy to apply on this subject. It's comparing apples to oranges where everyone can easily say: that is not a real apple and this not an orange neither!

A sufficient definition of the development methods are needed to be able to compare and say something meaningful about them.

This is completely sad when we consider the whole Waterfall method is a straw man issue and that Royce didn't described or intended to follow such a method in his paper.

In general, maybe we can say that it's pretty much impossible to draw any meaningful real-world scientific conclusions because every (non-trivial) software project is unique and software development is, by its very nature, non-deterministic. But this is a fundamental and an even greater statement than we started and is crying for a foundation.

But there are definitely attempts to compare efficiency and effectiveness of software development methods. The book "Making Software: What Really Works, and Why We Believe It" does include some chapters treating the subject. But (regrettably) there is not a sentence stating that Agile methods make a significant difference. There are plenty of anecdotes that suggest that using a specific method in a specific situation has led to great success. But these kind of subjective validation is dangerous and does not in itself prove a causal link.

There are also serious allegations that promoting software development methods is just one big money-making exercise for a group of consultants. Certification has created a small army of consultants and trainers who are constantly busy training and coaching a bigger army of certified Scrum practitioners.

At the other hand, there is nothing wrong with getting some help. Even it is not a thoroughly scientific method, some anecdotal best practices can point in the right direction and can be a push in the back even it is all a bunch of common sense.

Emphasizing the practices of minimizing unnecessary overheads (excessive planning and documentation) while concentrating on incremental delivery of client-specified functions can't be too wrong.

If it is difficult to plan ahead, adopting mechanisms for “empirical process control” that focus on feedback loops sounds alright too. Blind and unthinking practitioners or commercial interests do not alter this conclusion.

In the end, "you get what you measure". Agile is popular, sounds cool, you can't get blamed, it gives some best practices, emphasis on motivation and responsibility. But we must also be honest and acknowledge that it is not based on real evidence that it is better and that agile is maybe a too hollow / empty concept. When there is a great product owner, then Scrum for example can be certainly faster than a waterfall approach with a bad specification document. But a bad product owner can be certainly slower than waterfall with a great specification.

In Rapid Development: Taming Wild Software Schedules, Steve McConnell identifies a number of factors to consider when choosing a lifecycle methodology:
⁃ level of understanding of the requirements
⁃ level of understanding of the architecture
⁃ desired reliability, risk management
⁃ schedule constraints
⁃ amount of process overhead
⁃ mid-project "course corrections"
⁃ ability to provide the customer with visibility
⁃ ability to provide management with visibility
⁃ sophistication of the development team and management

Maybe Agile is just a fad of IT that happens and there will be a new one that gets people excited. Just trying to improve the efficiency of software development is what we all want. Doesn't really matter how it is labeled. I will therefore end this nuanced as a research paper: I hope that this blog post will alert empirical researchers to the possibility that their studies will contribute to the understanding of software development processes.

Links

  • Making Software: What Really Works, and Why We Believe It - http://www.amazon.com/Making-Software-Really-Works-Believe/dp/0596808321
  • The Best-Kept Management Secret On The Planet: Agile - http://www.forbes.com/sites/stevedenning/2012/04/09/the-best-kept-manage...
  • Scientific evaluation of programming methodologies - http://programmers.stackexchange.com/questions/131578/scientific-evaluat...
  • Should there be more scientific study of the effectiveness of various hyped-up ideas in software development? - http://programmers.stackexchange.com/questions/140173/should-there-be-mo...
  • Are there any studies on the Efficiency/Effectiveness of Agile vs Waterfall - http://programmers.stackexchange.com/questions/125429/are-there-any-stud...
  • Why I'm done with Scrum - http://news.ycombinator.com/item?id=4510943
  • Managing the development of large software systems Dr. Winston W. Royce - http://www.cs.umd.edu/class/spring2003/cmsc838p/Process/waterfall.pdf
  • Why Scrum Won - http://java.dzone.com/articles/why-scrum-won
  • Agile: Where's the evidence? - http://allankelly.blogspot.nl/2012/03/agile-where-evidence.html
  • Agility in the avionics software world - http://www.agile-itea.org/public/papers/agileavionics.pdf
Author uid: 53
Post date: Thursday, March 21, 2013 - 18:00
Agile project organization
Link: view
Body:

Dedicated people

This is an important reason why projects fail. Usually there are people involved in the project that may have really valuable skills and knowledge but no time to contribute. It causes that other team members (with less skills), get a wait-and-see attitude. It also allows that there arises a hierarchy in the team of higher and lower skilled team members which then causes that the lower skilled members feel no confidence and mandate to take decisions while the higher skilled members (without time) wait until the product is developed so that they can evaluate it. It finally ends with the question why there hasn't made any progress after so much time has elapsed.

As few people as possible

The formula to calculate the number of communication channels on a project is simple: n*(n-1)/2. "n" is the number of team members. So if the project organization consists of 4 people, the number of communication channels is 4*(4-1)/2= 6. But if there are 9 people involved, the number of communication channels is 9*(9-1)/2= 36. That is 6 times more communication channels to keep up to date. The threshold to get away with a simple communication plan and tools such as phone and e-mail is then passed. Team members need instructions for the tools they need to use and clear explanation of how to communicate with each other.

The demarcations for responsibilities are also troublesome with more people involved. The dividing line to determine who is responsible for specific areas of the project needs to be specified. Otherwise duplication of work effort will occur or parts of the project will be untouched because nobody was responsible for it.

Really contribute to the project

It depends on the environment and the project what "real contribution" is. But only talking or giving some instructions is not considered as "real contribution". Vague things as strategic advice, architectural input, conceptual framework can also not be considered as "real contribution". Writing considerably big amounts of code, creating user interfaces in Photoshop and HTML/CSS, setting up the server infrastructure are examples of "real contribution" where people really deliver working software. Getting your hands dirty and taking the risk of creating something really useless or useful can be used as criteria.

Interest that the project will succeed

People get creative if there are interests at stake and cannot passively participate without being affected. There must be a strong incentive for all people involved that the project will be a success. It sounds obvious but there are a lot project with people that could not care less if the project would fail. There are even situations to think that people just benefit if the project fails.

General involvement 

Another topic is where to leave all the other people who necessarily want to interfere with the project. Especially when the project is important, the conventional wisdom states that a lot of people must involve in the project. It is a convenient idea that if the project goes wrong that there can always be someone that can save it. So people are added to the project to supervise and micro manage. These people get all confusing roles and responsibilities that detracts members that otherwise could really get work done.

I think it is not a solution to give these people superficial roles to get them busy. I think that being brutally honest is often the best solution. Make them clear that they really aren't needed to be directly involved in the project but they can always monitor the progress of the project by looking at the burndown chart.

The product owner also needs to elicit their requirements for the project and give an explanation of how and when the requirements will be translated into the product or why the requirement will not be a part of the product. (The product owner really needs mandate to do skip requests.)

Stakeholders can be many including CEO at the client-side company, middle management, senior management of partner contractors, intern account managers, funding companies management. It is the task of the Scrum master and the Product Owner to protect the team from outside interruptions. But it is the responsibility of everyone to understand why the team size must kept small.

Author uid: 53
Post date: Sunday, December 30, 2012 - 09:00
Video Hosting and Video Services
Link: view
Body:

1. Raw Video file storage is not easy

Storing large volumes of video needs careful planning and strategy. You need to keep in mind that scaling form Terabytes to Petabytes and beyond is going to happen. Video file sizes are increasing constantly (couple of years a go, 320 pixel video's with a low bit rate where totally acceptable and now 1080p streaming video is the expected quality) while the need for different file formats (browsers and mobile devices support distinct formats like MP4, WebM etc.) These files need to be redundant and there needs to be a back up plan if some things go wrong.

2.VIdeo quality is subjective

What is better 1080p or 720P video? The essential and often forgotten question is: which bit rate, what are the quantization parameters and other technical stuff such as GOP size or i-Frames? The difference of 720p and 1080p video at same settings is almost impossible to perceive if you watch it on a 50" TV.  Besides these technical difficulties, there is an other factor: The expectations and perception of video quality is rising every day because once the audience watched a certain quality, they refuse to experience less. In short, the term high quality or 1080p video does not say much about both the generated or the perceived quality.

3. Concurrency estimation of streaming video is really hard

Prediction is very difficult, especially about the future said Niels Bohr. This is even more true if it is about video. Forecasting how much people are going to watch your video stream (for example an event) is even in a very broad range is almost impossible. What if 10 people are starting to watch but something happens and they Tweet  about it. Suddenly there are hundreds of people watching it and snowball effect brings thousands of viewers. Reserving extra capacity on its own not a problem but if it tends to infinity, it's not something that you can do for yourself as a hobby without excessive costs.

4. There is a lot of competition in the video hosting vertical

There are around 30 companies that are trying to compete in this niche. Everyone tries to find the right market product fit by aligning, branding, focusing, differentiating on specific aspects. The industry is maturing and this is a really good thing. I also think that this competition is a good thing. It forces to be creative, it stimulates faster pace of innovation. Above all, it proves that there is a large enough market.

5. Video is not suitable for everything

if you have a hammer everything looks like a nail is especially true for video. While it is tempting to use it everywhere, sometimes there are just more appropriate formats for content. There are currently a lot of start ups that are trying to be the Instagram for video. I don't know if this is going to work because looking at photos and liking them is a whole other experience than having to watch video's. It is more time consuming to watch, it has a different usage moment and so on. At the other hand, some content is specifically suitable for video. I think in the coming years, we will see really creative implementations where we previously had not thought of.

6. The difference between a free video hosting like Youtube and a professional video hosting is still unknown

If you are not paying for it, you are the product being sold. This is absolutely not necessarily a bad thing if you consciously choose for it and know the consequences. Sites like Youtube are great (I use them personally every day) and it is even better because they are completely free. But they have a special purpose and terms to use. If you are for example a video producer and you don't want to share the rights (Youtube explicitly states that you retain all of your ownership rights however,  you grant YouTube a very broad license too) and sometimes that can be a problem. Things like arrangements concerning service and quality can also be an issue. There are also a lot of technical limitations that sites like Youtube do not facilitate because they are not intended for it.

 

Author uid: 53
Post date: Thursday, August 16, 2012 - 18:00
3 common misconceptions about web development projects
Link: view
Body:

1. Internet is a controllable push medium

Internet is invented to share information. It is built for putting unstructured data online without restricting the form, purpose and the way of the usage. It is never intended to be used as a mass broadcasting medium where one transmits a message and everybody is obliged to listen.

Because of this design where everybody can freely decide what to present and others are free to take it, the internet is such a great success. A lot of web development projects try to push users to doing things.

The problem is they don't have any users to push and they will also not get any users behaving with misplaced arrogance like that. 

Luckily the formula is really simple: just put stuff online that people need or find interesting. That is actually the way you use the internet yourself. There is really no way of forcing or manipulating.

2. Adaptiveness is the issue

Separate devices, systems, platforms, browsers, applications etc. exist for a reason: they are for separate things. It is a lot of times not smart to try to generalise and unify them for one purpose.

Just like shoes: there are sport shoes, work shoes, dance shoes, mens or womens shoes. Nobody tries to create a general shoe for every person and use case. Technically maybe it is possible, but it is not the way people use shoes. It is not really different with computers.

If you need a website for a certain use case on the desktop, it can not automatically converted to a certain mobile device. The screen sizes are different, the input devices are different, the expectations are different. Therefore most of the time it is wiser to just develop these entirely separately.

3. CTRL+C: Copy; CTRL+V: Paste; is easy

A lot of things on the internet is free and open source. You can indeed see with the press of a button the source code of a website. Things like that are not a secret. But it doesn’t mean you can duplicate your favorite application and run away with the money.

The real complexity of these applications are actually not the code. But the know-how to write, maintain and expand the code. Without these abilities the code base or the original idea is nothing more than the manual of a F-16 without fuel.

Copy behavior often leads to cargo cult: Only the external appearance is imitated like the graphical design and the amount of Tweets. While copying the essential things like the amount of hard working people and years of effort are forgotten in ignorance.

Conclusion

In my experience a lot of unrealistic project expectations are caused by this type of misunderstandings. The gap becomes larger because it is seems more and more self-evident that this sort of things are known to everyone.

Author uid: 53
Post date: Sunday, April 8, 2012 - 09:00
Spray & pray product development a.k.a. “the pizza syndrome”
Link: view
Body:

The paradoxical psychological phenomenon is that when the price is a factor, suddenly people will think different about this issue. If you have a coupon in your hand with something like "Build Your Own Pizza: Any pizza, any size, any toppings for fixed €10". Then there is an urge to get the maximum out of it in stead of ordering a really good pizza. This also applies to the quantity: according to some research, individual taste ratings of pizza tended to be inversely related to how much is consumed.

Same thing happens with web development. The problems with ordering a pizza will be limited because most people have experience with eating a pizza and are able to conceptualize the consequences. Most clients don't have a lot of experience with web development and are unable to foresee the effects of their choices and will insist to add as much features as possible. At the same time, they will have a nice feeling during the development because they negotiated the maximum out of it.

Maximizing the amount of features of an application is the same thing as adding as much toppings to your pizza or sugar to your coffee as possible. It will not make it tastier. A good cook knows the exact balance of ingredients to make something really delicious and he doesn't do that by adding as much as possible of each.

Spray & pray

Finding a unique market and product combination is the next level of the challenge. Developing only a excellent product is not enough. There must be a perfect match between the product and the demand for it. Sometimes it is possible to detect an unfulfilled need and design a product to accommodate the necessity. It can also be possible to launch a product and it generates a need.

There is not a universal formula to generate an ingenious product idea. It can be luck, precise analysis or serendipity to come up with it.

Finding the right product/market combination can be compared to finding that annoying mosquito in the middle of the night. If you have really little amount of insecticide spray, the chances that you will kill it will be reduced by the number of rooms that you spray in your house. Following the sound and smacking it on his head is much more effective and has the least amount of disadvantages.

Doing random things without any boundaries is the least probable method to be successful. As a client of a web development project adding as much as possible random features is a sure way to get a unsuccessful product. Each choice is a trade off. By adding 2 features instead of 1, you didn't negotiated 1 extra feature for free. You actually negotiated that 1 feature will get half as good as it might be possible. By diluting each feature, you need to pray more that you did the right trade off. By focusing to a tight scope, it is much easier to adjust and transform your product to find the right combination because there are less variables.

More to read

If you don't believe me or want a more scientific explanation from a computer science perspective, you can read Donald Knuth about "If you optimize everything, you will always be unhappy." From management point of view what I actually tried to explain is lean manufacturing in a funny an accessible way. You can also watch really cool video's about lean manufacturing. It is also useful to read the philosophy of Deming to understand where it all comes from.

Author uid: 53
Post date: Saturday, March 5, 2011 - 09:00
3 Scrum Types
Link: view
Body:

These differences in explanation, understanding and execution results in various "types" of Scrum. While this is already recognized, I must say that most of these observations tend to be negatively treated. Any deviation off the perfect implementation is quickly labeled as Cowboy Agile, Agilefall, Waterfall or Scrum But. Such an approach leaves little room for openly admitting and recognizing problems without being alienated. The acknowledgement that there are types of Scrum also doesn't mean that Scrum should be separated and promoted in branches and they should be taught separately. It only means that in practice there are discrepancies.

The three basic types of Scrum

The types are not in sequential order. A company can execute "Pure Scrum" and due to changes such as demand or product, a team can consciously or unconsciously decide to do "Social Scrum". The types of Scrum can be compared to the Nokia test. But there is definitely a difference. The Nokia test tries to clarify how "Pure Scrum" is implemented. The score of 1 doesn't define "Social Scrum". The recognition of the type of Scrum implementation can therefore be used besides the Nokia Test.

1) Social Scrum

Often the superficial practices such as the daily stand-ups are done. There is a Scrum Board with colored post-its but these are not negotiable User Stories. There is not really a Product Owner. The team needs to distill the User Stories out of a requirements document or there is already a design that needs to be build. There is not a definition of done. The team changes the status of their User Stories to done, when they feel it is done. If the Sprint is not completed on time, the Sprint can be extended for couple of days. If after the Sprints things need to be implemented or changed, the team will do the tasks. Scope of the project is determined by predictive methods and the overall vision of the organisation is that the desired optimal state is a "batch production process" and reducing the batch size and changeover times are the primary goals.

Pros: Easy and fun (no conflicts), Better motivation, Potential for more adaption

The team does not bother anyone and doesn't demand a much change for the organisation. The heavy processes of the organisation can continue peacefully. It is fun to do the meetings not sitting and it reduces paper work and meeting time. Some difficult questions can be answered by "because we use Scrum".  Social Scrum can really easy and fast develop/sustain high motivation. Management supports their initiative because they see people are less complaining. It is also cool they can see progress and that everybody is really working and busy. Fostering creativity and innovation is really difficult but it is more then before Scrum. The team sees potential for more adaptation and they can exercise and prepare for more Scrum practices.

Cons: Nobody accountable for team results, Can result in micro management, No performance improvement

After a couple of Sprints, it can be difficult to hold the atmosphere. Some team members can be skeptical because they can't make any choices but are sometimes responsible for the end result. There isn't a working build after every iteration and the product is not according the Requirements Specification Document and thus still needs to be finished.  The needed ad-hoc changes in priorities and incoming requirements can result in a lot of managerial interference. Important decisions need to be taken by people outside the team. There is still a need for a heavy change management but there isn't any because of Scrum. The gained performance improvements are lost by the inefficiencies introduced by Scrum and that can lead to a negative reputation for Scrum. Minimizing confusion/coordination is still a huge problem.

2) Pragmatic Scrum

A lot of the practices of Scrum are implemented except the really difficult ones like determining the Sprint Backlog.  The team commits to the Product Backlog and tries to complete as much as possible. One of the most important characteristics of Pragmatic Scrum is that Authority to manage the work is not by the team because it is really sensitive. Pragmatic Scrum has many similarities with Kanban but should not be confused with it. While Kanban only tries to visualize the flow of workload and reduce work in progress, "Pragmatic Scrum" tries to produce incrementally as a team. Scope of the project is determined by predictive methods and the overall vision of the organisation is that the desired optimal state is a "continuous flow process" and standardization, cutting costs and increasing the output volume are the primary goals.

Pros: Quick productivity improvements, Better communication, Fast start

Because Scrum  ensures that the startup time of the project decreases there is really appreciable productivity improvement. The focus on complete upfront design of the product is not needed anymore and the focus is on faster increments of the product. The defects of the early iterations are still unacceptable but the overall performance is better. The daily stand ups and the retrospectives do really help to improve communication and a good meeting before a Sprint is a proper idea anyway. The design is still done as much as possible before the Sprint but doesn't need to be perfect anymore and can be adjusted within the Sprint.

Cons: No organizational improvements, Can't determine the capacity, After the quick wins it can become worse.

The big impediments are seen as inevitable side issues and can not be changed. This ensures that there can't be made fundamental improvements. There is often still not a clear direction because crucial roles like Product Owner and Scrum Master is not fully understood and implemented. If "Pragmatic Scrum" is bad managed, it will make things worse on the long term because multi tasking will be increased as a result of the faster startup times and unfinished work.

3) Pure Scrum

The team understands the context of Scrum and has the competencies and authority to operate independent. The experts are cross functional and there is a dedicated Product Owner with a viable vision that tests the User Stories and gives appropriate feedback. The Scrum Master removes the needed impediments and there is almost none upper-management interference. Before each Sprint the team debates about the possible impact of the changes and the needed refactoring of the framework and commit for the timebox. The team and the Product Owner consult about the distribution of time to the specific User Stories and the possible scenario's that it will induce. Uncertainties of  the added value of the Sprint is carefully considered and adjusted accordingly. Scope of the project is determined by adaptive methods and the overall vision of the organisation is that the desired optimal state is a "job production process". Innovation and quality are the primary goals.

Pros: Self managing, Innovative, No overhead costs

The team can operate fully independent and is able to assess the possible value creation by implementing a User Story in a specific way. The overall direction of the project is changed if needed without permissions outside the team. Team is able to learn from their choices and can change the organisation to optimize the whole. The experts have enough room to experiment and innovate solutions that have a ROI. Because the team size is small the costs are really low without overhead costs. The financial income and expenditure are easy to calculate.

Cons: Architecture and infrastructure, Need a change of engineering practices, Doesn't provide any guideline on a lot of (hard) questions, time-consuming, Potential for conflict, Costly to build

The investment and the generating revenue is a huge challenge at the beginning. Because  the overall project outcome is uncertain, it is difficult to justify why the project should be funded. Not everyone or every project is suitable for "Pure Scrum". The team members need to change their workflow and need to be able to deliver working software continuously which is sometimes not possible. Difficult problems like how to validate a product vision or how to forecast budgeting is not answered by "Pure Scrum". If the desired outcome is not achieved it can be time consuming to decide when the time is right to end the project. Team members can in conflict between each other (For example a conflict between the Scrum Master and the Product Owner)  and there is not a solution to resolve it.

Conclusion

It is not my intention to fork Scrum in 3 branches. I only want to make conscious that the implementation of Scrum can vary according to the situation. Being aware what you are doing is then very important. And maybe this model and terminology can help you with it. Ken is every clear about his vision of Scrum. He says: "The word “framework” means that much is not specified and must be devised by those using the framework. However, you are playing the game of chess, so you don’t have the option of changing the rule book. If you change the rules, it’s not chess any longer. Just learn how to play the game with excellence, which is enough of a challenge." and "If you don’t like Scrum, we welcome and invite you to devise something else. Just don’t call it Scrum."

To read

  • The Scrum But Test
  • Scrum As A Framework
  • Are we agile yet? Grrrrr…
  • Am I, or Am I Not, Using Scrum? That is the Question.
  • Keeping Scrum Pure or Adapting Scrum to Your Culture?
Author uid: 53
Post date: Wednesday, February 2, 2011 - 09:00
How to generate an awesome product vision
Link: view
Body:

I see that web development projects are often trying to reinvent the wheel. I don't mean it as in code or application reuse. Most developers use principles like DRY actually very appropriate. I mean it as in general problem solving and business problems. Most problems we face are not new. Other people have encountered the problem and have probably found solutions that we can use directly or get inspired by.

Writing a product vision using Heilmeier's catechism

George Heilmeier, spent much of the 1970s in the United States Department of Defense and initiated major efforts in stealth aircraft, space-based lasers, space-based infrared technology and artificial intelligence. In the case of product vision, we can use existing and proven tools. A simple starting point is for example Heilmeier's catechism which can be used as questions that should be answered when creating a product vision:

  • What are you trying to do? Articulate your objectives using absolutely no jargon.
  • How is it done today, and what are the limits of current practice?
  • What's new in your approach and why do you think it will be successful?
  • Who cares? If you're successful, what difference will it make?
  • What are the risks and the payoffs?
  • How much will it cost? How long will it take?
  • What are the midterm and final "exams" to check for success?

I think that these questions are especially useful because they are so simple. It is for everybody understandable and doesn't introduce any technical barriers. While there are much more comprehensive models and tools, these questions grasp the essence. If a product owner can not answer these questions convincing and enthusiastic then there is definitely something wrong and beginning such a project is just asking for problems.

" While there are much more comprehensive models and tools, these questions grasp the essence. "

Web development projects have multivariate problems that can't be projected onto a single axis. We may wrongly attribute causation to one factor, when the real problem may be more complex. While I strongly suggest that the product vision is often a problem, it is not the only succes factor. Paul Graham listed here 18 start-up mistakes.

To read:

  • http://www.executivebrief.com/article/succeding-scrum-creating-effective-product-vision/
  • http://www.joelonsoftware.com/articles/JimHighsmithonProductVisi.html
  • http://iamnotaprogrammer.com/what-does-a-product-manager-do.html
  • http://en.wikipedia.org/wiki/George_H._Heilmeier#Heilmeier.27s_Catechism
  • http://www.paulgraham.com/startupmistakes.html
Author uid: 53
Post date: Sunday, January 9, 2011 - 09:00
Share this page
  • Facebook Share
  • Tweet
  • Linkedin Share
  • Google Share

About Yusuf Arslan

foto_yusuf.jpg

Owner at Mixmono
Twitter: @yusufarslan
LinkedIn: Yusuf Arslan
Mail: Contact Form