Subscribe

M.I.T. and Harvard have announced a non-profit partnership to offer free online courses from both universities. Many of you might have heard about MITx, which M.I.T announced a few months back. Well, this partnership between M.I.T. and Harvard is announced under the name edX.edX will host courses from MITx and HarvardX.

This initiative will directly compete with the consortium of several universities (Stanford, Princeton, University of Pensylvania, and University of Michigan) who created a partnership to offer free courses, under the Coursera website.

The world of education is becoming to get more and more interested, especially for students who seek quality learning on the Internet.

DIYComputerScience.com is a sustainable social venture started with core principles of openness, equality, empowerment for students, and peer supported communities. Inspired by Mahatma Gandhi's principles of education among others, it aims to make  content, community, and credentials available to students,  teachers, and enthusiasts of Computer Science on the open Internet. ?

The current state of education and institutions is a far call from what it ideally should be. Education institutions should be shared spaces where any aspirant can come for meaningful discourse, and gain knowledge as well as skills,  to earn a livelihood, and lead a good, productive life. However, to the contrary, our present educational institutions are more concerned about building walls which only the elite can cross, and then in branding these elite for the industry. This along with the shortage of good institutions causes a huge demand supply gap among the seekers and providers of learning.  These are very often the cause of several ills such a rote learning, disinterested approach to learning, high stress and suicide among students, and inequalities in sociey.?

A possible answer to these problems is peer based, mentor facilitated learning using the open Internet. Very high quality content for learning is already available for free on the Internet, in form of open courseware, and several other resources. Technology makes it possible to build online spaces for peer collaboration and review.  DIYComputerScience is an online space where students can learn Computer Science for free in a hands on, self paced manner, with supportive peers and mentors and finally create a portfolio of their work and interactions to serve as their credentials. ?

The peer based nature of learning makes it possible to achieve scale well beyond what is possible in a traditional classroom. The portfolio based learning makes it possible for students to learn at a comfortable pace, learn in the context of real projects, and show different facets of their capabilities. It also allows employers to get a full view of a learner's capabilities rather than just a grade point.

The long term vision of DIYComputerScience.com is to make hands on, project based, Computer Science learning, and credentials, available to any student with the desire to learn, regardless of their financial status, prior grades, or geographical location. ?

However, there is a lot of work to be done. Right now we have a few supporting courses, and one applied course (The Elements Of Computer Science) where a student builds an entire computer in simulation from the ground up, starting with basic logic gates, and going all the way to an assembler, programming language, and game. In time to come we will be adding several more hands on courses, especially for learning how to build web based applications, and for learning operating systems fundamentals.

If bridges and buildings were made like we make software, we would have disasters happening all around us. I have heard this being said, many times. It is sad but true. Buggy software is the bane of the software industry. One way to improve software quality is by proper education. Several professionals from the software industry also attest to this. They believe a greater emphasis should be given to quality and testing in university courses. But simply explaining the principles of software quality is not sufficient. Students tend to forget theoretical principles over time. Practical exposure and experience is equally important. Students should be put in an environment where they can appreciate the importance of quality software, and can experience the benefits of processes that enhance quality. Many universities have a period of internship for the students in which they work in a software company and experience these factors first hand. However because the internship usually is of a duration of 3-6 months, it is not sufficient to instill the importance of quality. Emphasis on code quality should be made a part of the entire software curriculum for it to have proper impact. Every assignment that the students submit should be subjected to the same quality standards that an industrial project would be subjected to.


Several efforts have been made to design and implement automated grading systems in universities. Some existing systems are:

In this post I will briefly explain two such automated grading systems - WEB-CAT, and Praktomat.

WEB-CAT

WEB-CAT was created at Virginia Tech university to address the need for incorporating software testing as an integral part of all programming courses. The creators realized the need to automate the grading of student assignments, to enable faster feedback to students and to balance the working load of faculty members.

