[外企工程师经验]softwere engineering common issue and best practice
BUSINESS
•Technology serves business
•Technology aligns with business
•Technology closely combines with business
NB business e.g. logistics/supply chain, banking, government, travelling etc.
focus on core business scenarios/core features(code modification)
PRODUCT&SYSTEM
•Technology serves product
•Technology aligns with system
•Technology closely combines with product
NB product e.g. apple iPhone, TenCent WeChat, Casio calculator, Benz car etc.
focus on core product usage
Development Tool
•ECLIPSE/IDEA/VISUAL STUDIO/NET BEANS/X CODE etc.
•IDE plugins e.g. lombok, clear case, ibatis, tomcat etc.
Issue1: if IDE does not work properly, how to deal with the situation
•Best practice:
•1 check the configuration, environment and version
particularly in a debug mode
BUILD TOOL
•ANT/MAVEN/GRADLE/the GNU COMPILER COLLECTION etc.
Issue1: how to solve depenencies
•Best practices:
•1 refer to official guide
•2 understand the specific build tool
mechanism, configuration
•3 eliminate the possibilities of the IDE's impact
•such as eclipse, visual studio
•4 watch out the build tool version
such as maven 3.5.4, ant 1.10.9
CONTAINER
Issue1: failing to start a container
•best practices:
•1 understand mechanism
•2 narrow down
a step by step
b root cause
•3 check error logs
Before checking, clean previous error logs and reproduce the issue
FRAMEWORK
•xml/annotation/json/yml configuration
Issue1: throw an exception or report an error when using a framework(particularly resulting in container e.g. tomcat start-up failure)
•best practice:
•1 refer to official guides
maybe not clear or correct or general or incomplete
•2 understand a specific framework
•3 don't be copy cats
•4 start from scratch
CVS(code version control)
•subversion/GIT/clear case
Issue1: how to avoid missing commits
•best practice:
•1 watch out add or commit directories
•2 check source code again
Issue2: how to resolve conflicts(possibly resulting in commit failure)
•best practice:
•1 use the built-in function to resolve conflicts
•2 start from scratch
CACHE
•Independent cache: memorycache/redis/oscache/ehcache etc.
•Built-in cache: mybatis/hibernate/spring/.net/php etc.
Issue1: independent cache inconsistency
•best practice:
•1 understand cache mechanism e.g. redis, memorycached, customized cache(java HashMap)
•2 start from stretch
Issue2: common cache issues
•best practice:
•1 understand and be familiar with these common cache issues
a cache miss
b cache expiration
c cache eviction
d cache black hole
e cache conflict(key)
Deployment
Issue1: what are steps for deployment?
•Best practice:
•1 follow the steps
•a build a package
install vs. package
•b run a programme/execute scripts
run in background
e.g. database script including create, init, update
b1 & for linux b2 start /min for windows
•c check a log
Debug
•developing, test and debugging environment debug
•IDE/tool/logging
•with front-end/back-end/db
•intern parties/third parties
Issue1: How to debug in production environment/with third parties?
•Best practice:
•1 logging mechanism
•2 narrowing down
•3 official documents
版权声明: 本文为 InfoQ 作者【极客罗杰】的原创文章。
原文链接:【http://xie.infoq.cn/article/fe82315653e1addf090b0ffa9】。文章转载请联系作者。
评论