Eco-Efficiency in Policy Analytics for Program Management

April 5th, 2021 by dayat No comments »

Although many people might see protection of IP as being counter to the ideal of a university’s mission to educate, nothing can be farther from the goal or truth of IP protection. Protection does not mean that others do not learn about the invention or discovery, it simply does allow the developer or inventor to retain the right to generate products from the invention. Additionally, because patents require a full written description of the technology, a patent is DESIGNED to advance the body of knowledge for us all. (Rondelli, 2014)

San Diego State University is closely tied to its community internally as a program manager and fund generating force as well as externally being a steward for broad community development and investment in the local environment.

The Technology Transfer program that has most bearing on San Diego State University’s environmental community is the partnership with the State of California’s Energy Commission Energy Innovations Small Grant Program.

The Energy Innovations Small Grant (EISG) Program provides up to $95,000 for hardware projects and $50,000 for modeling projects to small businesses, non-profits, individuals and academic institutions to conduct research that establishes the feasibility of new, innovative energy concepts. Research projects must target one of the PIER R&D areas, address a California energy problem, and provide a potential benefit to California electric and natural gas ratepayers. (Energy Innovations Small Grant Program, 2014)

This program is administered by Frank H. Steensnaes and is run from the San Diego State University Research Foundation’s office located at 6495 Alvarado Ct. Suite 103, San Diego, California 92182. The far-reaching effects of this program impact many academic institutions, private commercial enterprises, and civil organizations. The delivery of this program has influenced the energy and financial markets in California and throughout the country. To facilitate understanding of the regional environmental ecosystem surrounding San Diego State University, it is crucial for us to consider the broader sustainability perspective of the institution. San Diego State is dedicated to the delivery of social, ecological, and economic growth for it community and students.


Defining Sustainability

“In today’s world, the energy we use and the ways we use it are changing. For California to make the leap from the status quo to achieving climate and energy goals at the lowest possible cost, we need much more energy innovation” (Energy Innovations Small Grant Program, 2014). It is from this premise that the need to create a framework to provide program management that also adheres to eco-efficiency principles must manifest. This framework promises leadership in structure and outcomes, it also offers a paradigm for stewardship in business relationships so collaboration can move forward. It will be crucial that every step of innovation stake its inherent value to society by seamlessly adhering to social, ecological, and economic parameters.

Sustainability can be defined in terms of eco-efficiency. “In simplest terms, it means creating more goods and services with ever less use of resources, waste and pollution” (Development, 2000). By defining sustainability in this manner, we see the integration of people, planet, and profit into a workable framework. The need to provide a prescriptive methodology for adherence to specific goals and desired outcomes becomes a focal point not only for the Technology Transfer program, but also to my organization in harmonizing efforts to report and commercialize innovations.


In order to manifest our desired ending, we must first understand the state of the outcome before rushing to obtain that conclusion. The Research Foundation Technology Transfer program envisions a state of being that produces academic projects with economic value. The ability to foster innovation into real-world applications is the desired outcome. With unbridled capacity to assist students, faculty, and the community into gratifying and rewarding ventures, it is possible to provide the nurturing and profitable environments so many seek when pursuing higher education. San Diego State University is in the business of research, scholarship, and creativity. The execution of programs is measured in continued success as well as in deeper penetration into the local, national, and international arenas. Only by defining the ideal situation for the program can we begin outlining the steps in order to accomplishment. This top down approach works in many ways. The main benefit, of course, is the ability to empower participants to pursue more freedom and creativity.

By first defining the desired outcome, we can best serve the participants. Eco-efficiency promotes the concept of minimizing exploitation of scarce resources. It also examines the synergy of the built environment with the natural environment. Lastly, eco-efficiency mandates that increased economic, environmental, and equity can be monetized. By understanding lifecycle and intrinsic principles on embodied value, it is possible to reach the anticipated goals of the program. “Establishing framework conditions which foster innovation and transparency and which allow sharing responsibility among stakeholders will amplify eco-efficiency for the entire economy and deliver progress toward sustainability” (2000). By avoiding the deliberate sanctioning of paralysis by analysis, we seek to execute vision and not toil over procedure.


