This post is to answer several of the comments posted to my blog, Hacker News, Programming Reddit, and unClog - in no particular order. I tried to answer most if not all questions, but if I missed yours, it was not on purpose.
At the end of this post, are my own answers to the productivity lost questions I have posed.
PJ says, “A bad craftsman blames the tool.” So PJ, if the tool is broken or is in need of serious repair, would a good craftsman ignore it?
Arun says, “…I believe you need to think outside the .Net world. …What's new is not always complex. The productivity in modern languages have actually improved dramatically. People release new features all the time. But then, you need to stop using the old tools.” Arun, I make my living as a .NET programmer and I would not call Visual Studio 2010, .NET 4.0 and C# 4.0 “old tools”, in fact they are so new they have not been released yet, except if you attended PDC.
Alecks says, “At age 17 I sit in programming class trying to find my path through the maze of the .NET framework, thinking to myself 'okay, so I can do it . . . but how does it work?” Alecks, hang in there buddy, one step at a time. Pick a few .NET classes (like the collection or array classes for example) and play with them to see how they work. Look at the MSDN examples or search online. Step through the examples in the debugger and inspect the variables, program flow, etc. Once you see how one or two of these classes work, then you can expand to others. One step at a time and you will be fine. Keep at it!
Sridhar says, “…try Zoho Creator creator.zoho.com which tries to provide on the web the ease of use you get in a VB6 environment.” Thanks Sridhar, I will give it a try, looks interesting.
Jeff says, “…I think it should be as easy to build apps for the web as it is for the desktop…” Bingo! Jeff was able to summarize my two posts in basically one sentence. Good job Jeff! Unfortunately, the reality is that we maybe years away from making this happen.
Andrew says, “We know that code re-use is a wonderful thing, and its just a real surprise to hear someone argue otherwise. … Lastly, I'm not sure quite why you've got some of the highly passionate responses above, for sure its an opinion that differs from most people I've met, but you're not too far of death threat territory in some cases :P” Andrew, what makes you think that I am against code reuse? Where did I say that? Quite the contrary, almost 80% of my open source project is predicated on code reuse, I would have never been able to complete it otherwise. With respect to the passionate responses. Well, I don’t think I would call them passionate…
Roger says, “As a developer you have to keep getting better tools, and get better at using those tools. …When I job interview developers, one of my questions is … if the candidate cares about their own productivity and actively seeks out new tools and techniques.” Say Roger, I think you missed the part where I am using the latest tools and editors, including a pre-release of Visual Studio 2010. I think your brain may have froze when you saw VB6 in my post – don’t worry, I think most of us have the same problem with VB6.
Daniel Lyons says, “It's not just you. I don't know what's going on with these other guys but I feel what you're saying just as strongly as you do and I'm only 27. We're reaching levels of complexity where what we've been doing just doesn't work anymore. Especially with the web.” Daniel, nice quote, “where what we’ve been doing just doesn’t work anymore.” I say amen to that. And as I have said before, it is getting worse, not better, in my opinion.
Roe says, “You raise some good points, but the conclusion is weird: "to me, productivity is everything. Productivity. It is as simple as that." To me, delivering something of value to users is everything.” Hey Roe, I think you missed my point. It is already a given that what is delivered is going to have value to the “users”, and if not, you have bigger problems then productivity. If you can’t deliver to your customers in any timely manner, no matter how much value it has, is of no value when the project is canceled cause it is way overtime and budget.
Mark says, “You should try ruby. Or python.” Yup, I have and in my article I state that I have tried so many languages over the last 17+ years, that I can’t keep track of them. I have been using IronPython and IronRuby, well, because I am a .NET guy. And in fact, the open source project I developed embeds IronRuby and IronPython as the scripting engine to program remote computers in real-time, but that’s another discussion.
Sixbit says, “…I think I've rediscovered your VB 6 experience of 1991. When I got into iPhone programming this year, and got the hang of using Interface Builder to rapidly prototype things, I really got a feeling that, this is how simple things should be in other frameworks, and have rediscovered my love of programming again.” Wow, sixbit, that sounds cool. I will have a look at that. I wonder how that extends, if at all, to general purpose web development, probably not…
Phillip Zedalis says, “I did not comment on your last post because I was still contemplating it - but yes I heard your point loud and clear. I also over time have felt a great discomfort with the growing 'complexity' of the libraries surrounding Visual Studio.” Philip, wait till you get a load of Visual Studio 2010 and .NET 4.0 – more and more and more. I am not sure how it is any better. I used to be an early adopter of the Visual Studio environment, right back to Visual Studio InterDev in 97, anyone remember that environment? Now, I just cringe at the extracurricular effort required to figure out all of the new things have been added to the IDE and framework. I can’t even face going to anymore PDC’s which as a passionate programmer, were my favorite conferences, it is just too much. By the way, fantastic site Phillip!
Ald says, “I am not an expert, but I think you could halve the list by refusing to use MS technology, and XML. Are you sure you couldn't do everything in javascript, with may be a few simple scripts on the server serving the asynchronous calls?” Ald, download my open source project and show me how I could halve the list by using different technologies, seriously I would be interested. You will also see why it cannot be all JavaScript with a few simple scripts.
Joseph Gutierrez says, “It makes you feel less a craftsman. More like a father at Christmas with the bicycle instructions, trying to put the damn thing together. I've started learning Lisp for this simple reason. Less imperative and more declarative programming. Stay with it. An increase in velocity is what you're looking for. Take a look at altdotnet news groups on yahoogroups. VB6 with OCX and ActiveX damn good things, but it seems to have dropped out of the mainstream.” Joseph, thanks for your comments, absolutely true on the “bicycle instructions”, problem is that each part is from a different manufacturer and some sizes are in metric and others in imperial. I hear you on Lisp – have been there, and may even try IronScheme, but still cannot see how I could build a web app using this technology. Btw, I love your snowflakes on your blog!
Buford Twain says, “The next big breakthrough in software development will come when someone makes things radically simpler for us poor programmers.” Buford, I agree, I just hope I get to see that in my lifetime...
Itay Maman says, “When you need two or more frameworks in the same application you have a problem: each one is imposing its own structure, and the two structures are usually in a conflict with each other.” Itay, you are too right, in my own application I have several frameworks and components and the fight is to structurally fit them together even though each one on its own has the functionality I want.
Mark Jones says, “Very interesting. As a hobbyist assembly-language programmer whom has taken courses in the latest Java, C, and VB disciplines, I could not agree with you more Mitch.” Bless your heart Mark! Assembly language was the last thing I thought I would see on my blog about web applications, but I totally get where you are coming from. I sure am tired of “syntax code”, particularly now that Microsoft has fully embraced XAML, it just keeps getting more and more verbose and making me less and less productive.
Evrim Ulu says, "We've faced similar problems in past, and the only solution we've found is to rewrite everything from scratch." Wow Evrim, this is pretty cool. I will indeed look at this in more detail. I also happen to agree with your approach by the way. It sure appears the only solution is to indeed rewrite it all from scratch. I totally get that, thanks!
mycall says,
“1. Why does GSB exist?
2. What is wrong with the normal way of using hosting services (e.g. FTP pre-tested application from localhost development to QA to production)?
3. How does this compare to the new Amazon EC2 or Windows Azura?
4. Does GSB actually have the minimum number of components to (a) minimize maintenance and issues?
5. Hows does Silverlight 2.0 with IronPython running in the browser change GSB? And
Forgot to mention, here is an idea for you..
Wow, great questions mycall, let me try and answer them. GSB exists because I wanted to program in real-time, using dynamic languages, many remote computers from a web browser. I may have 30 or 40 web apps that need maintenance around the world. This tool allows me to geocode the locations in the map program so that I have some physical frame of reference, and keeps all of the IP addresses, notes, etc. contained in one location. I can then remote desktop in and launch the “service component” of GSB which contains the DLR and IronPython and IronRuby interpreters that I access through my web browser via WCF web services in both a REPL console window and a code editor. This allows me to make simple changes to code, scripts, etc. much easier than a) trying to hook up Visual Studio remotely to +30 web sites does not make you productive and b) to answer your question 2) trying to do the “traditional” way of maintaining 40 sites in localhost and promoting those via ftp, etc., again not too productive. And it is highly experimental as mentioned here.
With respect to Amazon EC2 and Windows Azure, this is something completely different. My IDE is “in the cloud” whereas the applications for Azure and EC2 are “in the cloud”.
Yes, I do have the minimum number of components, (don’t need Agent SDK, just used as Robby the Robot demo and almost all of the components are open source that I have reused in my application. My code is the glue code and programming for the overall functionality, along with eh ability to “reflect” assemblies on the remote computers so I can look at the custom classes types and members I have at my disposal.
With respect to Silverlight and IronPython in the browser, the IronPython execution is actually local and not on the remote computer. I won’t get into the other productivity issues of trying to develop and debug a Silverlight application as that is another whole can of worms.
Finally, to answer about Michael Foord’s Silverlight in the browser, have a look at this web-based IDE round up.
Pfedor says on Hacker News, “The article is interesting, but I can't help but think that large part of the guy's problem is that he's not using Unix.” I am wondering how that would make my application any simpler or me more productive, please do tell.
On Hacker News in general about VB6 – I think the point is being missed. I was very productive in developing desktop applications in VB6 but there is no equivalent for web applications.
Thomasmallen on Hacker News says, “
His core argument is wrong. Frameworks don't exist to make programmers' lives easier. Our job difficulty is essentially fixed: we will push ourselves as hard as we can. What frameworks do is increase the scope of what we can accomplish within that level of effort.” I disagree and I think you missed the point. There is so much language and framework being used that it is a humungous job to stitch anything together easily. At least in my .NET web application world. That’s the point.
Gregk on Programming Reddit says, “We can't re-invent the wheel all the time. There is a tendency for over-engineering a little these days. But that is avoidable. In general, I can say we have better tools than 10 years ago but we are also more demanding and tackling more complex tasks.” Again, I think my point may have been missed. I am not trying to reinvent the wheel at all or over engineer anything, I am trying to solve a business problem in the most productive way possible. Like I said before, VB6 allowed me to solve a business problem simply and was a better desktop tool almost 10 years ago then the web development tools we have today to solve the same problem, except on the web.
Vhold on Programming Reddit says, “Every now and then this sort of thing is said, and there is always a very significant missing piece. The software people are writing now does a lot more, and a lot more reliably (on average) than in the past.” Hmm does a lot more, says who? I think we are solving the same problems over and over again, but getting harder to do as our tools and frameworks are not making it any easier as these are increasing in size and complexity, yet our business problems are the same. An ecommerce application 10 years ago is “basically” the same as it is today. Sure lots of extra stuff, but the bottom line is to add stuff to the cart and get it transacted, or at least that what my ecommerce customers really care about, and they care about it doing it faster and cheaper than 10 years ago. That’s the issue.
Recursive on Programming Reddit says, “No one's stopping you from doing pure programming.
Write your own web server in a procedural language, and then write your own procedural web app on top of it. The big scary complicated frameworks will be waiting when you're done banging your head on the desk and crying.” Dude, who said anything about me wanting to do pure programming? Show me in my post where it says I want to do that.
Ken on unClog says, "I see several markup (HTML, CSS) and programming languages (C#, Javascript, Python, Ruby?), operating systems (Windows and Mac OS X?), system introspection and end-user programmability, and a third-party 3D plugin. It wasn’t too many years ago this would have been impressive in a desktop app. I’m not sure where the “simple” is. If you’re looking for a program to tie all these things together, it’s going to have a lot of inherent complexity. The solution to “too many languages” is never “another language”. I’m curious why one would think that such a complex web app would be easy out-of-the-box with a particular language or framework. Frameworks make common things easier. Uncommon things will always take more work."
If I had a prize to give out, Ken would get it! My one page web application is not simple. It was a trick question. My one page web app was “designed” to be “simple” to use, it was not simple to design and build. I had to use a lot of languages, frameworks and components that were never really designed to work together and that was the effort involved to reach my goal.
There is real wisdom in the statement, “The solution to “too many languages” is never “another language”.” Maybe that is what I was looking for, a web based language that can tie HTML, JavaScript, CSS, etc., into one language – a web language. The analog of using the VB example was to indicate that I could indeed use one language and even with 3rd party plug-ins, I could develop a fairly sophisticated desktop application. Actually that could be said for many languages if developing a desktop application. But in the web world, there seems to be no choice around having multiple languages or scripting languages or mark-up this or that, each with its own strength and weaknesses, which result in productivity lost. Or at least for me.
That is why I liked Evrim's response, “We've faced similar problems in past, and the only solution we've found is to rewrite everything from scratch.” He even has an example web site written in their own technology. I have not had a chance to look into detail, but from an innovation perspective, this looks promising to me and breaks out of the HTML, JavaScript, CSS, et al paradigm. I hope his works continues.
My point in all of this, being that this is a blog about software industrialization, is that we, the software development industry, have not caught up to developing web applications like we can desktop applications. I would say that had I developed my open source web app as a desktop app it would have taken me 10x less time, meaning I would have been 10x more productive (probably like 100x) and that is my point. I hope the future is not too far away where we can develop sophisticated web apps in the same time and ease as we can develop desktop apps today regardless of choice of languages or frameworks.