A Deep Learning AI Routine learns how to Code

AI

The end of April is nigh, which means another edition of our software development news digest. These intriguing stories hopefully provide a measure of insight to your own application engineering efforts. If interested in checking out last month’s digest, just click on the following link. Thanks for reading!

A Deep Learning AI Routine learns how to Code

AI and machine learning continue to make an impact throughout the technology industry. These innovations are found in everything from data analysis to self-driving automobiles. In a similar matter as with robotics, some professionals wonder if their jobs are going to be taken over by a computer in the next decade.

Recently a team at Rice University developed a deep learning routine actually able to write some code. The good news for current developers is the prime directive for this AI application involves helping software engineers more easily handle interfacing with poorly documented APIs. News about this AI innovation appeared earlier this week at Tech Xplore.

The application – called Bayou – performs a deep analysis of APIs in online source code repositories, like GitHub and others, attempting to learn about the API’s usage idioms. The application is focused on the Java language at this time. Swarat Chaudhuri, associate professor of computer science at Rice and one of the creators of Bayou, commented on the tool’s genesis.

“People have tried for 60 years to build systems that can write code, but the problem is that these methods aren’t that good with ambiguity. You usually need to give a lot of details about what the target program does, and writing down these details can be as much work as just writing the code. Bayou is a considerable improvement. A developer can give Bayou a very small amount of information—just a few keywords or prompts, really—and Bayou will try to read the programmer’s mind and predict the program they want,” said Chaudhuri.

Most notably, it analyzed millions of lines of Java code as part of its self-training process. If you want to try the application for your own purposes, just simply ask Bayou.

Fannie Mae makes Software more Secure with Lean

We’ve previously talked about the Lean methodology. Considered a variant of Agile, Lean actually grew out of the manufacturing world in an attempt to make operational processes more efficient. Now, mortgage lender Fannie Mae is leveraging Lean to make its software development process faster and more secure. News about their efforts appeared this week in CSO.

Since implementing Lean in 2013, Fannie Mae’s development cycle decreased by half. Working more efficiently allowed the software engineering team to subsequently make their applications safer from hackers and other nefarious agents. They also saved hundreds of millions of dollars over that time, according to company VP, Michael Garcia.

Writing safer code from the beginning is a core principle of Lean applied to software engineering. Other Agile techniques, like smaller increments and faster testing, improve overall efficiency. The company explored applying the principles Six Sigma to their development process, but ultimately felt Lean made a better fit.

Lean is definitely an Agile variant worthy of evaluation for larger software development shops. A more efficient process simply brings many advantages, including more secure applications and an increase in business value. Dive into the CSO article for a further exploration of the use of Lean at Fannie Mae.

Stay tuned to the Betica Blog for additional news and insights from the constantly evolving world of software development.

Improving your Agile Standup Meetings

Meetings and communication in general are essential aspects of any Agile process. The number of get-togethers probably depends on your organization’s choice of Agile framework, but some form of daily standup is likely. Making those standup meetings more valuable and efficient adds to the efficacy of any software development project.

Given that Agile is supposed to make software engineering faster, here is a unique idea for improving those Agile standup meetings. Consider this bit of insight to ensure your next development effort is completed on time and under budget.

Improv makes your Software Development Meetings more Valuable

In an article for SD Times, Madison Moore describes how improv – used in a fashion similar to a comedy troupe – offers the potential to make daily Agile meetings more rewarding. Wayde Stallmann, who works in the software development industry as an Agile coach, devised the practice to improve the productivity and collaboration level of meetings. Stallmann feels using these improv techniques during meetings – both standups and scaled retrospectives – enhances four vital Agile qualities: collaboration, trust, creativity, and communication.

Starting off each meeting with an improv activity lasting a few minutes helps get everyone’s attention focused on the task at hand. “In the first few minutes, everyone talks and has equal voice. No one dominates the game which sets the tone that no one dominates the meeting,” said Stallmann. Once again, the focus is on fostering collaboration among a team of equals.