The manifestation of eco-efficiency in program delivery is an innovative solution to unexplored opportunities in the field. “Eco-efficiency is not limited simply to making incremental efficiency improvements in existing practices and habits. That is much too narrow a view. On the contrary, eco-efficiency should stimulate creativity and innovation in the search for new ways of doing things” (2000). In order to view the constraints of adoption of eco-efficiency, we will examine Michael Ben-Eli’s five fundamental domains for sustainable development. The five domains (Ben-Eli, 2014) are:

The Material Domain: Constitutes the basis for regulating the flow of materials and energy that underlie existence.
The Economic Domain: Provides a guiding framework for creating and managing wealth.
The Domain of Life: Provides the basis for appropriate behavior in the biosphere.
The Social Domain: Provides the basis for social interactions.
The Spiritual Domain: Identifies the necessary attitudinal orientation and provides the basis for a universal code of ethics.
It is crucial at this stage to follow Ben-Eli’s framework to ensure complicity with the underlying inherent principles of sustainability as describes in the five domains.
Domain One: The Material Domain

The intent of the first domain is to examine the use of eco-efficiency in terms of resources. Eco-efficiency “is not limited to achieving relative improvements in a company s use of resources and its prevention of pollution. It is much more about innovation and the need for change toward functional needs and service intensity, to contribute to de-coupling growth from resources” (2000). As the Technology Transfer program redefines its policies of its relationship with resource orientation, it can begin by measuring the consumption of not only its operations but also the embodied energy and matter in the delivery of its program. This examination of the flow of resources is comprehensive, but considerate of the many stakeholders and functions it actually serves.

Domain Two: The Economic Domain

In this next domain, we ask ourselves the question of bio-spheric pricing and business rationale for incorporating the eco-efficiency parameters of sustainability in the program environment. “The business case for eco-efficiency applies to every area of activity within a company – from eliminating risks and finding additional savings through to identifying opportunities and realizing them in the marketplace” (2000). This is a vital area of opportunity for the program. In what metrics can the true value of its efforts be accounted? Will a redefining of success be needed or will its stated objectives of commercializing academic projects suffice? Will the private sector permit the augmentation and redefining of economic value in its dealings with the institution? It would behoove both institutions to garner more of the true value not only in one-off interactions but also in long-term support for initiatives whether large financial rewards are part of the project. The ability to create such metrics would facilitate the recognition of this domain.

Domain Three: The Domain of Life

It is of particular importance to define the parameters of this domain. How could such a program exist if the value of all forms of life were sacrificed for material gain? Diversity is the desired outcome for the program. It requires little work to understand the power and influence that this program may have on people. When considering how to define measuring these values, it becomes a more difficult task.

The following chart reveals the correlation of economic value, quality of life, and environmental impact:

Governmental Measures and Objectives (2000, p. 25)

“Our argument is that, by adopting eco-efficient practices, it is possible to decouple these trends so that, as the dotted lines show, the economy and quality of life continue to rise while resource use and pollution fall away. Indeed, by reducing the pressure on natural resources and the environment we will actually magnify the improvement in the quality of life” (2000). This program has the real ability impact lives and should-as part of its purview consider how the monetization of academic projects not only will affect its institution, but also consider the impacts to its participants. Not only will this understanding help divert monies and resources where the really need to be, but perhaps help it the technical assistance its participants receive. This consideration also promotes the diversity the school mandates.

Domain Four: The Social Domain

The fourth domain helps expand the role and purpose of the program. By incorporating policy that ensures its participants are tolerant, believe in fundamental truths, practice inclusion, and scholarship, the program moves closer to realizing its real purpose. “All these thoughts reinforce the still fragile idea that open processes, responsive structures, plurality of expression, and the equality of all individuals ought to constitute the corner-stones of social life” (2014). When considering the existing body of work from the program, it becomes clear that no such opus is demanded or required. It would assist in the ascertainment of true value to explore this concept of personal value systems for proper alignment. Eco-efficiency describes, “In several economic sectors, considerable costs caused by environmental pollution and social damage are still not included in the price of goods and services. Until this is changed, the market will continue to send wrong signals and polluters will have no incentive to change and adapt the performance of their products and processes” (2000). Of all five domains, the opportunity for most substantive traction can occur here. By thinking more holistically about the metrics of reporting, the Technology Transfer program could make headway by implementing solution in this domain.