Since Test Driven Development (TDD) was to be used for all the assignments, the students had to be graded not only on the quality of code, but also on the quality of their test suite. WEB-CAT grades students on three criteria. It gives each assignment a test validity score, a test correctness score, and a code correctness score. Test validity measures the accuracy of the students tests. It determines if the tests are consistent with the problem statement. Test coverage determines how much of the source code the tests cover. It determines if all paths and conditionals are adequately covered. Code correctness measures correctness of the actual code. All three criteria are given a certain weight-age and a final score is determined.

WEB-CAT’s graphical user interface is inspired by the unit testing tool JUnit. Just like JUnit it uses a green bar to show the test results. A text description containing details such as the number of tests that were run, and the number that passed is also provided.

Basic features provided by WEB-CAT are:

  • Submission of student assignments using a web based wizard interface
  • Submission of test cases using a web based wizard interface
  • Setup of assignments by faculty
  • Download of student scores by the faculty
  • Automatic grading with immediate feedback for student assignment


WEB-CAT follows a certain sequence of steps to assess a project submission. A submission is assessed only if it compiles successfully. If compilation fails, then a summary of errors is displayed to the user. If the program is compiled successfully then WEB-CAT will assess the project on various parameters. It first tests the correctness of the program by running the student’s tests against the program. Since these tests are submitted by the students, and it is expected that 100% of the tests will pass, because we do not expect students to submit a program that fails their own tests. After this the student’s test cases are validated by running them against a reference implementation of the project created by the instructor. If a student’s test case fails on the reference implementation then it is deemed to be invalid. Finally the coverage of the student’s test cases is evaluated. Once the scores are obtained a cumulative score out of 100 is calculated applying a certain formula on the scores from all criteria. The results are displayed immediately to the student on an HTML interface.

It was observed that the quality of student assignments increased significantly after using WEB-CAT. It was found that the code developed using WEB-CAT contained 45% fewer defects per 1000 (non commented) lines of code.

 

Praktomat

Praktomat was created at Universitat Passau in Germany. The purpose of creating Praktomat was to build an environment which would help students enhance the quality of their code. Along with automated grading it also has a focus on peer reviews. The creators of Praktomat felt that reviewing others software and having one’s software reviewed helps in producing better code. This is the reason why Praktomat has a strong focus on peer review and allows users to review as well as annotate code written by other students. Students can resubmit their code any number of times till the deadline. This way they can improve their code by adopting things they learned by reviewing other students code as well as lessons they learned by others feedback of their own code.

Praktomat evaluates student assignments by running them against a test suite provided by the faculty. The faculty creates two test suites – a public suite and a secret suite. The public suite is distributed to the students to help them validate their project. The secret test suite is not made available to the students, but they are aware of its existence. An assignment is evaluated by automatically running both the test suites against it, and also by manual examination by the faculty. Praktomat was developed in Python, and is hosted on SourceForge.


Conclusion

My contention that student project submissions should be backed by a process to encourage best practices, and a software to automate as well as facilitate the process, has become stronger after reviewing WEB-CAT and Praktomat.

What best practices should we incorporate in the process? What are the features that an automated grading software should contain? WEB-CAT, Praktomat, and several other software give a good starting point. We can learn from their successes and failures, and enhance the offering by adding our own experience.

WEB-CAT and several other sources have shown us that TDD is definitely a good practice. In a university environment TDD will work best if it is complemented by instant feedback to the students. We want to have a process that will encourage students to improve the quality of their code. They should be graded on the best code they can submit till the deadline. Two things are needed for this – instant feedback and the ability to resubmit assignments. WEB-CAT achieves this by assessing submissions in real time, and displaying the results to the students immediately. WEB-CAT allows students to re-submit assignments any number of time till the due date. Since faculty members are already overloaded with work, the software should take some of the faculties responsibilities. WEB-CAT automatically evaluates and grades the student’s assignments, leaving faculty with time for more meaningful activities.
 
