做什么软件都一样,甚至前端后端都差不多(前端分界面设计和功能实现,这里指后者),程序员面对的问题都是大同小异的。比如手机软件前端开发者面对的问题为“如何令动画效果达到60帧”、“如何降低后台任务的资源占有率(CPU,内存,能耗),”等;而服务器后端开发者面对的问题则为”如何缩短请求响应时间“、”如何提高任务队列的吞吐量“,等。虽然是不同领域的问题,但都是要求程序员设计出高质量的程序(性能,可靠性)。

做软件真正谈得上区别的是程序员能够解决的问题的难度。比如,同为前端开发者,有的程序员只能解决“如何弹出一个模态窗口”的问题,而有的则能解决“如何实现一个卡片堆叠式动画效果(类似 iOS 7 提醒事项由任务列表退回主页面时的切换效果)“,甚至有的能解决”如何实现一个开销极低的图形引擎“;又如,同为后端开发者,有的只能解决“如何优化某条数据库查询”,而有的则能解决“如何实现一个支持多前端的API服务器”,甚至有的能解决“如何实现一个高可用性的数据库”。