Domain Five: The Spiritual Domain

This last domain entails the reconciliation of love in the workplace. Oft seen as disparate concepts with zero chance of coexistence, we must find some broader universal label to encompass the idea. The concept of servant leadership can be viewed as a solution. Barbuto and Wheeler in their journal article Scale Development and Construct Clarification of Servant Leader reflect that, “The integration of servant leadership principles in practice has less to do with directing other people and more to do with serving their needs and in fostering the use of shared power in an effort to enhance effectiveness in the professional role” (2006, p. 425). Empathy is defined as “the intellectual identification with or vicarious experiencing of the feelings, thoughts, or attitudes of another” (, 2014). A real opportunity exists to affect the spiritual being of the participants of the program. It would not need to a procedural policy but a social one. Servant leaders are more likely to be involved in a functional two-way transmission of energy and data. Not only do desired outcomes become more focused based on communication, but also the real success can then be measured in personal growth and actualization.


As defined earlier, eco-efficiency promises leadership in structure and outcomes, it also offers a paradigm for stewardship in business relationships so collaboration can move forward. In terms of the program level examination, I have designed the following eco-efficient outcomes:

Use participant feedback and historic data to establish a decoupling point between the program participants and the program administrators for modification or enhancement to the EISGTTP/PIER.
Ascertain the criticality of sustainable practices within program delivery beyond funding mechanism into nontraditional economic evaluation
Several fundamental issues will be examined including the parameters of the change necessary to achieve stated program goals such as commercialization Outcomes and advancement of technology. We move from those goals to the reality of the outcomes, which measures the expansion of knowledge. This comparison would be deficient without consideration of secondary issues such as the recommendations to shape a more fulfilling program experience. Three layers of recommendations will be designed. The first layer consists of programmatic recommendations. The second layer is of non-programmatic recommendations. Lastly, we must include strategic recommendations to ensure the expansion of the accumulated body of knowledge.
I am undertaking a nine-step methodology in performing the examination for the program. The first step involves collecting technical data from the previous 13 years of the program. The next step will be to validate the data. Third step involves developing and stating a problem statement. The forth step involves conducting a root cause analysis. The fifth step involves correlating the data to the mission and vision of the program. The sixth step involves developing a corrective action plan (CAP) to mitigate, eliminate, or offset any discrepancies in the program. The seventh step analyzes the impacts of such recommendations. The eighth step involves coordinating stakeholders to share findings and receive feedback. The last step is to create a monitoring and reporting mechanism to introduce the traceability of future interactions with their clients.

In my definition of Ben-Eli’s systems thinking and cybernetics, it is clear that one must consider external and internal environment interactions in systems or grouping of systems called networks. From this point, we must consider the “regulation, adaption, and evolution” of response as defined by cybernetics to understand the relationship of first order/stagnation or and second order metabolism/diffusion of change with either open loops or closed loops of feedback. With first order change, the response only manifests itself on a combination of five possible dimensions: material, economic, domain of life, social, and spiritual (Ben-Eli, The Cybernetics of Sustainability:Definition and Underlying Principles, 2012).

As I reflect on the five dimensions, it becomes possible to implement plan of action for the overall examination of the program. Dimension 1 asks us to consider the material impacts of the program. The second dimension looks at human development in economic analysis, which is particularly salient in discovering one of the implementation designs of viewing program and individual success in terms beyond traditional financial metrics. The third dimension ensures diversity and connectedness in sustainable development. The fourth dimension seeks liberation of the individual from a global perspective. Last, the fifth dimension asks us to link spiritually in the actions of the program.

The communication process in examining the program for eco-efficiency involves a complete stakeholder analysis including a specific metric for social impact. In traditional program management, a stakeholder is anyone who can affect or can influence the program’s success or failure. The benefits of a clear communication plan include items such as management of uncertainty, scope, and change. When moving beyond the traditional definition of stakeholder, we seek the feedback of the community. As Edwards stated, “The Sustainability and Community principles encompass all the Three Es (ecology, economy, and equity) because they grapple with difficult problems whose long-term solutions require a systemic approach” (2010, p. 29).

