If you’re a software engineer, chances are that at some point you considered Silicon Valley for your career. Even if you aren’t considering moving there, it’s a good bet that the Valley is still the first place that comes to mind when you wonder where the best software engineering jobs are.
While it’s true that Silicon Valley and the Bay Area in general offer enticing salaries—an average of $110,554 USD per year, according to Glassdoor—many engineers may not consider the effect that cost of living has on this salary.
This is the focus of a recent study by CodeMentor, which analyzed the “real earnings” of software engineers in 43 cities across the U.S. and around the world to determine the best places for them to work.
“Real earnings” in this case is the value of the salary software engineers earn given the essential costs of living associated with each city, such as rent or mortgage payments, taxes and social security.
The CodeMentor report used a “real earnings formula” to calculate average earnings for a software engineer who lives alone in the city. That formula is:
Real Earnings = Income – Taxes – Social Security – Living Costs – Rent
The biggest effect on real earnings came from taxes and rental costs, both of which vary significantly from city to city.
So which cities are the most affordable, resulting in the highest real earnings for software engineers?
Top U.S. Cities for Software Engineering Salaries
Seattle comes out as the clear winner in the report. The presence of top-tier tech companies such as Microsoft and Amazon serves to put wages on par with Silicon Valley, but the costs for rent are significantly lower – meaning more money in your bank account each month.
Also at the top of the list are Phoenix, Austin and Houston, which offer real earnings above $30,000. However, these cities are still growing their software industries, and so have relatively modest numbers of software engineering job openings in their job market.
Interestingly, New York and Washington D.C. sit at the bottom of the list, even though these two cities have the largest number of openings in the job market. This is largely due to the astronomical cost of rent – averaging as high as $3,000 per month – leaving software engineers working in these cities with real earnings in the $15,000 – $18,000 range.
International Cities with Highest Real Earnings for Software Engineers
The report also analyzes cities outside the U.S., for those who may be considering working abroad. Oslo and Tel Aviv offer the highest real earnings in this group, at an average of $28.1K and $22.9K respectively. However, they also have small – albeit, growing – job markets.
Three Canadian cities also make a good showing: Toronto, Montreal and Vancouver, with real earnings in USD between $16 – $19K, and job markets that are moderate and increasing.
The full report is available and includes a more detailed breakdown of the calculations, methodology and additional analyses of affordability and quality of life across the 43 cities featured.
While salary – or real earnings – alone shouldn’t be the only deciding factor in choosing where you want to pursue your career in software engineering, having this information can help you plan for success.
This article is shared by www.itechscripts.com | A leading resource of inspired clone scripts. It offers hundreds of popular scripts that are used by thousands of small and medium enterprises.
Business People Celebration Arms Raised Ecstatic Concept
It has never been more challenging than today to build a successful software development company. Even just a few years ago, companies would offer breakfast at the office or put their people on training to hone and develop their skills. Today, however, we are in a different world. In order to attract and retain top talent, we are hiring professional business coaches and organising work weeks at the seaside.
Building the core dream team of qualified and passionate IT people
Team is always number one! Having the right core team is what will set you on the path to success! As a CEO of Dreamix – a software company for Java and Angular development – I feel confident saying that the CTO is the most important role in any IT company. Moreover, he or she doesn’t have to be that crazy geek who can code anything you name. On the contrary – you need a leader who inspires people and can attract the best experts to your company.
Our CTO, Angel (yes, he is a real angel!), has been a true blessing for us. By the time he started the company, he was teaching Java Development Technologies at a local university. Having someone well-known in the IT community is invaluable. Having such a person means he is dedicated to growing experts, not just taking the first person he finds and allocating him or her to a project. From our experience with Angel, people recognise and value his attention and care a great deal!
Additionally, you will want to have a strong project manager and software architect on your team. Once you have secured these, you are ready to go!
Focus on key technology or business solutions
There is a perennial debate: should you concentrate on technology or business solutions? For us, technology comes first. We have decided to focus on Java backend and web solutions. We don’t build any .Net or smartphone applications, nor do we do web design. We even hired an external company to build our new website because we do not take on any web design projects (yes, some people have found it funny that an IT company does not implement their own website).
The mantra ‘anyone in the company can do anything’ works only when you first start out. Once you begin to be compared with world class players in a technology/business vertical, nobody will believe that you, going into the jungle holding a Swiss Army knife, are better than someone going in holding a machete.
Also from my experience, when you have people with very different skillset, you will have more people sitting on the bench, thus lower your profit margin. This is because you cannot get sales people to look for all the different types of technologies/projects. And following Murphy’s law, once you have a free Ruby developer you will instantly start receiving Java and C# requests, but no Ruby ones.
Establish a tough interview process
Once you have the core team, you should only allow the right people join the company. You will need to conduct both a tech interview and a ‘cultural fit’ interview (you can read more about culture below). A tough interview is good for two things:
It helps you hire the strongest experts. You need to make sure you hire A Players. Because A Players make for an A Company;
It makes for good PR. Once you turn down someone with ten years’ experience because his multithreading skills are poor, everyone in the city will hear about it. And guess what? Strong candidates will be hungry to see how they will rank in your interview process.
Although you might get only super strong engineers, your company might still not be in good shape, since we all know that a great deal of building software is actually communicating with the stakeholders. That is why we introduced a second stage in our interview process – “Culture Fit” interview. During the interview we ask potential candidates about what initiatives they have started on their own, how have they contributed to the last company they worked with, how do they help their colleagues grow. This makes sure the engineers you are selecting will fit in the culture, but also are good communicators and team players.
Build a partnership and business development network
No business is bigger than its clients and partners. As a nearshore outsourcing software development company, our clients come from different countries and sometimes even different continents. This means we need to focus on staying close to our clients. That is why we have built partnerships with software development companies in various countries, including the UK, Switzerland, Germany and the USA. Having great partnerships will give you access to interesting clients and projects. If you deliver the high quality software, you will soon become the number one option for them. However, have in mind this is tough process that requires a lot of dedication.
From experience, companies will not trust you in the beginning, at least until you have shipped 1 project for them. For example, we started a project with a London based consultancy company by sending 1 of our consultants onsite. Our expert did a great job and delivered the project in no time, showing that he was super proficient with Java and Integration technologies. Shortly after, the partner was calling us for additional small project. Although it required traveling to the countryside in Wales, we accepted the challenged and went there to spend several weeks. The project was a tough one, included a lot of refactoring of old applications, and although it was far from “the dream project”, we put a lot of effort and dedication and delivered it in a way, that exceeded the initial expectations.
After these first projects together, it was really easy to expand the collaboration and talk about future opportunities. That is why I suggest you to focus on starting with small project, deliver the right result and then once you are in the trust zone, it is inevitable that you land a good and long-lasting contract.
Company culture and why it is important
Company culture means what are the values you believe in and why you follow them and what initiatives you create to support them. Here the credit goes to my partner Stoyan, who has done a great job to establish a great culture in Dreamix – you can read more about it in his blog “Dreamix: Why Is Company Culture So Important?”
In short, what you need to set is:
values of your company – both internal and external. Internal are the ones that help you people work better and the external are the ones which attract/retain your clients
Initiatives to support them – if your value is to be great in emerging technologies, then create a bi-weekly event where each of the colleagues presents a new framework/technology/startup company. If you want to be great consultancy, invite famous consultants to present what makes them great.
Find ways to promote your culture – you can write blogs, make videos or organize events to showcase what you have achieved in this direction
Having a good company culture benefits you in many ways. For example in my experience when the management of the company gives personal attention to every team member with weekly face to face meetings, understanding when there are personal issues, etc. people find great satisfaction in their workplace and hence they recommend many friends for new positions. By also adding bonuses for recruited friends, we spend very little on recruitment and can focus on making our company even better, having more resources.
Keep in pace with the new technologies
Being a technology company at a time when technology focus shifts every five years means you need to be constantly on the move, adapting to these changes.
When we started eleven years ago, the RIA (Flash) technologies were widely spread. Nowadays, we are migrating Flex applications to Angular. Had we decided to stick with the old technologies, we would now be supporting old applications; by the next technological shift, we would find ourselves out of business. Instead, we follow the trends and currently, we are even looking to establish an AI department.
A funny story is that in the beginning of the “JavaScript frameworks” hype, I was not a strong believer in it. However, some of our key engineers were super keen on it. Eventually one of our core expertise became JavaScript frontend using AngularJS & Angular, because several of our key developers started experimenting with it, way before it became a common trend.
After getting experience with it, we started doing internal trainings and lectures and once we were professionals with it, we started blogging and spreading the knowledge. The moral of the story is that you need to rely on your tech people – just because you are CEO does not mean you are immune to missing tech trends and business opportunities, that others might have spotted easily.
Keep an eye on the bottom line
Being good at technology does not create instant success. Delivering great projects but making no profit is a dead end. At the same time, as in every business, you need to be able to provide your most cost-effective option. We have created our Business Intelligence Dashboard which monitors our income, expenses, and profit. This helps us:
Identify which projects are more profitable;
Keep an eye on expenses;
Stay competitive by knowing your minimum daily rates;
We calculate this by keeping track of all metrics in the company: salaries, social benefits, rent, sales cost, internal initiatives, trainings, sick leaves, holidays. Additionally, in this way we know the budget of each department, so for example when we want to increase the sales effort, we know how much exactly we want to invest and from where you can cut a bit in order to compensate.
These seven points come from eleven years of experience and are integral to building a great software development company. However, I am sure you have your own secrets or ideas what can make your company stand out from the crowd – I am really looking forward to seeing them in the comments below!
This article is shared by www.itechscripts.com | A leading resource of inspired clone scripts. It offers hundreds of popular scripts that are used by thousands of small and medium enterprises.
To develop a REST API in PHP quickly and easily it’s a good idea to use a lightweight PHP framework. Developing your own from scratch with plain PHP, apart from being a pain and taking too much time, is likely to require a lot of testing and deviate from REST standards. Ankur Kumar over at Find Nerd takes you through the top five PHP frameworks to make your life easier when creating a REST API.
First up, is Slim. This PHP microframework has a scalable, modular architecture that lets you use exactly what you need and nothing more. Even better, you can put your entire web service in a single PHP file. Features include: the ability to enable and disable debugging for the API, the ability to inspect and manipulate HTTP messages including headers and cookies, and support for dependency injection. A big plus is that its HTTP Router maps route callbacks to target HTTP request methods and URIs.
Next in line is Silex. It’s a microframework based on Symfony. It comes in two flavors. The fat version includes Symfony components and a template engine. The slim version just has a basic routing engine and some procedures to work with other libraries. The slim version is what you want if you’re keeping it lightweight. It’s fast and has features like one step controllers and easy-to-manage testing tools.
Third in line is Wave. It’s a popular PHP microframework based on the MVC design pattern. It comes with a view controller and special gateway for web functionality. It doesn’t, however, come with any optional libraries so it’s extremely lightweight and built for speed.
Next up is Limonade. Like Wave, it’s lightweight and easy to use. Ankur advises its use for prototyping and rapid web development. It’s not suited to larger projects mainly because it’s functionality is limited and it can’t be easily integrated with other libraries or extended. On the plus side, it’s easy to learn.
Last but not least is Lumen. It’s a Laravel-based microframework that’s recommended for microservice architectures because of its blazing speed. Not surprisingly, it’s best used with Laravel, since its code can be easily be dropped into a Laravel app. Out-of-the-box features include caching, validation and routing.
This article is shared by www.itechscripts.com | A leading resource of inspired clone scripts. It offers hundreds of popular scripts that are used by thousands of small and medium enterprises.
Python and PHP are two of the most popular high-level programming languages. PHP is traditionally used as a server-side scripting language, while Python is valued for its dynamics, availability, and simplicity. Despite their almost identical popularity among developers, these two languages have many specifics and differences. The wide prevalence and use of these languages lead to the question – which of them is better and more convenient?
In order to give a full answer to this question, it is necessary to carefully consider the features, functionality, and scope of Python and PHP in software development. Also important is to understand main differences and their relation. Choosing the best language for server side development between PHP and Python based on the product properties is, probably, impossible. In this article, we strive to at least explain clearly the similarities and differences between these two languages. To consciously select Python vs PHP for your project, it is worth looking at origins of these languages and the goals their creators pursued first.
PHP
The start of the development of this programming tool can be attributed to 1994 when Rasmus Lerdorf created a number of components and extensions that extended capabilities of the most popular than C language. Initially, the components were created in order to facilitate the management of the Rasmus’s own website. However, other developers quickly appreciated the new features of those components and began to actively implement them. As a result of the constant use and extension of PHP, the emergence and growth of the community, the new language has become not just popular: over 80% of the modern websites are based on it. PHP is constantly evolved and complemented by the developer team and members of a large user community together. We can safely say that PHP is on the peak now and it is still very early to talk about the decline in its popularity.
Python
Five years older than its competitor, Python was developed by Guido van Rossum back in 1989 as the ABC language replacement. The main popularity among developers Python got in the 2000s, after the release of Python 2.0, one of the main features of which was the complete Unicode support.
Unlike PHP, Python from the start was engineered as a full stack programming language, irrelative of web development. That’s why it’s not so popular on the web – today less than 1% of websites is created and managed using Python.
Python and PHP: what is common between them?
At first glance, it may seem flawed to compare the two languages originally created for different purposes. However, seemingly different, PHP and Python have a number of common properties that make them popular:
Both languages are easy to learn (compared to C++, Perl, and others);
Both languages are accompanied by the extensive and detailed documentation;
Both languages are open source and can be updated and advanced by users with the purpose of improvement;
Wide and friendly developer communities facilitate the process of learning and working with PHP and Python;
Portability and versatility: both languages have IDEs for all the major operating systems.
And what are the major differences?
Naturally, when choosing a language for development, its distinguishing features are the first thing that should be considered.
Development logic
The first and most important difference between PHP and Python is their orientation. Python is aspect-oriented (separates the program functionality and splits the program into separate modules), while PHP is object-oriented (encapsulates code modules that contain certain functions and data into objects).
Thus, working with Python, the developer creates separate functional modules and then registers the connections between them on the “if-then” basis. It results in an algorithm that executes this or that program block based on the user’s actions.
Working with PHP means creating an integral code object that has certain properties and executes certain actions depending on the user input.
Syntax
The syntax of a language is constituted by its fundamental “grammatical” rules. The main difference between various languages, be they spoken or programming, lays in syntax, and the process of learning a language is by most the study of its grammar.
The PHP’s syntax is almost the same as the syntax of C (due to its origins). When writing the code using this language, curly brackets, additional characters and operators, and other C elements are used. A nice moment in working with PHP is neglect of white spaces during the compilation, which brings additional usability and gives the ability to structure the code into simple logical components. An unpleasant feature of PHP is the incompatibility of the namespace conventions, which is why many developers do not perceive it as a full-fledged programming language. However, this feature is primarily due to the fact that the language initially was designed for the website management.
The syntax of Python, on the contrary, is based on the separation of the code with spaces and tabs, which significantly speeds up the process of coding, but increases the possibility of careless errors. Considering Python, it’s also worth noting the simplicity of commands. In fact, most of the commands in this language are similar to the corresponding words in natural English, which makes it much easier to learn.
The list of secondary PHP and Python differences is as follows:
Python is considered a more flexible programming language, while PHP is tightly regulated;
Python uses special packages to load additional libraries, while PHP requires loading them manually;
Unlike PHP, where assuring the software security requires additional tools, applications written in Python are considered among the safest;
Although Python supports a graphical user interface and can be used in web development, PHP, originally created to support web applications, is more applicable in this area.
PHP vs Python: what to choose?
For years, debates have been going on about which of the languages is more user-friendly and most applicable to various tasks: PHP or Python? Despite the many differences between these tools, which consist in a different syntax, different spheres of application and logic, these languages, nevertheless, have a number of common properties.
They are convenient, easy to learn and use, have many useful libraries, broad communities, and detailed documentation.
However, to choose the best of two, it all eventually comes down to the purpose of development. Same as in the creation of PHP and Python, before starting to learn the language and developing your own product, it is important to ask the question “what exactly do I want to get in the end?” To create simple working sites and web applications, as the experience of developers around the world and statistics reaffirm, PHP would be the best solution. However, Python would be the most optimal and convenient tool for the development of complex flexible products.
When it comes to choosing PHP or Python for mobile development, take into consideration that Python is not limited to the web development capabilities, which makes it more versatile than PHP. All the major mobile platforms (iOS, Android, Windows Mobile) have some kind of Python port or framework that allows developing native and web applications with a help of Python. Thanks to its regulations and logic, PHP is better applicable for web development exactly. Though there are ways to build mobile web applications over the PHP server-side backends, it is much harder as compared to Python. Not to mention that the simplest way – using the solutions by Zend company, is commercial, though not very pricey.
Conclusion
In general, the choice of PHP vs Python lies in the selection between stiffness and flexibility, nativity and versatility. We can even go further and compare PHP vs Python vs Java. However, the final choice always belongs to the developer and depends on the assigned task. We hope that this article helps our readers to better understand main properties of the two most popular languages and facilitates the complex process of choosing between them.
This article is shared by www.itechscripts.com | A leading resource of inspired clone scripts. It offers hundreds of popular scripts that are used by thousands of small and medium enterprises.
And why should I learn to use and where would I begin once I decide to use it? To start, PHP stands for ‘PHP: Hypertext Preprocessor’, and it is one of the most common server-side languages in programming today. The reason it is so popular is the fact that it is completely open sourced, which means anyone with access to the internet, is free to complete access to everything PHP has available to them.
There are obvious reasons why a programmer should, and would, want to learn this language on that basis alone. Not only is it a programming skill you can use and implement free of cost, but there are a vast number of employers who incorporate this language on that basis alone. With the ease that it can be embedded into HTML, it won’t be long before you start seeing professional web development come to life in front of your very eyes.
Now that you have PHP successfully installed, we need somewhere we can actually write the code. I use Visual Studio Code. Once it is downloaded and installed, it is as simple as saving a blank notepad document, but instead of saving it with a ‘.txt’ extension at the end of the file name, use a ‘.php’. Now when you right click on that file and go to ‘Open With’, select Visual Studio Code, and it will open up to you a blank template to use. In order to write PHP code, it needs to be within PHP tags. The starting tag looks like ‘’. Anything in between these tags will be read as PHP code.
Now that we have PHP installed, and a place to write our code, the next thing we will need is a software that will allow us to run the code so we can see our work come to life. I use Xampp. Once it is downloaded there are some slight modifications needed to make it run, but not that many. If you don’t alter any of the steps in the Xampp installation process, Xampp will be saved within your C:\ (Local Disk C:) file path on your computer. If we go there and click on Xampp, it will open into many different options. Now it is the ‘htdocs’ folder where you will want to save all your projects of work. For example, go inside the htdocs folder and save an empty document called ‘hello-world.php’. Now find where Xampp is on your computer and run it. You will get a pop-up that looks as follows except you won’t have any messages displayed yet I am sure.
Hope you liked the article.
—Sanket Wankhede
This article is shared by www.itechscripts.com | A leading resource of inspired clone scripts. It offers hundreds of popular scripts that are used by thousands of small and medium enterprises.
A little-known Portuguese company, OutSystems, which specialises in the equally little-known practice of low-code development, is taking large sections of the corporate market by storm.
As its name suggests, low-code development reduces the amount of coding required to develop applications. And, by doing so, it reduces the time needed to develop applications — in some cases by a factor of 10.
The speed of this approach makes it especially attractive to the mobile market and, as that market has grown, so has OutSystems. According to analyst Forrester, OutSystems is the market leader in low-code development, beating better-known names like Salesforce.
OutSystems CEO, Paulo Rosado, outlined the advantages of the low-code approach to ZDNet.
ZDNet: Why did you start it in this business?
Rosado: This is my second company. I started my previous one in 1997. What we handled there was infrastructure software for very large national and international companies.
We were right at the middle of the bubble. I sold the company in 1999, but during that time I didn’t have a single project that was on time and on budget.
When we started a project, we tried to change the analysis phase but we could never get the requirements right. That concerned and interested me, because it was a difficult problem. I ran the company for 18 months and during that time I focused on this problem. OutSystems was the result of that. I looked back at why these projects were failures, and that related to a fundamental issue in software construction. It had to do with technical debt [relying on a solution that is quick and easy to implement but will cause problems in the future], and the fact that, as software changes and time passes, the next change needs to be done.
What happens is that the cost increases exponentially as each change is made, until it becomes too expensive and you have to start afresh.
So, the idea we came up with was, instead of starting by trying to get the requirements right, why don’t we assume that they are always wrong and then attack the problem of change?
We kind of reverse engineered the anatomy of software change and created a product that was unique. To give you an idea, one of the reasons was that as you increase the size of the software, the software becomes harder to change. If you double the size of the software, the dependencies increase exponentially.
So if you have fewer options to track, you can put in a dependency engine and you decrease dramatically the cost of your packet. That’s why we went with a model.
I had a lot of experience with very large Java projects and I thought Java was terrible. I was an architect in Oracle and I had my first glimpse of the dark ages that would come because of the lack of productivity. As people change things they are afraid of changing something and breaking something else.
One of the things we did was create a domain specific language, a visual language that was built for any specific domain of apps and was built to solve the problem of maintenance of change.
We removed Inheritance in objects — which was a big, stupid idea — but the other big thing was we realised that in order to tackle the problem of change we had to tackle the full lifecycle. So you have to take over the staging all the way through to deployment.
Basically, we introduced a DevOps capability into our product in 2002 [DevOps came into common usage in 2008].
You were doing DevOps before anybody else?
Exactly. If you look at that notion of One-Click Publish, we have big buttons that [were introduced] in 2002, with those buttons you click and deploy automatically. It’s a huge portion of our R&D, taking all those pieces, even database, integrations, making sure that with one click you upgrade the version that’s in production in a hot environment.
[When] you try to create a platform for Agile where technology is not in the way you stumble into continuous delivery, and you stumble into DevOps. There is no way around it.
What do you see as the key difference between Agile and DevOps?
It’s fixing the latency of change. Very simple to say but it’s a big problem.
We have an ALM [Application Lifecycle Management] group and we also have a domain group, so we constantly monitor the nature of the applications.
For example, when REST [Representational State Transfer] appeared about four years ago and started making inroads inside the enterprise, replacing web services and SOAP [Simple Object Access Protocol], we said: ‘We need to create a visual construct to model REST’.
The low-code aspect — how do you do that?
You have a modelling environment. It’s a very visual environment. In our case, the scope of that modelling environment is the scope of the domain of apps you want to create.
So in that modelling environment, for instance in our systems, we are able to model responsive, web native, mobile [apps], and then the stacks you would normally associate with that.
Then we also take care of integrations and the synchronous processes and so on. That stack is sufficient to tackle almost any problem. Any transactional app, any portals, dashboards, the big systems of record, BI, all that stuff.
We create model artefacts with, for instance, 3,000 objects and 11 million lines of code. Then from that modelling environment we have a code generator that generates into a target architecture. That’s another thing that we do a lot of research on: ‘What is the de-facto best target architecture for the next two or three years?’.
That group makes choices like ‘What is the architecture of the mobile native app?’, ‘Is it pure native or is it some hybrid?’, ‘What is our microservices strategy with containers?’.
This is all completely independent, so you just click and the apps are generated and deployed. When an architect comes in underneath, what he sees is services, and it is almost as if it was done by hand.
How do you get developers to buy in to this?
The reason why developers, especially the experienced ones, are wary of this type of product is because of a couple of issues.
One is the ‘wall’ issue. The issue is whether these platforms are sufficiently powerful.
The way we solve that is by our sheer multi-functionality. Our language is very powerful and when you extend it, it extends very elegantly, with JavaScript or CSS [Cascading Style Sheets]. You can integrate, we have plug-ins for almost everything, but you can [also] build your own plugins for almost anything.
That is why it’s call low-code. When no-code stops, you can go to code, augment the capabilities of the platform, and continue.
The second issue we also solved is that in most of these platforms it’s hard and it really takes time to build a platform to generate code, one that is capable, scalable and secure.
One of our requirements was that with each of those [generated] apps you could have at least 20 million devices accessing that application — one app could have 20 million users at one time.
We put in those requirements, along with the requirement that there be no single point of failure. On security, we did the same thing.
Many of our customers are very keen on security, so with our beta processes we sent them the platform so that they could try everything out for themselves. And when things come up, we go in and we change it.
There is a trust level that you build up with your customers. They can see how we can solve the whole problem, and not just the functional requirement problem.
So, to some extent it’s automation?
That’s exactly what it is. It’s automating a process as much as possible so that it is simple to use.
Are there notable successes that you can talk about in terms of companies?
We have over 800 customers and I know so many inside stories. UK customers include the NHS Practitioners Health Programme, where we built a mobile app and online patient booking system in seven weeks. The pharmaceutical and biotechnology company Charles River is another company who we built a mobile app for. Again, it only took us seven weeks.
[Worcestershire County Council, the Netherlands-based gas, electricity and heating company Eneco, and Ricoh Singapore are all customers.]
We have very big manufacturing companies, very big banks, logistics companies and the like. We have common use cases where people use our systems to build a digital factory [an arrangement of technology that lets management configure, model, simulate, assess and evaluate systems before building them].
And presumably with automation in there?
Oh yes. Our platform has an internal manager that does real-time impact analysis. What that means is the quality of the apps from the get-go is absolutely top.
If you are building a very big system there are situations where you need to augment them with standard testing, so we integrate some testing tools. We have a lot of use cases for very large systems where testing is required.
To give you some idea, there is a logistics company in the Netherlands which is one of the largest oil and gas handlers. They store oil and gas and they have 73 terminals. The system that manages the oil tankers, the pumping stations, the transportation is all managed by applications built using our systems. A full, worldwide, mission-critical system.
What was the key aspect of software development that needed fixing as far as you’re concerned?
It was that change issue. It was fixing the change request problem. Because the reason why we are so successful today — why we are growing so fast and have so much demand — is because before, you could get along with these waterfall projects where everything’s defined upfront, etc. We still get that.
But mobile changed everything — the single mobile project that you can do without iterating. That’s because it’s an exercise in trial and error, an exercise in change.
If you don’t change, well… Let’s say you build a map. It’s really well designed so you think: ‘I don’t need to worry about this for the next six months’. You’re already dead because, before that, after just two weeks, you find there’s a huge number of requirements that want you to change that app.
So you find that you must now compress that delivery cycle to two weeks.
You’ve created a tipping point in IT because they start doing it for mobile, and then they start doing it to get more responsive systems on the web, and so they have to redo all that. And that’s when they realise ‘wow, I can do this so much faster!’ That created the appetite inside the business; the business increased the pressure for delivery to the point where the backlogs are so huge — in terms of digital demand — that they can only do it with our productivity tools which are very good at doing change.
And that’s exactly what we are.
And that’s why you are enjoying this very successful growth and that’s worldwide?
We are very successful in the US and in Europe of course, but also in Asia-Pac. And even in countries that are a little bit more conservative, like Japan.
Japan’s a difficult market to crack.
It is. We started about four years ago and now it’s going very well. Japan relies on extremely custom-developed software because they can very rarely use pre-built software from America. They have to build a lot of their own stuff and our type of tool saves them hundreds of millions of dollars. Over there we are compressing projects which could take five years into 18 months.
So why are you not better known?
Well, it’s partly a lack of marketing acumen, but also, for a long time we were very much alone. These are products that are extremely difficult to catch up to. There are huge barriers.
I can tell you from our experience with Gartner and Forrester. Even when we had the evidence of first 100 and then 200 customers, they could not believe that what we said we did was possible.
And then we were very lucky because Salesforce jumped into the category and only then was low-code seen as a distinct category in its own right. But fundamentally we had been alone in this category for many years.
We weren’t big enough back then and we weren’t in Silicon Valley so we couldn’t create this new category of software until things got better. Now we have our headquarters in Silicon Valley and a customer base more than big enough to define this new category of low-code development.
This article is shared by www.itechscripts.com | A leading resource of inspired clone scripts. It offers hundreds of popular scripts that are used by thousands of small and medium enterprises.
Devops is one of the key trends in software development to emerge recently. But the term is often not fully understood.
An amalgamation of “development” and “operations,” “devops” describes the organizational structure, practices, and culture needed to enable rapid agile development and scalable, reliable operations. Devops is about the culture, collaborative practices, and automation that aligns development and operations teams so they have a single mindset on improving customer experiences, responding faster to business needs, and ensuring that innovation is balanced with security and operational needs.
For development teams, that usually means standardizing platforms, following an agile development process, and participating in operationally driven initiatives. For operations teams, it means targeting better stability, reducing costs, and improving responsiveness.
Core devops practices center around infrastructure configuration standards, automation, testing, and monitoring. But devops also requires cultural and mindset changes in IT.
And not everyone agrees on the organizational structure and how responsibilities are assigned between development and operational teams.
Some people stress a merging of development and operational people and responsibilities so that one devops team carries both responsibilities. This does have some cultural advantages as both developers and engineers are now forced to respond as a team to both operational and business needs. And this structure can be more efficient, especially in smaller shops that can’t easily dedicate resources to focus on development or operations independently. Many people also argue that when you standardize on cloud infrastructure and automate most workflows, there is less of a need for having separate sets of people with different skills and responsibilities.
Although this integrated structure may be possible, it’s a difficult hill to climb for organizations carrying legacy systems and without superskilled engineers who can enable all the standards and automation. And even when that’s possible, I believe that most organizations that are driving digital need to separate first, achieve their digital business agendas, and then perhaps look to merge when there is a maturity of IT practices. That is my recommendation for how transformational organizations need to implement devops.
In this transformational view, devops aims to reduce conflicts that arise when developers are focused on meeting business demands to add functionality and improve the usability of applications whereas operations teams are traditionally more focused on the stability and security of the computing environments. It tries to educate developers on operational responsibilities and educate operations teams on how to serve business needs smarter and faster.
When there is a shared understanding and a better alignment on priorities and process between the development and operations team, a more customer-centric devops culture emerges.
The basic technical concept in devops is: As you automate more of the interactions with the infrastructure from building, testing, deploying, and monitoring, you can remove many operational defects and better align development and operations processes. From a practice point of view, the big questions involve what tools to use and how much to invest developing any single devops practice area.
This article is shared by www.itechscripts.com | A leading resource of inspired clone scripts. It offers hundreds of popular scripts that are used by thousands of small and medium enterprises.
The first, which took shape in the last half of the 18th century and carried through into the first half of the 19th century, was driven by the rise of the steam engine and saw agrarian societies in America and Europe become more urban and industrialized. In the second, the introduction of electricity in the late 1800s and early 1900s made mass production possible. The third created a new digital world of personal computers, cell phones and the internet.
The fourth industrial revolution blurs the real and virtual worlds, with ubiquitous mobile computing, artificial intelligence, self-driving cars, 3-D printing tools and the internet of things redefining technology’s role in our lives.
As these stunning and historic changes play out, businesses are equipping themselves to succeed by rethinking notions of how software — the bedrock of our new hyperdigital world — is developed.
Earlier development models were entirely manual — developers handwriting everything like pre-industrial artisans, and projects flowing downhill from one group to another in slow, cumbersome stages (a dreaded process known as the “waterfall” method).
Then, companies embraced internet technology but treated it as a way to support the business — a productivity tool to increase the efficiency of existing processes (marketing, product development, HR, etc.) — rather than as a way to actively drive the business. The core mission of software development teams was to help ensure smooth, efficient execution of these various business functions.
Now, however, our world of mobile devices, apps, social media and pervasive connectivity has made technology the primary interface between businesses and customers. Companies now must be prepared to interact with customers directly, in real time and from any device, so they’re rebuilding their core technology capabilities in a massive effort that the industry calls “digital transformation.”
Marc Andreessen’s 2011 essay about how “software is eating the world” has become memorable because it captured precisely what is happening. Some of the world’s most famously disruptive businesses (Amazon, Netflix, Uber) are built on software and delivered as online services.
This article is shared by www.itechscripts.com | A leading resource of inspired clone scripts. It offers hundreds of popular scripts that are used by thousands of small and medium enterprises.
Much has already been written and much will be written about James Damore and his “The Google Manifesto.” (I’ve also written about how organizations can mitigate and detect bias.) As for Damore, his screed is the kind of recycled garbage that has already been studied and refuted. It flies in the face of history and ignores the data right in front of Damore’s face. For writing this dammed illogical dribble, no developer has ever been more rightly fired.
Beyond the moral confusion Damore shows, he also doesn’t seem to actually understand engineering, as former Googler Yonatan Zunger wrote in a brilliant response to Damore’s manifesto. Zunger is right: Damore isn’t a good engineer or software developer. Software development is more than knowing what APIs to call or basic syntax.
So what exactly makes a good software developer? Here it is, in the kind of manifesto we should all be reading and taking to heart. I call it The Good Software Development Manifesto.
1. Believe in data
You may want to believe the system works or that you’re “better” than certain people, but you need to have data to support this idea. Most of all, you need to be willing to give up the idea if facts (or countless studies and history) prove that you’re wrong.
This means you need tests to prove your code works, and you need processes around your code that produce data that prove you’re not reverting code. Everything you do should produce data that lets you make further decisions. Otherwise, how do you know if you’re doing the right thing?
2. Software development is more than coding
Just like letter-writing is more than the words per minute you can type on a keyboard or knowing vocabulary and grammar, software development is more than coding. Software development beyond relatively simple things requires coordination, communication, analysis, design, testing, project management, and more.
Coding is important, but it is important in the way an engine is important in a car. The best software developers have empathy for others who have different roles, interests, and stresses on them.
3. Code is communication with people (or: Be social)
One of the first “languages” I learned was 8086 assembler. That was as close to the metal as I ever came. If we were really just “programming computers,” we would all be writing bytecode. Computers understand it best. But we’re writing in a “compromise” language that other people can understand and that can be translated to something the computer understands.
Good software development is a communication process. It’s about making sure people understand what you’re doing and why for that moment when you need a hand. Your job is to communicate with the next person reading it. Finding the best way to say it may require empathy.
4. Good processes are important
Conway’s law predicts that your software is doomed to reflect your team and its communication structures. Process is the structure of that communication.
Think of a plane taking off: You have a very structured conversation among the pilot, copilot, flight crew, and air traffic control. That ensures that everyone looks after critical issues and that everyone is heard. “Wings still attached to the plane?” “Check.” “No other plane in our way?” “Cleared for takeoff.”
5. You prove yourself with results, not “status”
The worst development organizations are either very hierarchical or have too many bosses per developer. That typically reflects a desire for status by being a manager.
Think “roles,” not “status.” The best organizations I’ve worked in recognize the people who made things happen first and foremost regardless of their role in the organization. (This recognition usually starts with whoever brought snacks, to be honest.)
6. Everyone can learn from everyone
If you believe that people’s ethnicity, gender, or whatever is a good way to judge their skills or what they have to teach you, you’re limiting your own development as a software developer.
7. Test all your assumptions—and be ready to change them
When mentoring young developers I always emphasize that you shouldn’t prove yourself right, but to prove yourself wrong. I also encouraged them to do it with the same gusto that they try to prove themselves right.
A logical theory tends to have a means by which you could be proven wrong. If it doesn’t, it probably isn’t a very good theory. If you can’t prove it wrong, then and only then maybe try and prove it right. This is a similar idea to “believe in data,” but it’s not just about the data but the means in which you use it.
This article is shared by www.itechscripts.com | A leading resource of inspired clone scripts. It offers hundreds of popular scripts that are used by thousands of small and medium enterprises.
We are looking for talented software engineers to join our new team in Berlin. Pix4D develops drone mapping and photogrammetry software that enables tens of thousands of professionals around the world to process, visualize, assess and edit their own maps and 3D models.You will join our new development team in Berlin and work closely together with Pix4D’s multinational development team, located in Lausanne (Switzerland). You will work on the desktop line of Pix4D software, following agile methodologies. Within the team, your main task will be to use your software engineering expertise both to design and develop the software, and contribute good software engineering practices to the team.
You’ve learned by direct experience that the most important characteristic of software is maintainability. As such, you strive to keep your code simple, readable and testable. You understand the importance of testing and your definition of “done” contains tests ranging from unit tests through to useful functional and integration tests. You enjoy sharing good practices, pair programming and learning from others, and are passionate about your craft.
RESPONSIBILITIES
Participate in the design, implementation and maintenance of core software components
Define clean, safe and reusable APIs for applications
Collaborate in the full product life-cycle, from early concepts and prototypes to full deployment
Participate actively in the team and company’s agile process
REQUIREMENTS
Excellence in modern C++ programming: focused on code quality, simplicity, and ease of maintenance
Excellent knowledge of modern software engineering principles and techniques: continuous integration, code reviews, test-driven development, refactoring, incremental delivery, effective git and/or mercurial
3+ years experience
Knowledge on how to profile and debug applications on Windows, Mac and Linux
Qt framework or event-driven system knowledge are a plus
Flexible and open-minded to feel at home in a fast growing international technology company
BENEFITS
A company that faces problems together and values people first and foremost when achieving goals.
Highly collaborative structure maximizes each person’s expertise and creativity.
Active work culture and support system that reaches beyond working hours.
This article is shared by www.itechscripts.com | A leading resource of inspired clone scripts. It offers hundreds of popular scripts that are used by thousands of small and medium enterprises.