Programming and general geekiness.

Posts tagged ‘visual studio’

What do developers want/need?

It is now less than a month before Microsoft’s Build Windows conference. In a month we will know the ins and outs of Microsoft’s new operating system and how we will be able to use the developer tools to develop next generation applications. However, despite the fact that we are going to find out then, I would like to take a step back and consider what developers really need and or want in their development tools.

  1. Freedom. Developer tools should really be free. I don’t think that it matters if you have to pay for a developer license to distribute the application through a main stream distribution service such as Mac’s App Store or the rumored Windows App Store. The tools should allow for complete freedom to develop for the platform, taking advantage of all the tools available without having to pay an additional fee.
  2. GUI Design. I am incredibly lazy when it comes to UI design because I find it easier to just drag and drop, always. I really can’t be bothered to think about layout tables and other pointless things. I just want to drag and drop controls or widgets or whatever name they have been given into the UI. There should be guidelines to help me place controls evenly. Its also quite nice if I can double-click on a control in the designer to either write code for its default action, or to edit the default text.
  3. A sensible, easily accessible framework. The frameworks that are used should be up-to-date and the same version that is distributed with the OS so that the application is guaranteed to work. The frameworks should be easy to access and be organised logically with a large amount of functions that allow for integration with other services.
  4. Compiled applications should be lightweight and fast. Once I have finished my application I want to know that my application will run smoothly, and quickly, on all computers. None of my users should be left behind because my application is to complex, and so the frameworks should be able to adapt to users’ needs.
  5. Graphics should be great. Applications should look nice. I think that animations can work for some applications, but there is no need for laggy animation because that is not what users want or need. Not only should the design of components of applications be good, graphics libraries should be great. I should be able to sit down and build a 2D or 3D game using the default set of libraries. The libraries should therefore have maximum support for fast and responsive graphics. All graphics should be carried out on the graphics card by default with as little CPU input as possible, and I should also be able to run code to do other things on the graphics card.
  6. A nice code editor. It surprises me how many IDEs still have appalling editors. The bare minimum should have syntax highlighting, line numbers and code completion. This bare minimum allows for code to be written very quickly and also produces readable code.
  7. The language should be designed for reusable code. It’s always nice to be able to write reusable code, and the language itself must encourage this as much as possible. Users should be able to build up libraries of functions they often use, and perhaps the IDE provider should allow users to easily share these functions with others so that popular functions could be added to future versions of the framework. However, there shouldn’t be a great need for reusable code as code should be written anyway in the framework.
  8. Post compilation should be thought out. After I have compiled a program I always like it if I can quickly build an installer that could be potentially be distributed easily through an App Store. The installer should be fast and not pester my user for default settings. I should also be able to manage updates quickly, fluidly and through a standard method. Users won’t like it if they have to manually update an application; either updates should be automatic in the Operating System, or the IDE allows me to control automatic updates in the application.
  9. Programs can remember state/key variables. When I close an application it is always nice if the application loads again with the same things that I had open before. This should be easy for an application to remember. It could either have some sort of automatic settings, or the option to have external variables (which the user can’t edit) that are saved by the application regardless of whether it crashes.
  10. Files should be easy. When an application saves a file it should follow some defaults. Perhaps it could be that there is some sort of compressed container file (a renamed .zip or .tar.gz file) which can contain images, video, audio and XML text files to store key data. The installer should automatically set it up so my application is launched when the user double clicks it in Windows Explorer, and it also has a simple of getting thumbnails for the file, perhaps these could be saved by the application. Not only should files be well supported, but databases should be too. If I want to to use a database in my application, or communicate with one on a server, I should be able to connect to it safely and securely in such a way that ensures the user cannot edit or see what they shouldn’t.
  11. Applications should be congruent. It annoys me when applications aren’t compatible. It should be easy to make the compatible and make them work with other applications. It should be easy to code plugins for applications. It should be easy to extend them. Regardless, applications should be good at drag and drop. I should be able to drag and drop content from a document to a presentation to an email, to a web page, to tweet. File formats would need to be standardized, so I could, for instance, drag and drop a podcast onto my desktop to instantly get it to show a player that will download the most recent version for me.
  12. Design should be easy. This sort of matches point two, but this is more about how the design of an application should match standards that make it easy to use for every audience. Apple have the Human Interface Guidelines and these ensure that Mac applications work smoothly. Not only should the design of the GUI be simple, icons and images should also be designed carefully. I don’t want to have to pay a few hundred dollars to pay for a drawing application I don’t really understand just to give my application an Icon. The IDE should contain an easy icon designer that developers, and designers, can understand. The framework itself should offer a set of default icons that can be used across applications to represent things; it is important that a New button looks the same everywhere so people understand what it does. Furthermore, these default icons should be up-to-date, relevant and easy to remember. The fact that the default save button in most applications is a floppy disc is proof that we need an update soon.
  13. Defaults. The IDE should offer a good set of default templates that make application design easy. It is nice to have separate templates for a document based application, a navigation based application and a game. Right now, neither Apple or Microsoft gets this entirely – both have things to improve on, but Apple is better. I should really be able to mix and remix these templates so that I can produce, perhaps, a document based application that has 3D design capabilities. The templates should also allow for me to write a really small application and a really big one – they should be sizable.
  14. Toolkit. The default toolkit should be massive, but easy to access. Where is the point in me spending a couple of years designing a game if I have no tools to build the 3D characters with. The toolkit should effectively be one application, but I should be able to add to the toolkit, so if someone has designed something to allow me to edit my characters more easily, I should be able to add this in with no problems.
  15. Speed. Everything should be fast. Creating a project should be fast. Designing the UI should be fast. Selecting the design set should be fast. Coding should be fast (using code completion). Compiling should be fast. Perhaps the UI of the IDE should even optimize itself to my tasks, automatically hiding things I won’t need in the design of my applications. If I want to, I should be able to spend a day on a project before general release, but if I want to spend three years the tools should be just as good.
So, where do we go from here? Microsoft will certainly need to take nearly all of these points on board for Windows 8. Apple are most of the way there with Xcode. In my mind Microsoft will probably need to redesign Visual Studio from the ground up for Windows 8 if it is going to have decent development tools. If Microsoft is genuinely planning on having most Windows 8 applications written in HTML5, CSS3 and JavaScript they will need to find ways to give developers maximum support and to allow them to securely compile and distribute them. Microsoft will need to rethink Windows Installer, definitely using some support of app center that allows for applications to be instantly downloaded and installed.
I think that only time will tell on whether Microsoft succeeds with its new tools, but I hope that perhaps at least 10 of my 15 points are considered at some point in the future, because they need to be to make a nice development environment.
Follow

Get every new post delivered to your Inbox.