The next issue to consider is the amount of education or training required to install a program-wide expectation of continuous learning. This issue is critical since as Orr told us, “Even if humans were able to learn more rapidly, the application of fast knowledge generates complicated problems much faster than we identify them and respond” (2011, p. 282). The institution of a set of best practices mandating a constant appraisal of worldviews while extending program benefits into long-term outcomes.

For guidance in the framework, we can seek guidance from a myriad of sources. One such resource is found in the data generated from other Program audits, reviews, and detailed annual reports of various technology university transfer offices, such as the Performance Audit of the Arizona’s Universities by the Arizona Office of the Auditor General, Report 08-02, May, 2008 and the Report of the Purdue University Office of Technology Commercialization, 2010. It is fundamental to use parametric information derived from experiences. By leveraging the compiled information, knowledge can then be extracted as best practices.

In the final structure of program examination, the importance of conveying the recommendations must be created. “To change the system so that it is sustainable and manageable” (2004, p. 3048), it is imperative to coalesce efforts of reduce redundancies while adhering to founding principles not of just the program but also to the tenants of eco-efficiency and sustainable development at large. With no procedural instruction, the malaise inherent to the human condition may diminish the productivity of environmental, economic, and social well-being of program participants. This task provides the prescriptive framework forward.


Time is of the essence. Let us focus on a deeper understanding of purpose and outcomes as the EISGTTP program manifests itself into a true value-bearing conduit. Overall, by acknowledging the constraint on resources, the possible monetization of non-traditional metrics, and focusing on people, we can create a better program. The level of change could systemically unfold by constantly seeking input from the external environment and just the internal view perpetually held in terms of success or failure. The program presents an opportunity to meld many desirable elements: technology, sustainability, and people.


About Us. (2014, May 18). Retrieved from San Diego State University Research Foundation:

Barbuto, J., & Wheeler, D. W. (2006). Scale Development and Construct Clarification of Servant Leadership. Group and Organizational Management, 300-326.

Ben-Eli, M. (2009). The cybewrnetics of crisis and the challenge of sustainability. Cwarel Isaf Forum (pp. 1-13). St Gallen: The Suatainability Lab.

Ben-Eli, M. (2012). The Cybernetics of Sustainability:Definition and Underlying Principles. In M. Ben-Eli, Enough for all forever (pp. 1-18). New York: Common Ground.

Ben-Eli, M. (2014, July 03). Sustainability: The Five Core Principles. Retrieved from The Sustainability Laboratories:

Capra, F. (Director). (2007). The Systems View of Life [Motion Picture].

Development, W. B. (2000, July 4). Eco-efficiency: creating more value with less impact. Washington DC: World Business Council for Sustainable Development. Retrieved from World Business Council for Sustainable Development. (2014, July 3). Retrieved from

EarthOutreach (Director). (2010). Coping with Climate Change [Motion Picture].

Edwards, A. (2010). The sustainability revolution: Portrait of a paradigm shift (7th ed.). Gabriola Island, BC: New Society Publishers.

Energy Innovations Small Grant Program. (2014, May 18). Retrieved from California Energy Commission:

Greenleaf, R. (1977). A Journey into the nature of legitimate power and greatness. In R. Greenleaf, Servant Leadership (pp. 7-48). New York: Paulist Press.

Johnson, C. (2012). Meeting the Ethical Challenges of Leadership: Casting Light or Shadow. Thousand aks: Sage Publications.

Meadows, D., Randers, J., & Meadows, D. (2004). Limits to growth: the 30-year update (1st ed.). Vermont: Chelsea Green Publishing Company.

Neill, M. H., p, & Peterson, T. (2007). Student’s perceptions of the interprofessional team in practice throught the application of servant leadership principles. Journal of Interprofessional Care, 425-432.

Orr, D. (2011). Hope is an imperative: The essential David Orr. Washington D.C.: Island Press.

Rondelli, M. (2014, May 18). About Us. Retrieved from Technology Transfer

Taylor, T., Martin, B., Hutchinson, S., & Jinks, M. (2007). Examination of leadership practices of principals identified as servant leaders. International Journal of Leadership in Education, 410-419.

