home   philosophy   services   methodology   jobs   contact
     
 

our philosophy

 

 

Over time we have built up a company philosophy... of how we operate and conduct business. This list is, in effect, our modus operandi, and all of our consultants adhere to it:

1
Order does not come out of chaos. We don't undertake engineering projects haphazardly. Cost overruns, significant design flaws, poor performance, and high maintenance are some of the hallmarks of poor engineering. We don't believe in over-engineering, but we do believe in the importance and benefits of a solidly designed engineering project.
2
Identify and get rid of the non-essentials. The pragmatic approach we always take is to work with the client and determine together what core functionality they must absolutely have. Identified non-essential features will be tagged for development and deployment at a later project iteration if the client so desires. This allows us to keep the project lean, manageable, and reasonable in terms of costs and time for the initial deployment.
3

Simplify the design. Whether it's a network infrastructure or software development project, one of our primary objectives is to simplify the design. A simpler design is easier to build and easier to maintain.

4
Speed up design via iteration. A good design doesn't usually pop into existence fully developed. We believe in rapidly iterating through the design process, starting with a solid framework and then fleshing it out, correcting design flaws or wrong assumptions in the process.
5
Regularly assess the situation. We believe that it is absolutely critical to constantly assess the current situation and count the costs. For example, are we beginning to spend too much time trying to implement a non-critical but tricky feature in a software development project? Strive to keep the ROI high and avoid getting too close to the point of diminishing returns.
6
Move quickly and aggressively. While we strongly believe in the importance of a realistically-scheduled project (and we will not budge from that), we understand that in order to stay competitive we need to move aggressively and show results quickly... whether it's responding to an RFP, delivering custom software, or finishing a systems integration project. The principles mentioned on this page allow us to do just that.
7
Use the right tool for the job. Whether it's a software tool, a network performance monitor, a programming language, a design pattern, or an application framework, for instance, we understand the benefits of using the right tool for the job. Using the wrong tool will only lead to headaches, along with much wasted time and money.
8
Don't reinvent the wheel. What tool or software can we use that's already out there? What established design patterns make sense for this particular software we are planning on developing? There is no point in reinventing the wheel "just to prove that we can do it" or just because we didn't do our due diligence in researching the business or technology domain at hand. At ekko systems, we don't believe in wasting time or the client's money.
9
Run the distance, not the sprint, but shift gears when necessary. We strive to pace ourselves so that we can run the distance. This translates to a regular daily workload as well as a regular sleep schedule. It is a fairly common aspect of human nature to want to slack off a bit in the beginning stages of a project "because there's a lot of time left to get the project done anyway." However, we have learned the importance of self-discipline and keeping the pace from start to finish. There are less surprises this way.
10
Understand that doing something significant takes significant effort and time. And sometimes... what may at first seem simple may turn out to be more complex than expected. In all our collective years of software and systems engineering, we have learned how to better identify what may take significant effort and what will not. And we continue to learn from our own experiences. Our point is this: Invalid assumptions, if not corrected quickly, will lead to failure, wasted time, and a demoralized atmosphere.
11
Don't take on projects we aren't equipped to handle. If we don't have the necessary development resources, in-house expertise, or knowledge of a related technical domain that the client requires for a given project, we won't pretend that we can do it. If we know of another consulting company that might be able to take on or bid for the project, we will introduce that company to the client.
12
Only release a system when it is ready. We strongly believe that systems that are not ready for "prime time" should not be released. Whether it's a software development or a systems integration project, if sufficient QA testing has not been performed, if the critical bug count is too high, or if the system performance is sub-par, then it doesn't deserve to go into production or commercial use yet. We understand that business or marketing pressures must be respected and adhered to as much as possible, but ultimately something that isn't ready should not go out the door.
13
Establish and nurture good communications. The success of a project is directly proportional to the level of communications between our clients and us. This is why we take good communications very seriously... and that is why we understand the importance of listening.
14
Never forsake the regular reality check. Before we decide to pursue a design approach, submit a design document or a response to an RFP, we do our homework. We research the facts on the subject at hand while filtering out any overzealous marketing hype. Ideas are bounced between our senior consultants to make sure that what we propose to accomplish is realistic in terms of technologies, project costs, design and implementation time. Fantasyland belongs in Disneyland, not in engineering projects.
15
Systematic troubleshooting works... especially if you know where to start looking. Complex engineering endeavors, no matter how-well engineered and thought out, will inevitably have problems. Unexpected bugs or seemingly non-intuitive problems are bound to crop up sometimes. With our extensive experience in software development, hardware, networks, and systems engineering, we'll have a good guess as to where the problem's cause(s) might be... and we'll know what questions to ask and what tools to use in order to track the problem down systematically.
16

Keeping the brain stimulated leads to better productivity. Anyone can attest to the fact that sometimes one might get stuck for an extended time on a very difficult problem or task, resulting in reduced brain stimulation and productivity. While we don't shirk tackling difficult problems, we have learned that an easy and effective way to stay productive is for each of our consultants to have several responsibilities or tasks to be working on concurrently. These could be different tasks in the same project or in different projects, but the idea is simple: rather than "burning out" trying to solve a difficult problem over an extended and ineffective period, just switch to a different project or task and accomplish something there before returning to the tackle the previous difficult problem... this time mentally fresh!

17
Learn and adapt. There is always something we can all learn from in order to improve our engineering process. Therefore, as we manage a project from initial vision to completion, rollout, and maintenance, we keep a log of things we or our client did, could have done, or could have done better so that we can operate a little bit smarter the next time.
18
Build good relationships, not merely a list of clients. We believe a truly successful business does not neglect the human element.
19
Stay current and sharp. As an old proverb states, "As iron sharpens iron, so one man sharpens another." We know that a technology company that doesn't keep current about what's happening in the industry won't survive. To this end, all our consultants believe in always taking the time to study, do research, attend seminars, and disseminate useful information amongst ourselves and motivate one another.
20
Our clients should always have a pulse on where we are today. Our consultants are accountable to each other on a daily basis to make sure that we will always have enough engineering resources to deliver what we are supposed to deliver on time. Furthermore, since we keep each client updated on our progress status on a regular basis (usually daily or weekly, specified by the client) our clients will always have a pulse on where we are today.
21
Never lose sight of integrity. We believe in the importance of personal integrity, as our firm's reputation rests with each of our consultants. We don't claim to be perfect, as no one on this planet is perfect. But we strive for perfection. And as our firm's success hinges on our reputation we don't take our conduct lightly. We won't make cheap promises. Rest assured we won't leave your company hanging (and our own reputation tarnished) by delivering shoddy software late that doesn't work.

back to top

Underlying each of the services that we provide is our philosophy and the disciplined methodology that we always use to provide the best possible service and tangible results to each of our valued clients.

Contact us for a free initial consultation!

 

  ©2008 ekko systems (All rights reserved)