Praktomat has shown us that there is a definite benefit to peer review. When we review code written by others, we can go beyond the paradigms set in our own mind. Having our code reviewed by others can help us see our shortcomings which we may have earlier overlooked.  Praktomat allows students to review code written by others. However the review is hidden from the faculty, to ensure that it does not impact grading. Praktomat does not rely on 100% automatic evaluation of the assignments. Praktomat evaluates certain aspects automatically and the rest are evaluated manually. Factors like code quality, documentation, etc are reviewed and evaluated manually by the faculty. There may be two reasons for this. Software to support automatic evaluation of these things may not have been available when Praktomat was written, or the creators felt that certain things are best evaluated by the faculty.
????

About two months back, Scott Young decided to take on the ambitiuos challenge of completing an entire four years MIT courses in Computer Science in one year, using their open courseware lectures. After two months, Scott has already completed a years worth of coursework. In the video below, Scott talks about his experience thus far, the challenges, and the benefits of taking charge of his learning.
?

HEAJ 2009 : Open-course/Open-source

After the world famous experiment which Peter Norvig, and Sebstian Thrun of Stanford did with the online Intro to AI course, Stanford is all set to offer a much wider range of free online coures in 2012.

Here is the list of free courses coming up in Spring 2012.

Computer Science 101, taught by Nick Parlante
http://cs101-class.org

Software Engineering for Software as a Service (SAAS), taught by Armando Fox and David Patterson
http://saas-class.org/

Game Theory, taught by Matthew O. Jackson and Yoav Shoham
http://game-theory-class.org

Natural Language processing, taught by Dan Jurafsky and Christopher Manning
http://nlp-class.org

Probabilistic Graphical Models, taught by Daphne Koller
http://pgm-class.org/

Human-Computer interfaces, taught by Scott Klemmer
http://hci-class.org/

Machine Learning, taught by Andrew Ng
http://jan2012.ml-class.org/

Technology Entrepreneurship, taught by Chuck Eesley
http://entrepreneur-class.org/

Cryptography, taught by Professor Dan Boneh
http://crypto-class.org/

Information Theory, taught by Tsachy (Itschak) Weissman
http://infotheory-class.org/

Design and Analysis of Algorithms I, taught by Tim Roughgarden
http://algo-class.org/

Computer Security, taught by Dan Boneh, John Mitchell and Dawn Song
http://www.security-class.org/?

A Personal Learning Environment according to this excellent article is:

The term Personal Learning Environment (PLE) describes the tools, communities, and services that constitute the individual educational platforms learners use to direct their own learning and pursue educational goals.



PLE is a somewhat overloaded term. It often means different things to different people. In this blog post, I will talk about what it might mean from the perspective of a self learning programmer. Let me take the example of someone who is learning programming on their own. Let's say they want to learn Structure and Interpretation of Computer Programs using the excellent OCW from MIT. If this student were in a traditional college she would have access to teachers, labs, and peers, all of which would typically add and assist her learning experience. But she is not in a traditional college. She is a self learner. Can she get the same learning experience that a college student gets? I think so. I think she can not only get the same learning experience, that a college student gets, but she may actually get a better experience if she creates for herself a good Personal Learning Environemnt.

A Personal Learning Environment consists of your learning resources, learning artifacts, interactions, mentors/experts, and credentials. So how do we create one? Well there isn't yet a software which you can install to create a Personal Learning Environment. It will most likely be a collection of nodes united through a webpage/website. For a programmer a Personal Learning Environment would consist of the following:

  • Learning Journal (usually a blog)
  • Forum contributions (StackExchange and others)
  • Code produced as part of the learning (GitHub or other repositories)
  • Environment to network with other learners, mentors, experts (Maybe Twitter or other social networks)
  • A curated list of blogs relevant to the topic being studied
  • Credentials

Now let us see how we can implement each of these items.


Learning Journal:
Many college students take notes. What if a student published her notes on a blog? These notes would not only serve as a reference, but would also serve to document their learning and as a proof that this student has actually made an attempt to understand that topic. Well written notes can give us an insight into the student's thought process, and can also serve as credentials of sorts.

