Posts about software engineering

Votizen is Looking for Software Engineers

Engineering Job at Votizen
View more presentations from Votizen

A nice presentation on why software engineers should work at Votizen.

Related: How To Become A Software Engineer/ProgrammerThe Software Developer Labor MarketWant to be a Computer Game Programmer?IT Talent Shortage, or Management Failure?

Google Summer of Code is Accepting Application Now

Google Summer of Code 2011 is accepting applications. This is a great initiative I have highlighted previously: Google Summer of Code 2009, Google Summer of Code 2008. The deadline for applications is April 8th.

Google Summer of Code is a program that offers student developers stipends to write code for various open source projects. The program has brought together over 4,500 students with over 300 open source projects, to create millions of lines of code. Participants (including students and mentors) have represented over 85 countries. The program, which kicked off in 2005, is now in its seventh year.

Participating organizations include: R Project for Statistical Computing, Debian Project, WordPress and the Marine Biological Laboratory. (9 of the 175 participating organizations list Ruby as part of their project :-) .

For 2010 the effort had a budget of $5,000,000 and accepted 1026 students partnering with 150 Open Source organizations. This year they plan on 1,150 – 1,200 student positions. For 2007 they had 6,200 applications and 7,000 in 2008. I don’t see any data on applicants for 2009.

As for the application it should include the following: your project proposal, why you’d like to execute on this particular project, and the reason you’re the best individual to do so. Your proposal should also include details of your academic, industry, and/or open source development experience, and other details as you see fit. An explanation of your development methodology is a good idea, as well.

Related: Engineering Majors Hold 8 of Top 10 Highest Paid MajorsHow To Become A Software Engineer/Programmerposts from my management blog on software development

Google Prediction API

This looks very cool.

The Prediction API enables access to Google’s machine learning algorithms to analyze your historic data and predict likely future outcomes. Upload your data to Google Storage for Developers, then use the Prediction API to make real-time decisions in your applications. The Prediction API implements supervised learning algorithms as a RESTful web service to let you leverage patterns in your data, providing more relevant information to your users. Run your predictions on Google’s infrastructure and scale effortlessly as your data grows in size and complexity.

Accessible from many platforms: Google App Engine, Apps Script (Google Spreadsheets), web & desktop apps, and command line.

The Prediction API supports CSV formatted training data, up to 100M in size. Numeric or unstructured text can be sent as input features, and discrete categories (up to a few hundred different ones) can be provided as output labels.

Uses:
Language identification
Customer sentiment analysis
Product recommendations & upsell opportunities
Diagnostics
Document and email classification

Related: The Second 5,000 Days of the WebRobot Independently Applies the Scientific MethodControlled Experiments for Software SolutionsStatistical Learning as the Ultimate Agile Development Tool by Peter Norvig

IBM Fellow Grady Booch on the Value of Engineering?

In this webcast IBM Fellow Grady Booch discusses the critical role engineering plays in moving society forward. And he explores the history of science and engineering. This interesting webcast would be a good video to show children, or anyone, to bring out the desire to study engineering and encourage them to study so they can join the many engineers shaping our world and our future.

Related: What is an Engineer?Engineer Tried to Save His Sister and Invented a Breakthrough Medical DeviceThe Engineer That Made Your Cat a PhotographerEngineers Should Follow Their Hearts

Low-Cost Multi-touch Whiteboard Using Wii Remote

Using infrared (IR) light pens and the Wii Remote, it is possible to create very low-cost multi-point interactive whiteboards and multi-point tablet displays. Johnny Chung Lee, Carnegie Mellon University. Download the software. Great stuff, it is wonderful to see what people can create with technology.

Related: Very Cool Wearable Computing Gadget from MITBuild Your Own Tabletop Interactive Multi-touch ComputerWhiteboard Mechanical Simulation System (from MIT)How Do Wii Game Controllers Work?

Controlled Experiments for Software Solutions

by Justin Hunter

Jeff Fry linked to a great webcast in Controlled Experiments To Test For Bugs In Our Mental Models.

I firmly believe that applied statistics-based experiments are under-appreciated by businesses (and, for that matter, business schools). Few people who understand them are as articulate and concise as Kohavi. Admittedly, I could be accused of being biased as: (a) I am the son of a prominent applied statistician and (b) I am the founder of a software testing tools company that uses applied statistics-based methods and algorithms to make our tool work.

Summary of the webcast, on Practical Guide to Controlled Experiments on the Web: Listen to Your Customers not to the HiPPO – a presentation by Ron Kohavi with Microsoft Research.

