Some of these skillsets, of course, require College education, but other skillsets can simply be through a self-learning process. The two disciplines overlapping the most are Computer Science and Software Engineering. Both focus heavily on the development of software, whether that be an operating system, independent applications, programs for Law Enforcement, video games, and more. However, Computer Science is more geared towards robotics, bioinformatics, and new ways to use computers.
There is a broad list of things you can specialize in within Computer Science. He built a plane with Mylar, aluminium tubing, and wire. Compare this feedback loop to a more traditional engineering discipline based upon something less malleable than software: traffic engineering. This is a branch of civil engineering that uses engineering techniques to achieve the safe and efficient movement of people and goods on roadways.
In this case the engineering medium is road signs, lane markings, asphalt, road size and shape. In some cases, the traffic engineer will look to move roads through entire buildings. The behaviour of traffic can be very complex, with surprising effects from interventions think of adding a lane to a busy road, causing induced demand, causing worse traffic delays.
In all these examples, the feedback loop for understanding if the intervention was successful can range anywhere from days to years. In order to reduce the risk of untested changes, traffic engineers must use models of the road, and run the simulation in software. In summary: software development that makes use of feedback loops to help understand and direct the problem solution is most definitely engineering.
One question is left to ask: where does Software Craftsmanship fit in the context of software engineering? My take is that Craftsmanship is the focus on the skills that are known to be effective, a body of knowledge on the techniques that are effective. Skills without engineering means that you can build the wrong thing very well.
Both are required. This post was prompted by a discussion between Dave Farley and myself when we were both at the book launch of Infrastructure as Code by Kief Morris. This is how I code. Trying to account for all of these imagined problems leads to very complex solutions. Complex solutions are difficult to reason about, difficult to implement correctly, take more time to implement than simpler or more naive solutions.
And it was fine. I am starting to wonder if this is something that can even be taught. Is this a conclusion one needs to come to on their own? Part of being a great developer is being the best person you can be. There are three life categories in which discipline can give you more freedom: health, wealth, and mental state.
Maintaining your health largely consists of doing somewhat boring things on a regular basis. Examples include getting enough sleep , exercising , eating healthy food , and brushing your teeth. There are lots of books and courses that complicate these activities, but gaining all the information you can is far less important than simply developing good habits.
You should start with things that you find enjoyable. Personally, I like hiking and swinging kettlebells. For other healthy habits, start small and work your way up. Focus on a small number of habits at a time until they become second nature. Then try a few new things. There are numerous freedoms to be gained from adopting healthy habits. Exercising and eating healthy allow you to do a wider range of physical activities.
For example, I drastically lowered my carbohydrate intake and doubled my maximum hiking distance, which made me feel better and want to do even more.
Another benefit of maintaining healthy habits is energy. More energy means you can do more with your limited time. I optimize most of my healthy habits toward increasing mental energy. Additionally, you gain financial freedom, because paying to fix health issues is expensive. Finances are another area where discipline creates freedom. The biggest upside is not being stuck in a job you hate. If you are living at the edge of your means, you are tied to that paycheck.
Even if you find a better job that pays more, you might not be able to handle the pay gap between leaving one job and taking that next, better job. Living below your means allows you to quit jobs you hate if necessary. Debt also reduces your options. There are lots of strategies for reducing debt, but all of them revolve around one simple concept: Your income needs to exceed your expenses.
Attack this problem at both ends. Increase your income by building a business or getting more money at your job. Find ways to buy or do the things you enjoy for less money.
0コメント