Think of this as a learning journal. It's an online space where you document your learning and understanding of a topic for the sake of personal reference, helping others, and for establishing credentials and expertise. Your blog will be a very vital part of your learning environment.

Forum contributions:
Good forums are a very integral part of learning. They are places where we can ask questions and have our doubts cleared. It is always a good idea to index the questions and answers that we have provided for a topic. This will serve as a useful future reference and also serve as credentials.

Code Repositories:
Much of learning how to program will consist of writing code. It would do good to a learner to create all such code in open source repositories. It will not only teach a few things about how to put code under version control, but will also serve as credentials (remember, many people recruit developers from what they push to GitHub).

Environment to connect with other learners:
This is a slightly overloaded term again, and can mean different things to different people. For me the environment to connect with other learners is Twitter, and various mailing lists. This environment along with the forums will give you access to interactions with experts and other practitioners.

Curated list of blogs and articles:
I have found blog posts written by others as a wonderful learning resource. Typically, when I am learning something new, I make a list of good bloggers who write on that subject, and follow them.

Credentials:
A traditional student has a certificate or a GPA to prove their knowledge, but self learners often do not have a well accepted way to prove their knowledge (even if they have a lot of it). But all is not lost. We are moving into a world where there are several non traditional ways to establish credentials. Your learning journal (blog) is the most important credential. It has the potential of showing your sincerity and seriousness as a learner. It can show the unique insights you had while learning, and your process of sense making. Besides the blog, you can establish credentials by creating or contributing to open source projects, by earning points on StackOverflow, by earning badges on Codeacademy, etc. If you look around, you will realize that there are tons of ways to establish credentials. Just be sure you link to your credentials from your blog.


What I have explained above is a very simplistic example, because it is based on a course whose contents is already available and curated. The real power of a Personal Learning Environment comes when the learner gets to curate their own material and gain full control over every aspect of their learning, including what they want to learn, how they want to learn, the resources they wish to consume, the experts they want to interact with, etc. As you can see, a PLE represents a shift from the traditional model of learning. A Personal Learning Environment puts the learner in the center and in full control over their learning process.

Whether you are a student enrolled in a traditional college, or a self learner, I am sure creating a Personal Learning Environment will prove tobe very useful to you.?

When I created diycomputerscience.com, one of the objectives I had in mind was to empower self learners. A few things that self learners do not have access to, is a peer learning community, and a way to establish credentials.

I believe it is a lot more fun to learn with peers, than in isolation. Besides this we also learn better when we can discuss ideas with other learners, ask and answer questions, and improve our own thought process by understanding how other people approach the same problem.

A student at a traditional college would typically get a certificate or degree which they can use as credential. A self learner on the other hand may have knowledge, but does not have the certificate to corroborate it.

These are some issues I am trying to solve at diycomputerscience.com. We have a peer learning community around different courses where everyone can learn at their own pace. Each course has a forum where participants can ask and answer questions. An integral part of doing the course is to keep a learning journal in the form of a blog. Everyone is encouraged to blog their notes, answers, solutions to various course activities, and whatever else they wish to add to the blog, such as how they arrived at a particular answer. Such a learning journal can serve as a learners e-portfolio. Just like photographers and artists have portfolios of their work, which they use as credentials, a student's learning portfoio combined with other artifacts of partipation in a course can become their credentials. To meet this end, each course at diycomputerscience.com, encourages students to submit links to their blog posts in the course. Submitting the links serves the purpose of peer review of each other's work. In a college such review may be done by teachers or TA's. Here at diycomputerscience.com, the idea is that every participant submits their work for peer review. The purpose is not to grade the work or brand it with an 'A', or 'B', but rather to help a learner develop their skills. If someone sees a submitted blog post, where they feel the problem could have been approached in a better or different way, then they can engage in a conversation, which will lead to better learning and understanding.