1:00 Amazon: in 2000, Greg Linden wanted to add recommendations in shopping cards during the check out process. The “HiPPO” (meaning the Highest Paid Person’s Opinion) was against it on the grounds that it would be a bad idea; recommendations would confuse and/or distract people. Amazon, a company with a good culture of experimentation, decided to run a small experiment anyway, “just to get the data” – It was wildly successful and is in widespread use today at Amazon and other firms.

3:00 Dr. Footcare example: Including a coupon code above the total price to be paid had a dramatic impact on abandonment rates.

4:00 “Was this answer useful?” Dramatic differences occur when Y/N is replaced with 5 Stars and whether an empty text box is initially shown with either (or whether it is triggered only after a user clicks to give their initial response)

6:00 Sewing machines: experimenting with a sales promotion strategy led to extremely counter-intuitive pricing choice

7:00 “We are really, really bad at understanding what is going to work with customers…”
Continue reading

Productivity Gains in Software Engineering

Great post: Productivity gains in software engineering are powering innovation

According to data from the U.S. Bureau of Labor Statistics, today’s business industry workers are on average 30% more productive than their 1998 counterparts (productivity growth of roughly 2.6% per year).

The most dramatic gains, however, have occurred within software development.

Software engineers today are about 200-400% more productive than software engineers were 10 years ago because of open source software, better programming tools, common libraries, easier access to information, better education, and other factors. This means that one engineer today can do what 3-5 people did in 1999!

In my 15 years of software development, I’ve seen 5x-10x productivity gains in engineers. Which could mean that the productivity of a well-trained engineer doubles every five years. (note that this Law is much harder to prove than Moore’s Law – but potentially just as profound). That would mean that the productivity of an engineer is growing at roughly 14.9% per year! That’s fast … really fast … much faster than the 2.6% yearly gains the population as a whole is making.

What do you think? I definitely see a huge improvement of productivity in web application software development myself.

Related: 10x Productivity Difference in Software DevelopmentIs Productivity Growth BadThe Software Developer Labor MarketMyths of Manufacturing Productivity

How To Become A Software Engineer/Programmer

How To Become A Software Engineer/Programmer

my advice for budding software engineers is this.

1) Know that you love software before you commit to it. You’ll know when you take your first pseudocode class: a clear division forms between the people who get it and the people who don’t. If you’re in the “don’t” section, choose another career.

2) If you don’t like teaching yourself new things, the skills you learn today will be irrelevant in less than a decade. Accept the commitment to learn throughout your career as a coder, or accept your eventual fate as a has-been.

3) College degrees matter less than hands-on knowledge and time spent at the keyboard. I outpaced my entire class in college because I bought my own programming books that deviated from the coursework, and as a result I learned things they were not teaching in school.

5) Early on, decide if you want to focus on application development or software engineering. Application development deals with making user interfaces, interfacing different systems together, solving business process problems, and exposing applications to the outside world (i.e. web services and other remoting techniques). Software engineering deals with creation of utilities and processes that support information processing, tends to be more math intensive, requires a lower-level understanding of the trade, and rarely deals with the systems that expose the software to an end user. There are core differences in these two disciplines and 100 shades in between, so figure out what you like.

Good blog post; those thinking of a career in software development should read the whole thing. By the way if you are a programmer already that loves it and looking for a new position: my work is hiring a Ruby on Rails developer.

Related: Joy in Work, Software DevelopmentThe Software Developer Labor MarketA Career in Computer ProgrammingThe Manager FAQIT Talent Shortage, or Management Failure?

The Software Developer Labor Market

With the economy today you don’t hear much of a desperate need for programmers. But Dr. Norman Matloff, Department of Computer Science, University of California at Davis, testimony to Congress (Presented April 21, 1998; updated December 9, 2002) on Debunking the Myth of a Desperate Software Labor Shortage is full of lots of interesting information (for current and past job markets).

The industry says that it will need H-1B visas temporarily, until more programmers can be trained. Is this true?

No, it’s false and dishonest… The industry has been using this “temporary need” stall tactic for years, ever since the H-1B law was enacted in 1990. In the early- and mid-1990s, for example, the industry kept saying that H-1Bs wouldn’t be needed after the laid-off defense programmers and engineers were retrained, but never carried out its promise. It hired those laid off in low-level jobs such as technician (which is all the retraining programs prepared them for), and hired H-1Bs for the programming and engineering work.

Unlike Dr. Matloff, and many readers of this blog, I am actually not a big opponent of H-1B visas. I believe we benefit more by allowing tech savy workers to work in the USA than we lose. I understand people fear jobs are being taken away, but I don’t believe it. I believe one of the reasons we maintain such a strong programming position is due to encouraging people to come to the USA to program.