Some of these gaming activities serve well to fire up the brain – useful for standups occurring first thing in the morning. The Alphabet Conversation is one such example. One person starts a conversion using a sentence beginning with the letter “A;” followed by the next person with “B,” and so on.

While some may feel activities like the Alphabet Conversation seem like a waste of time, Stallmann finds tangible value in the exercise. “We get into the aspect of how a team can solve a problem that no one individually can solve,” said Stallmann. He’s encountered skeptics throughout his coaching activities, but maintains everyone eventually sees the light after they try out the process.

Creating Agile Team Players

The most important benefit derived from improv activities at the beginning of meetings isn’t making software development faster; instead these efforts teach everyone on an Agile project how to be a better team player. Companies eventually see a benefit from what first seems like an unintuitive exercise. “When I was with AT&T as a Scrum Master, I had a team where we did a three-minute warmup game to start each standup, and we did this for two years straight. They did it for a year after I left the team, which I think is testament to the fact that it wasn’t because I was asking them to do it,” said Stallman.

If your team’s morning standups seem like wasteful drudgery, consider leveraging Stallman’s improv gaming techniques. If it works for AT&T, it just may make a difference for your development staff. Getting their minds focused on the gaming activity to start helps keep their attention during the rest of the meeting.

When you need additional insights on the software development process, keep coming back to the Betica Blog. As always, thanks for checking us out!

Scrum, Lean, Kanban – An Analysis of Agile Frameworks

As Agile continues to mature as a methodology – forged in the fires of real-world software development projects – a variety of Agile frameworks have emerged. Three of these – Lean, Kanban, and Scrum – are arguably the most popular framework examples in the industry. One of these “flavors” may work best for your team, depending on how it builds applications or the specific needs of a particular project.

So lets take a closer look at the top Agile frameworks to help your development organization make a decision on which one fits best. Good luck!

Is it Time to join the Scrum?

Project management pundit, Moira Alexander compared the three popular Agile frameworks for CIO Magazine. We’ll summarize her take on each of them, starting with Scrum, which is beginning to be used in other industries beyond the software development world. Scrum is highlighted by its predefined roles and processes – one example being that the project manager (or facilitator) is referred to as the Scrum Master.

Scrum’s major focus – essentially like Agile itself – is the faster delivery of high quality software. Since project teams are largely expected to be self-organizing, the Scrum Master serves more as a facilitator compared to a traditional project manager. Sprints tend to be more formal, as is the framework itself, which makes it suitable for organizations used to the Waterfall, but wanting to explore a flavor of Agile.

The timeframes of sprints are also more formally defined; lasting anywhere from two to four weeks. Time spent on daily meetings is limited to 15 minutes. Changes to requirements within a sprint are discouraged.

Go Lean for a Waste-free Process

The Lean Agile framework saw its genesis in the manufacturing industry as an attempt to minimize any wasted efforts on a project, while also offering a learning opportunity to the members of the project team. Lean strives for overall systemic improvements while preserving the integrity of the process.

In most cases, Lean demands an even more formalized process than Scrum, making it another Agile framework worthy of consideration for shops coming from more structured and organized methodologies. One exception is the lack of a specific timespan for each sprint. There is also additional flexibility regarding meetings and change requests – they happen when necessary.

Kanban offers the most Flexibility

A framework relying on visual workflows to explain and define the development process, Kanban also provides more flexibility than either Scrum or Lean. Developed in the supply chain world, many software development shops now make it part of how they write code. It focuses on completing the tasks within a project while always striving to improve the underlying processes.

Since Kanban teams are extremely self-organizing, a managerial role isn’t always necessary. There is also a high level of flexibility when it comes to project timelines, the scheduling of meetings, and change control. In short, whatever keeps the project moving forward and the process continuously improving is fair game.

This high level view of the most popular Agile frameworks offers a measure of insight on which one would work best at your shop. Be sure to consider the history and experience level of your development team in addition to your goals for the future.

Stay tuned to the Betica Blog for additional insights and ideas from the evolving world of software development. Thanks for reading!