However, the above process also has a flip side. If a course is based on a book (such as the "The Elements of Comouting Systems" course), then we will inadvertantly be publishing (on our blogs) solutions to the homework problems from the book. Having solutions out in the open might tempt college students who are taking similar courses based on the book, to take the easy way out and not apply themselves to the solving the problems, as they would otherwise have done. Having the solutions out in the open, can in some cases lead to "academic dishonesty", and in some cases may spoil the experience of those who are learning by themselves, and do not wish to be tempted by ready made solutions.

I have been trying to think if there is a middle path, which balances all issues. It is possible to create a private space where self learners can exchange notes, and thoughts. However, I am not sure if a private learning journal would be as effective as a credential , as a public blog.   A private space would also mean that participants lose control over how they want to maintain their learning journall. Perhaps another solution is to just have the solution code snippets in a private space, while the learning journals continue to be hosted on the participant's blogs, wikis, etc. These private spaces can have access control rules, so when someone follows a link to a code snippet from the learner's blog, they will be able to access it only if they are part of the same peer learning group. Maybe there are other solutions which I cannot think of as yet ...

As examples of similar initiatives, University Of the People uses a private peer learning setup. They give certificates, and all communication among the participants is done in private. P2PU's School of Webcraft on the other hand is fully open. They are also working towards a badge framework, where students can submit responses to challenges. The students get a badge is a certain number of peers/facilitators upvote the student's response.

I would like to request feedback from the larger Interner community of teachers, students (learning at traditional universities), self learners, and professionals, about these issues.? I will appreciate if you can share your thoughts in the comments section below.

Big Changes Are Happening Here

I have been busy adding new features to diycomputersciene.com in the past few weeks... I added Study Groups, Book Groups, and was in the process of adding a Message Center - when suddenly I realized (and thanks to everyone who have me feedback), that this website has become very confusing to use.

People were having a hard time trying to figure out the difference between Self Paced Courses, and Book Groups, and Study Groups. So I people would come visit, but then leave because they no clue what to do on the website.

This was not good. I was putting in a lot of effort adding new features, creating new study groups, but they were confusing people more than helping. I was entering the zone of diminishing returns.

Today I made the bold (and hopefully wise) decision to scrap Book Groups, and Study Groups.

Book Groups Have Been Removed:

Book Groups have been totally purged... from the website, code, and database.

Study Groups Have Been Removed:?

Study Groups on the other hand have a lot of effort invested by some users of the website, so I have not purged them totally. The Study Group link has been removed from the main menu, but all links to the study group will continue functioning. I may remove Study Groups eventually, but only if I find out a place to maintain all the links, questions, and answers posted by participants in the study groups. The old Study Groups can be accessed here - http://diycomputerscience.com/studysessions/studysession/building-business-applications-with-silverlight?

The Landing Page Has Changed:?

The main page of the website has also changed. It now lists all the courses, so a user who visits the website immediately knows which courses are available.

I hope you will find these changes useful. As always, I am hoping that you will give me feedback, so I can continually improve the website to make it useful, and a great learning experience.

Are you interested in a Computer Science course in which you will build your own computer (in a simulator), your own assembly language, compiler, operating system, and an application on top of all this? Please read on...?

In a typical Computer Science program, we learn many key topics such as algorithms, computer architecture, operating systems, compilers, software engineering, etc. However, almost always, we learn all of these topics in isolation. This leaves a student with much throretical knowledge, but kind of clueless about how all this is integrated.

The Elements of Computing Systems - is a course which takes a student across the entire computing stack in a hands on manner. In this course, students start with the primitive NAND gate, and using a hardware simulator and HDL, they build basic gates, using which they build an ALU (Arithmatic Logic Unit), going on to building an actual computer (in simulation). Then they create an assembly language for this computer, followed by a high level language, an operating system, and finally a game using the language they created, on the machine they created.

In the process, students explore many ideas and techniques used in the design of modern hardware and software systems, and discuss major trade-offs and future trends.?