Michael Vargas, Founder, and Principal of Atlas Project Support is an expert in cost engineering best practices and Green Building approaches. Michael has over 12 years of construction experience and project management insight, and has proven experience in highly technical and sophisticated management systems. Mr. Vargas has earned a Masters in Business Administration, a Masters in Project Management, and a Graduate Certificate in Financial Analysis from the Keller Graduate School of Management. He has also completed a Bachelors of Science in Business Administration in Management from San Diego State University and is currently a Doctoral of Education candidate at Creighton University. Michael’s academic endeavors ma

How to Learn Your First Programming Language

March 5th, 2021 by dayat No comments »


Programming is a very useful and rewarding hobby. There are few better feelings than when someone sees you using a program you lashed together to make your life easier and says that it looks really useful. Most people have, at some point in their lives, really wanted to be able to do something on their computer or phone and been unable to. If you know a programming language, then there is often a fair chance that you can write a program to accomplish that task yourself. While there are a huge number of programming languages, many of them have a lot of similarities; this means that once you learn one language quite well, in most cases you will be able to pick up a new one far quicker.


One thing that all new programmers must come to term with is the amount of time learning a programming language takes. Although when you have become an expert you will be able to write many programs quickly, you must remember that many programs have taken whole teams of expert developers years to create. So it is important to understand that knowing a programming language or even several is not enough to write some of the more complex programs you have seen. Don’t look upon this new hobby as a way to save yourself a lot of money, as writing your own version of most of the programs that you need to pay for now will be out of your reach.

The most important thing that a new programmer needs to know is that the “Learn Programming in 24 hours” sort of books are simply not true. A more accurate title would be “Learn Programming in 10,000 hours”. If you put 24 hours or a week into learning a language you will not be creating the next Windows or a new, state of the art game. It is possible to learn to write a program in 10 minutes, and really all you need to learn a new language is your favourite search engine, but you will not be an expert. The only way to become an expert is much like learning the violin; the answer is practice, practice and practice some more.

Selecting Your First Language

Now that we have examined the limitations and handled some of the more unrealistic expectations, those of you still wanting to learn to code will be happy to know that programming is not a hard thing to start learning and will not require you to pay out huge sums of money. If you are reading this article on-line, you already have the resources to start with some languages, so let us consider what your first language ought to be.

Traditionally the first language a programming newcomer learns is either Visual Basic or Python. The first thing to understand is that these two languages are very different. The simplest difference is one of price. Python is totally free; you can start writing python now with just a text editor on your computer, though if you are on Windows, you will probably need to install it first. However Visual Basic, often abbreviated to VB, is both free and not free. On the upside, VB can be simpler for newcomers to learn because it allows you to build the interfaces (the part of the program the user will see) by dragging and dropping the different parts much like designing it in some basic art application. The version of VB newcomers learn is usually Visual Basic 6, but this is rather outdated and has been discontinued. So these days the version learned is often VB.NET which can be considerably less simple for newcomers.

VB.NET must be developed inside what we call an IDE (Integrated Development Environment); this is basically a special program you use to write other programs. They also exist for Python, but their use is totally optional. The free VB.NET IDE is called Visual Studio Express. At the time of writing, the latest version is Visual Studio Express 2010. Unfortunately, by using the free version of the IDE you are restricted with what you can do, and any programs you create cannot be commercially sold on. Regretfully, the full paid version of the IDE is not cheap, and probably not appropriate for a hobbyist, but fortunately to learn VB the free version is enough. In practice, very few commercial programs are developed in VB these days, but the Visual Studio IDE allows you to use many other languages. The familiarity you will develop by using it will also allow you to use the power of the IDE for development in many other languages. Some will argue that almost every language can be developed in a text editor and that they are by far the most flexible way in which to code. While this is technically true (and I do suggest trying development in a text editor to compare once you get a little better), I would strongly advise learning your first language with a proper IDE.

While traditionally, people learn Python or VB first and these are generally what is taught at schools, I would not suggest either of these. I am of the opinion that your first language should continue to be useful to you one it has served the purpose of helping you learn the fundamentals of programming. If I had to recommend one of these for newcomers, it would be VB.NET as often the most complex part of programming is the graphical side of things and in VB.NET this is very simple due to the drag and drop interface. These two languages are often used as introductions as they are very tolerant of mistakes, and allow you to become confident in programming principles without worrying about a lot of the more complex matters.

