Software has become a key factor in the success or failure of a business. Every industry is going digital, and with most of the world already “plugged in,” their software needs to be fast, easy to use, bug free and useful. Development shops are the powerhouses to creating this software, but be successful, a developer’s job has to involve more than just code.
“Developers are responsible for taking clients’ wishes and making them come to life, taking users’ needs and coming up with a solution for them,” said Alyssa Nicoll, content developer at Code School.
Because software touches so many facets of a user’s life, just looking at it from a technology perspective is a recipe for failure; there are so many other things developers have to look at to make sure they get it right, according to Marc Anderson, cofounder and president of Sympraxis Consulting.
(Related: How evangelists get companies to engage users)
“It doesn’t work to have somebody toss you requirements and then you go away for six months to deliver something back,” he said. “It won’t be what they wanted, and it won’t be what they asked for.”
On top of writing code, developers have to juggle testing code, meeting business requirements, keeping up with new technologies, and making users happy. Here is what they should focus on in order to help the business and themselves become successful.
Their passions
This is an interesting time for developers. There are more software development jobs than there are developers, so they have an advantage when it comes to the job market. “In general, there is a lot of prosperity within the industry in terms of low unemployment and a lot of career choices,” said John Basso, cofounder and CIO of Amadeus Consulting. “Developers have a lot more choice now, and so they can align their job with what their passions are.”
According to Basso, the ability to align your passions with your career will not only help you become a better developer, but will also help you serve your business better and make the business more successful.
“You get into this rhythm of doing specifically what either the client needs, your boss needs or your business needs, but sometimes you have to take a step back and ask why you are writing that code,” he said. “Then, once you figure out why, there might be an opportunity to really go in and not just write the specific code you are being asked to write in terms of solving a specific business problem, but figuring out a better way to solve the problem.”
The business
Once developers have a sense of the type of software they want to build, they need to figure out the kind of organization they are going to thrive in. “It always amazes me that somebody might interview for this large energy company as one interview, and later in the day interview for a smaller company,” said Basso. “One of those two companies might be a good fit for them, but it is very rare that a single individual would fit well into both of those companies.”
According to Basso, a small startup may work in smaller teams, ask the developer to perform different jobs, and have their technology constantly changing. A larger, more established company might have developers doing one thing for a long time with larger teams. “It is not that one is good or bad, it is just that they are very different things,” he said. “If you take a person who is better suited to work at a large company, and put them in a small company, that is probably going to make that person miserable.”
In addition to culture, developers should care about the mission of the business, and whether or not they agree with it. According to Andrew Phillips, vice president of DevOps strategy at XebiaLabs, developers should ask themselves if they care about what the company does, have any kind of passion involved with the software they will be building, or are they just there to build a shinier widget. “The real job of a software developer is to solve business problems with technology, not just build cool technology; but to understand the business problem and translate that into technology,” he said.
There will be some situations where developers need to accept a job in order to make a paycheck, but at the end of the day they should remember why they got into software development in the first place. “As many jobs can be, when you develop for hours on end, it can become tedious,” said Code School’s Nicoll. “It is important to remember the people you are helping at times like that. When the error messages are screaming and Google has no answers, remember why you got into development. Remember the passion and excitement you once felt when creating something that actually worked. Remember the users whose lives you are improving while you are hacking away at a bug.”
If you choose a job that you don’t believe in and is against your own values, it will break your work—even if it is unintentional, according to Sympraxis’ Anderson.
User experience
“User experience” is not just a buzz phrase: It is something that actually matters. A big part of developing software is getting to know your users, understanding what their pain points are, and just understanding what kind of people they are, according to Anderson. “The closer you can be to your users, the better product you are going to deliver,” he said.
Users don’t care if developers are writing elegant code unless that code gives them an elegant thing they can appreciate, he explained.
Developers have to understand what the user experience is from all perspectives, not just how it looks on the screen, but how a user interacts with it. “A computer that the user can’t figure out how to use is a very expensive paperweight,” said David Platt, developer and professor at Harvard Extension School. “And that experience needs to be self-explanatory. A UI is like a joke: If you have to explain it, it isn’t very good.”
According to XebiaLabs’ Phillips, developers need to integrate user behavior measurements into their solutions to see how many clicks a user might make on a certain page, what paths they take through the solution, and where they get stuck. “This allows everyone to get better insight into how or whether users actually use features that we add to our applications, and whether they use them as we intended to use them,” he said.
Team members
Enterprise developers are no longer a one-man band. They have project managers, operations people, marketing executives and testers they need to work with every day. Ensuring that their relationships are healthy and communication is good between teams is vital to a happy and healthy developer, according to Code School’s Nicoll. “The people you work with will make or break your job satisfaction every day,” she said.
It also helps to understand what other team members are doing in order to better interact with them and build better solutions. “There is a lot to be said about learning a little bit about what the other people on your team are doing,” said Amadeus’ Basso. “I have seen some pretty disastrous results in systems where people fail to acknowledge the other parts of the system that is being developed.”
According to Basso, this makes developers better at their job because they understand how other parts work at an intimate level. “That makes them much more valuable as individuals designing the solution for the whole problem,” he said.
Developers should also regard it as part of their job to pass their learning on, according to XebiaLabs’ Phillips. “Pass the knowledge on, mentor the people who come into the organization. Don’t just show them how the technical systems work; pass on some of the knowledge about the business you are in,” he said.
The architecture
Developers should take on the role of an architect when building their applications, according to Bob German, principal architect at BlueMetal. “Architects are developers who take the big picture into account and try to balance all the tradeoffs and considerations,” he said.
According to German, building an application is a lot like building a house. Architects have to look at how many people are going to live in the house, how much snow the house would have to hold in the worst possible winter, what necessary plumbing needs to be in place, and any extensions that may be added on later down the road. Developers have to look at the technology and how that technology is going to change over the lifetime of a product, the scalability that is going to be required, and features that are going to be later added on.
Fast iterations
While there are no silver bullets experts can offer in terms of methodologies, developers should make sure they are working in fast iterations in order to reach quick and valuable results, according to Sympraxis’ Anderson. “Everyone needs agile,” he said. “We need to understand sometimes we are going to go in the wrong direction, and we need to course-correct. We need to be able to react to the changes and realize the priorities for what we are actually building along the way.”
Fast iterations with short cycles ensure developers can fail, but fail fast. “If you are going to fail, fail quickly, learn from it and restart,” said German. “That is one of the nice things about the agile methodology: If you break it down into short cycles, you don’t have a setback for more than that amount of time. You aren’t going to find that you were going in the wrong direction after a year of development.”
In addition to agile, developers should promote continuous test and continuous deployment cycles, and release their solution every couple of weeks even if it is just an internal one and doesn’t go out to end users, according to German. “The whole testing and release cycle every couple of weeks is extremely valuable to identifying any issues upfront, and to also be able to get feedback on your work continuously so that you can keep up with the velocity of change,” he said.
It is also important that teams pick a development approach and stick with it. According to Amadeus’ Basso, mixing methodologies within one solution doesn’t work well. Different methodologies might make individual lives easier, but as a whole it is going to make developing the solution even more complicated, he explained.
Learning new things
There is no comfort in the industry; developers can’t just learn one thing and then sit around doing it for the rest of their life, according to Anderson. Technology is changing drastically from year to year, and in order to keep up with the change, developers have to be continually learning.
“If we want to keep good at what we do, we have to be actively seeking out new knowledge,” he said.
According to Anderson, it is not the employer’s responsibility to provide training for developers. The really successful developers are the ones who don’t know everything, but know how to find out and learn more about things.
“If you are going to get into the software business, you better be a person who likes to learn and wants to learn throughout their career,” said BlueMetal’s German. “You are never done with learning and training in the software business.”
With the Internet being so accessible today, developers can keep track of the evolution of technology by following blogs or joining several user groups where they can ask questions and learn more about a technology from other people who have used them, according to Amadeus’ Basso.
“You have to keep up with the change. One way is you have to self-educate, and then you have to experiment, try new things, and learn from them,” he said.
Types of developers
Not everything developers should care about is going to be of equal importance to every type of developers. According to German, the type of developer you are will determine what is important to you.
Citizen developers are power users or people who are mainly business focused, but do a bit of development. “I love these people because they are the closest to the business and able to understand the dynamics of the actual usage of the software better than any other developer,” said German.
Enterprise developers are building software for a company or enterprise. “They are likely to deal with the citizen developers, who are sort of their business power users,” said German.
Independent software vendor developers are building package software to sell. “They have to pay attention to extra things because their software might be installed on hundreds of different kinds of devices, and they have to be careful not to do anything that will break it,” German said.
Cloud developers are building services for the cloud, where they might have a million users hitting their software. “The level of scale they have to think about is beyond what any other developer has to think about, and security is more important because they are on the Internet and probably going to get more people trying to hack their software,” German said.
“As you go up that continuum, the amount of attention you have to pay to things like security and scalability get even more important.”
John Basso, cofounder and CIO of Amadeus Consulting, believes as developers start in their career, their area of concern expands as skills advance. “Initially, you are solving a very specific business program, say letting a user log in to a system. As you get more mature and your skills get better, your area of concern expands,” he said.
“For example, instead of just logging in, you might say, ‘Well how are we going to detect fraud with this login? Should we be capturing the IP address or other information?’ And then you start saying, ‘Well it is not just a login, we have to put in these other security measures in.’”
Developers are really just solving the same problem, Basso said, but as they mature, they have to look wider and solve the larger problem.