I also do believe, there are abuses, under the current law, of companies playing games to say no-one can be found in the USA with the proper skills. And I believe those apposed to H-1B visas make reasonable arguments and this testimony is a good presentation of those arguments.

This obsession with specific skills is unwarranted. What counts is general programming talent – hiring smart people – not experience with specific software technologies.

Very true.

What developers should do.

Suppose you are currently using programming language X, but you see that X is beginning to go out of fashion, and a new language (or OS or platform, etc.) Y is just beginning to come on the scene. The term “just beginning” is crucial here; it means that Y is so new that there almost no one has work experience in it yet. At that point you should ask your current employer to assign you to a project which uses Y, and let you learn Y on the job. If your employer is not willing to do this, or does not have a project using Y, then find another employer who uses both X and Y, and thus who will be willing to hire you on the basis of your experience with X alone, since very few people have experience with Y yet.

Good advice.

Related: IT Talent Shortage, or Management Failure?Preparing Computer Science Students for JobsEngineering Graduates Again in Great Shape (May 2008)What Graduates Should Know About an IT Careerposts related to computer programming
Continue reading

Google Summer of Code 2009

Google Summer of Code is a global program that offers student developers stipends to write code for various open source software projects. Google funds the program with $4,500 for each student (and pays the mentor organization $500). Google works with several open source, free software, and technology-related groups to identify and fund projects over a three month period.

Since its inception in 2005, the program has provided opportunities for nearly 2500 students, from nearly 100 countries. Through Google Summer of Code, accepted student applicants are paired with a mentor or mentors from the participating projects, thus gaining exposure to real-world software development scenarios and the opportunity for employment in areas related to their academic pursuits. In turn, the participating projects are able to more easily identify and bring in new developers. Best of all, more source code is created and released for the use and benefit of all.

Google funded approximately 400 student projects in 2005, 600 in 2006, 900 in 2007 and 1125 in 2008 and will be funding approximately 1,000 student projects in 2009.

Applying for the program is only allowed from March 23rd through April 3rd. Still a short period of time but in previous years they have only taken them for one week. Organizations hosting students include: Creative Commons, MySQL, Debian, The Electronic Frontier Foundation/The Tor Project, haskell.org, Grameen Foundation USA, National Center for Supercomputing Applications, Ruby on Rails, Wikimedia Foundation and WordPress. See the full list of organizations and link to descriptions of the projects each organization offers.

See the externs.com internship directory (another curiouscat.com ltd. site) for more opportunities including those in science and engineering.

Related: Google Summer of Code Projects 2008posts on fellowships and scholarshipsLarry Page on How to Change the Worldcomic on programmersInterview of Steve Wozniak

Toyota Software Development for Partner Robots

Toyota Discusses Software Development for Partner Robots

Yamada: What was unique about the software development for the partner robots exhibited at Aichi Expo was the fact that Toyota entirely disposed of its assets from the past.

Toyota owned some software assets because it had been developing partner robots for some time before developing the robots for the exposition. But those assets were all one-offs. No one but the developers themselves could comprehend their architectures.

As Toyota was developing more than one partner robot for the exposition, the number of developers involved increased. Considering that we can never complete any development if we use the past assets that rely on an individual developer’s skill, we made everything, including the platform, from scratch again.

Toyota developed the platform focusing on promoting design review by visualizing the control logic. Therefore, the company thoroughly separated control sequences and algorithms. To be more specific, it used state transition diagrams.

Each algorithm is stored in a different block in a state transition diagram. With such diagrams, developers can easily comprehend the flow of the control and review the design even if they do not understand each algorithm. The company employed this method because each algorithm such as a bipedal walking algorithm is too complicated for anyone but their developers to understand it.

Related: Toyota Partner Robots (2006)Toyota Cultivating Engineering TalentToyota iUnit

  • Recent Comments:

    • Robert Jackson: How much do petroleum engineers with no experience start out with in Germany
    • Yasmeen: These are really terrible facts which are disturbing the balance of nature… but still people...
    • Ed: A very cool innovation indeed. It would be great if we had them in 15 years but with budget cuts and...
    • Limon Ahmed: The Animation is very nice and interesting. Thank you so much for showing us the way of How a...
    • Mae Picker: Very interesting animation, especially on the part where the virus reproduces itself to...
    • Timothy Matias: “for someone who is trying to talk about education, you seem to not understand that...
    • Jamaal Talsky: nice site…robots of the human or dog kind possibly first will come sooner than we...
    • Donnie: Hong Kong is a city in China…… The stupidity of my country continues to amaze me.
  • Recent Trackbacks:

  • Links