For those brave souls among you, I would actually suggest Java as your first language, even though it can be complex, and is therefore not a common choice for a first language. Java programs are different to most others in that they do not run on your computer. The user downloads Java, then your code runs on what is called a VM (Virtual Machine). This means that your code runs in a special place Java sets up for it – a fake copy of your computer – and handles the translation of this to the real machine for you. This means that Java programs are “cross-platform”, meaning that they will for the most part run on Windows, Mac, Linux and most other operating systems.

Java is a good language to learn, as it is very widespread and useful. Furthermore, it is very powerful, and is available for free for both hobbyists and commercial uses. However, in contrast to VB and Python, it does not tolerate mistakes and requires you to be very specific about everything. It is also an object-oriented programming language, which is a very complex issue which I will briefly try to summarise. Languages like Python and VB are what is known as procedural languages, meaning that the lines of code are run one after another, whereas Java is an object-oriented language. object-oriented development is a term thrown around a lot these days in the programming world, and while not always appropriate it is generally considered a good idea. At the most basic level, an object-oriented program is all about objects. An object is an “instantiation” of a “class”. A class is a blueprint used to describe something like a cat. The class contains both the data about the cat such as its name, age and owner as well as “methods” which are essentially actions the cat can perform, such as miaow. An instance of the class “cat” would give you a particular cat. However, this is not a Java tutorial, so if you are brave enough to experiment with Java you will come across this yourself in more detail. It is worth noting that VB.NET and Python both have support for object-oriented development, and Java has the potential to be used procedurally, but these are not the languages’ primary intended uses and are not often used. If you did not understand that comparison, don’t worry about it too much. Object orientation is hard to get your head around, but any basic Java or other object-oriented language tutorial will have you understanding everything in that paragraph.

A final reason Java is a good first language is that it is similar in many ways to Javascript, which is an entirely different class of language. Javascript is a scripting language (as is Python), and learning Java will mean you understand Javascript reasonably well. The difference is between scripting languages and normal programming languages is outside the scope of this article, but as a large generalisation scripts are generally used for automated tasks while programs are used interactively by users. This is not totally true, as both types of language are used for both tasks and most web programs are built in Javascript.

As for the actual language you pick, it is entirely up to you. Some may choose the traditional beginner languages or be brave and experiment with Java. Some of you may already have your eye on a language or fancy one of the more specialist languages like Scheme or Prolog. Whatever your choice, the way you will learn how to program is the same.

IDEs, Yes or No?

Many of the purists say that IDEs are a bad idea, and are packed with unnecessary tools and menus that take up disk space and time to learn. While this is true, I feel that an IDE is definitely worthwhile. Many people offer free IDEs, such as Eclipse and Netbeans, for the more popular languages. There is also Visual Studio, which I mentioned previously; it is very intuitive, very powerful and it supports many languages (much as Netbeans and Eclipse do). If you chose to use Java I would suggest Netbeans, as there is a packaged version of Netbeans with the JDK (Java Development Kit). Most languages need an SDK (Software Development Kit) to work with them, and getting it installed properly and linked to the IDE is often the hardest part of the procedure. Visual Studio already comes with the development kits set up, which makes life easier, but other languages like Java and Python can be quite hard to set up properly. This is why I suggested the Netbeans + JDK bundle for those experimenting with Java, as it handles the complex set up for you, which will save you hours of suffering.

There are, in my opinion, three major advantages to using a fully featured IDE. Firstly, they are usually extensible, meaning that there are many free plug-ins that could make your life a lot easier when you get a little more advanced. Secondly, and most importantly, is the ease with which an IDE allows you to debug your code. Most IDEs let you set breakpoints in the code, which will make the program stop when it gets to that point and let you step through it line by line, so you can examine the contents of all the variables at any time. (For those of you who do not know what a variable is, I will briefly explain. A variable is a bit like a train station locker. You ask for one big enough to hold what you want to store, and if what you want to store is the right shape, it can be stored there. When you write a program, any data you want to store temporarily will be held in one of these until you are done with it.) As the old programming saying goes, if you have not found any bugs, you are not looking hard enough. Almost no non-trivial program will work first time, and trying to work out where the problem lies without the use of a debugger is a pain I would not wish on anyone. Finally, an IDE will often give you advice on how to fix issues in the code. This can be very useful for fixing bugs, and saves you having to resort to Google every other minute.