This course is a one of a kind course which unifies the most important concepts a student learns in Computer Science, in a fun and hands on way. The hands on approach is important because many of the topics covered in this course are dealt only at a theoretical level in most university courses.

DIYComputerScience will soon be introducing this course in their new section - The School of Applied Computer Science (coming soon...). ?

The course will be a 14 week online course, where you can learn at your own pace (well almost, but there are some weekly schedules) with supportive peers and facilitators. The course schedule will be somewhat like this:

Week 1 - Designing elementary logic gates fro a NAND gate using Hardware Description Language
Week 2 - Building and ALU (Arithmatic Logic Unit)
Week 3 - Designing Registers, RAM, etc
Week 4 - Designing an assembly language
Week 5 - Building the entire computer (in simulation) with the ALU, Registers, RAM, and the assembly language
Week 6 - Building an Assembler for the assembly language we created
Week 7 & 8 - Building a Virtual Machine (similar to the JVM - though much smaller in scope)
Week 9 - Introducing a high level, object oriented programming language
Week 10 & 11 - Writing a compiler for the high level language
Week 12 & 13 - Writing an Operating System for our computer, using the high level language we created
Week 14 - Some more fun (discussing improvements, and future directions)

This course was originally created by Professor Shimon Shoken. Here is a link to the home page for his course, and this is the book (The Elements of Computing Systems: Building a Modern Computer from First Principles) which was written by Professor Shimon Shoken, and Noam Nisan as a reference for this course. The Elements of Computing Systems: Building a Modern Computer from First Principles

If you find this interesting and would like to participate in the course (which should be online next month), then please leave a comment, and we will inform you as soon as the course is published.

Many thanks to Shimon Shoken, and Noam Nisan for creating this course, and making it publicly available, so others can learn and teach it.?

In this talk I interview Patrick McKenzie, who has been running a successfull MicroISV - Bingo Card Creator. Patrick has been very kind, and agreed to share with us the things he learned while developing and marketing his product. For those of you who are not familiar with the term, microISV usually refers to a one person company, or a few people company, but always a very small company.

Patrick McKenzie moved to Japan from America shortly after graduating from college.  He worked as a technical translator for a while, opened a small software business on the side, and eventually changed jobs to engineering then quit after the small business took over.  When not spending too much time on the Internet, he enjoys trashy vampire novels and spending time with his friends.

Parag: Hi Patrick, I recently read your awesome blog post 'Software businesses in 5 hours a week'. It's really wonderful that you are running a successful microISV. Did you always want to create and run your own microISV, or did you discover this calling somewhere along the way?

Patrick: I actually was very risk averse, and wanted nothing more than to get a nice safe job at a megacorporation when I was in college.  At the time, I knew I wanted to be an engineer, but reading the Wall Street Journal every day had me worried about competing with hundreds of thousands of talented engineers in India and China.  So I decided that, if I did one hard thing in addition to engineering, the intersection of people who could do both hard things would be minuscule.  Languages seemed an obvious choice, so I looked for a language where there was lots of economic opportunity.  Japanese was a great candidate: few Japanese people speak English, virtually no Americans speak Japanese, and our trade in high tech industries is in the billions every year.  I figured if I was one of the four American engineers who can actually speak Japanese, Microsoft would have to give me a job as PM of their Japanese Office group.

When I got out of college, I went to Japan to firm up my Japanese while working as a technical translator.  For a variety of reasons, that job was very underchallenging, and I needed a side project to keep from going insane.  Bingo Card Creator, my microISV, was that side project.


?Parag: How long did it take Bingo Card Creator to succeed to a point, where you were comfortable leaving your day job, to work on Bingo Card Creator full time?