Learning the Language

Now that you have a language and an IDE, it is finally time to learn the language. This, as you may or may not be surprised to learn, is not complex at all – it is simply time consuming. To learn programming for the first time, there is no better way than exploration. Buying a book that walks you through steps will not teach you anything, as you will not understand the reasoning behind what they are doing, and people often get disheartened by the tedium.

The key to learning programming is to have a goal. Think of a task, such as a system to keep track of where you are in all the various TV shows you watch, or a system to let you look at all the books you own in a particular category, or, if you feel brave, try to replicate part of something that you use on a regular basis. My advice would be to start small, perhaps by making a sequence of message boxes that insults the user or a really simple calculator. It is important when you first start that your goals are interesting, challenging and entertaining. If you try to make really boring programs you will quickly get disheartened, so try to inject some comedy into your program. The calculator is a very good introductory program, but after you get the general idea it is important to set quite ambitious goals, as if you keep doing simple things you will never learn anything new. It is important to try to incorporate some of the knowledge you have gained from previous work. One of the reasons most books fail to teach programming well is that they use small examples for each thing they introduce, whereas what you really need to do is plan the task without considering what you will need to accomplish it. This means you will be able to code some of it using what you already know, but most importantly, you will not know how to code some of it. The best way to learn is to learn by doing. Go for a full program that does a task you wanted to do on a computer in the past, work on it, and when you are finished you will have learned a lot and you will have a useful (or at least entertaining) program which is far better than some toy program demonstrating lists.

I have said that you learn by choosing to do projects where you are unable to do certain sections, thus requiring you to learn, but how do you go about finding out how to do them? It’s simple, and most likely the way you found this article. Go to your favourite search engine (like Google) and search for what you want to do – for example, search “drop down list Java” to find some examples of using drop down lists in Java. Because you will need it for another task, and not just to re-do the same thing the examples did, you will have to play with the examples you find and try to get them to do what you want. Just search each bit you need, and before long you will find that most of the basics are as natural as waking up in the morning, and you did it all without spending a small fortune on books, without getting bored and hopefully while being entertained. To this day, if I am bored, I sometimes break out one of my very first programs which is just a list of boxes and a random number generator. It is your task to try to fill all the boxes such that the numbers the random number generator gives you are in ascending order – if you don’t leave space and can’t fit a number in a hole then you lose and must start again. It’s a simple program, but it took a lot of work when I first made it and I learned a lot from the experience.

Once you have a few decent sized programs under your belt, you will find that you know the language well. You will also find that it is rare, no matter how well you know a language, to be able to write a program without resorting to Google at least once just to check something. So with that in mind, it could be argued that you learned the language without ever actually trying to learn it. Clearly there are standards and good practices that you may not pick up on your own, but as you see more examples and read the comments you will find you adopt your own standards rather rapidly.

Learning Another Language

Once you have learned one language, whatever it may be, the most valuable thing you will have learned is all the key words for searches. When you want to do something in a new language, you need only search what you want to do and the language name. However, by now you will know the names used to refer to what you want to do, allowing your searches to be more effective and yield examples and answers much more quickly. As the fundamentals of programming are mostly the same, regardless of the language you use, you will hopefully be able to guess at the meaning of most of the code much more effectively once you locate an example, allowing you to pick up most of the language very quickly indeed.


If you take nothing else away from this article, remember that the best way to learn a skill is practice, practice and practice some more, so don’t expect to become an expert overnight. Remember that programming is not something that can be learned overnight, and that to become a passable expert you probably need to spend at least 10,000 hours programming, so you will need to find ways to remain motivated. Don’t think of it as learning to program – rather, just start programming, and before you know it you will be an expert. Programming is a skill, and while it is quite simple once you have the feel of it, it can be quite daunting to see your little calculator that took you a week and then to consider a modern game like “Batman: Arkham City” and realise how far you have to go.