Patrick: I actually did not intend on quitting my job in favor of BCC for a very long time.  Other things were going on in my life, principally work-related, and when BCC was quite young I changed jobs and committed to the new job that I would be there for about three years. By the time I was done with my commitment, BCC was routinely exceeding my day job salary.  I've written elsewhere about the culture of Japanese megacorps and the lack of work-life balance: suffice it to say that when you work a 19 hour day and make less than when you do while sleeping (since BCC customers would purchase mostly while I slept), you very quickly lose motivation to continue with salaried employment.

Anyhow, I noticed that I could probably quit on BCC revenues about 3 years into the project and actually quit at about 3 years 8 months.
?

Parag: Can you talk a bit about the process you followed to take Bingo Card Creator from a (good) concept to a point where you had real figures that validated the concept and gave you the courage of leaving your day job.

Patrick: There wasn't really much of a process to get it out the door: make the product, make a website, start selling it to people.  That only took 8 days.  As for the long slog from getting from that first sale to the point where I left the day job, I have blogged most of it, but some major milestones were:

  1. Using my first few hundred dollars of revenue to test out Google AdWords, which took almost a year before I cracked the code and was very profitable.  Google used me as a case study for one of their products as a result of my success with it (which floored me at the time).
  2. Switching from a downloadable Java application to a web application, which virtually doubled sales due to higher conversion rates, while simultaneously decreasing support costs by 90%.  I strongly, strongly recommend web applications.
  3. Figuring out organic SEO, which drives about 50% of my sales (the remainder mostly AdWords) and 75% of my profits.  My main technique is called scalable content creation -- basically, creating a system and process which allows a freelancer to create more activities for my website.  Each activity (I have nearly a thousand) solves a very specific pain point for a few dozen teachers every month.  Many of them will trial BCC when they find my site on Google, and I sell a copy to about 2% of them.  1,000 * a few dozen * 2% * $29.95 = a lot more money than you would expect from the likes of Owls of East Asian Bingo.
    ?

Parag: Can you tell us, what are the highlights of running your own microISV??

Patrick: Particularly in comparison to the old day job, my work/life balance is so good that I sometimes wonder if I'm living in a dream and will wake up and lose it all.  I set my own hours, I have virtually infinite flexibility to travel, I can see my family when I want, and I'm immune to the social pressures which cause many Japanese (and American engineers) to sacrifice their waking lives in the service of a regular paycheck.  I also periodically get folks who write me to tell me that they were inspired to start a business.  Those emails are very motivational, particularly when they come from folks who are already successful.  (There are quite a few of them who have bigger businesses than me now -- and I'm very, very happy for them.)

 

Parag: Can any developer with a good idea, a good process for scalable content creation, and good execution, achieve success like you have achieved for Bingo Card Creator?

Patrick: I think that any developer can learn the skills they need to be successful running a software business.  Bingo Card Creator didn't start with a good idea, a process for scalable content creation, or good execution!  It started with the most minimal software and website that I could possibly bang out in a week.  I spent years trying X, Y, and Z prior to scalable content creation really making the business take off (for certain modest values of "take off").  Patience, willingness to learn, and a capacity for experimentation will eventually lead to success in this business.  Running a business is both harder and much easier than people think it is: there are an awful lot of moving parts in the system, but programming is about understanding systems which are orders of magnitude more complicated than a small business.
?

Parag: What would be your advise to software developers who wish to create their own microISV ?

Patrick: Launch.  Do the simplest possible thing, but launch.  Release software below your usual level of quality, but launch.  Get laughed at, but launch.  Be afraid, but launch.  The single biggest thing that prevents people I know from becoming software entrepreneurs is that they express the desire to eventually do it, but they do not ship software.  Shipping software -- writing it and then charging real people money for it -- defines software businesses.  Stop making excuses and get it done.


Thank you Patrick for giving us your time and valuable advise. I am going to repeat the last line you said, because it is so very important ‘stop making excuses and get it done’. Dear reader, if Patrick has inspired you to create your own microISV, then - don’t just sit on your thoughts - get it done.

Patrick, thank you once again, and we wish you and Bingo Card Creator lots of luck and continued success.?