软件服务顾问与实施顾问
At the time of publishing this article, I have completed 2 years of working as a developer at ThoughtWorks. I thought this would be a nice opportunity for me to reflect back on my learnings and realisations over my last two years here. Maybe you will find these insights relatable or maybe not, either way do give it a read.
在发布本文时,我已经在ThoughtWorks上完成了2年的开发工作。 我认为这对我来说是一个很好的机会来回顾我在这里过去两年的学习和认识。 也许您会发现这些见解是相关的,也可能不是,无论哪种方式都可以使它读懂。
I joined ThoughtWorks as a graduate developer after finishing my Bachelor’s in Electronics and Communication. I didn’t go through any sort of internship programme during my college, and, as a result, I was clueless, to say the least, about enterprise software. Nevertheless, I have been fortunate enough to learn many things here at this wonderful company.
我在电子和通信专业获得学士学位后,以研究生开发人员的身份加入ThoughtWorks。 我上大学时没有参加过任何实习计划,因此,至少可以说,我对企业软件一无所知。 不过,我很幸运能在这家很棒的公司学到很多东西。
1.解决一般问题 (1. Tackling problems in general)
It is quite normal to be overwhelmed when a difficult problem is presented to us. Working with some smart minds, I have realised that big problems are not solved by striking a dagger at the heart of the problem. Instead, the big problem is often broken down into smaller problems and solved incrementally to achieve the end goal. Properly dissecting a big problem is half the work done.
当向我们提出一个困难的问题时,不知所措是很正常的。 通过一些聪明的头脑,我已经意识到,大问题不能通过在问题的核心上打上匕首来解决。 相反,大问题通常分解为较小的问题,并逐步解决以实现最终目标。 正确剖析一个大问题是完成工作的一半。
2.深入研究一切 (2. Deep dive into everything)
Most of the time, developers work under a deadline of finishing the task at hand. As a result, they only scratch the surface of a particular language, tool or framework in order to get things done on time. In this process, developers end up having shallow knowledge of the technology used.
在大多数情况下,开发人员的工作期限是完成手头的任务。 结果,它们只刮擦特定语言,工具或框架的表面,以便按时完成工作。 在此过程中,开发人员最终对所使用的技术有了较浅的了解。
I found this very harmful in the long run and I’ve realised deep diving into tools and technologies we regularly use is the best way to move forward for a developer. Of course it requires a lot of effort- neither Rome nor a good software engineer was built in a day.
从长远来看,我发现这非常有害,并且我已经意识到深入研究我们经常使用的工具和技术是开发人员前进的最佳方法。 当然,这需要大量的工作-一天之内既没有罗马,也没有优秀的软件工程师。
3.质量胜于数量 (3. Quality over quantity)
Churning out lines of code isn’t a metric for productivity. I’d prefer writing five lines of tested code in a day that are readable, maintainable and extensible over writing unreadable and unmaintainable functions to get my work done quickly. Although getting work done fast is important, it’s equally important to not compromise on quality.
编写代码行并不是衡量生产力的指标。 我宁愿一天编写五行经过测试的,可读性,可维护性和可扩展性的代码,而不是编写不可读且不可维护的函数,以便快速完成工作。 尽管快速完成工作很重要,但同样重要的是不要牺牲质量。
I have been in situations where I have given priority to refactoring over delivering new features. In the long run, this genuinely helps.
我一直在优先考虑重构而不是提供新功能。 从长远来看,这确实有帮助。
4.测试比我们想象的还要多 (4. There’s more to tests than we think)
As a developer, tests are your best friend. Be it unit, integration, contract or end-to-end, tests serve much more purpose than just determining the quality of software you or your team deliver. Well written tests are a safety net for refactoring code. As it is often said, tests are the best documentation of your code there is. Personally, I couldn’t agree more with this. I always look at tests when I am exploring functions or apis.
作为开发人员,测试是您最好的朋友。 无论是单元测试,集成测试,合同测试还是端对端测试,测试的目的不仅仅是确定您或团队交付的软件的质量。 编写良好的测试是重构代码的安全网。 正如通常所说的那样,测试是最好的代码文档。 就个人而言,我完全同意。 探索功能或api时,我总是看着测试。
As a developer, writing tests should be equally important as delivering a feature. Even better, start with Test Driven Development(TDD) if you’re not doing it already. This helps in giving a direction to the design of your code as well. If you’re oblivious to tests, you’re probably doing it wrong.
作为开发人员,编写测试与提供功能同等重要。 更好的是,如果您还没有开始,请从测试驱动开发(TDD)开始。 这也有助于指导您的代码设计。 如果您没有进行测试,则可能是做错了。
5.沟通是关键 (5. Communication is key)
As a software consultant, it is of paramount importance to be good at communicating with other technical and non technical people. More often than not, I have found myself working with non technical people and it becomes extremely important to make sure that non technical jargon is used while explaining the work I do. Bridging the gap between tech and business groups is what makes a good software consultant.
作为软件顾问,擅长与其他技术人员和非技术人员进行沟通至关重要。 我经常发现自己与非技术人员一起工作,并且在解释我的工作时确保使用非技术术语变得极为重要。 弥合技术团队与业务团队之间的鸿沟,才是一名优秀的软件顾问。
6.对抗冒名顶替综合症 (6. Battling impostor syndrome)
This one’s very important to me personally since I have always had a problem with believing in myself. I would always think that my peers and colleagues are better than me and I am not worth my salt. Working with smart folks can solidify this misconception (or at least it did in my case).
这对我个人而言非常重要,因为我一直对自己的信念有疑问。 我总是认为我的同龄人和同事比我更好,我不值得一干。 与聪明人一起工作可以巩固这种误解(或者至少在我看来是这样)。
It’s important to understand that none of this is actually true and these thoughts are a manifestation of our fears and insecurities. Every person has something unique to bring to a team and although it’s important to have a good career, one shouldn’t turn it into a rat race. The destination remains the same, the journeys different.
重要的是要明白,这一切都不是真的,这些想法是我们恐惧和不安全感的体现。 每个人都有给团队带来的独特之处,尽管拥有良好的职业生涯很重要,但不应将其变成一场激烈的竞争。 目的地保持不变,旅程不同。
7.工作与生活的平衡很重要 (7. Work life balance is important)
You might think that work life balance should not be a priority for someone who is starting out in the industry but I don’t think that’s true. A healthy mind requires adequate involvement in work and leisure. Sure, at times, long hours of work are necessary but making it a habit can be very hazardous.
您可能会认为,平衡工作生活不应是刚开始从事该行业的人的优先事项,但我认为这不是事实。 健康的思想要求充分参与工作和休闲。 当然,有时需要长时间工作,但养成习惯可能非常危险。
Personally, I have felt more focused at work when I have drawn a fine line between my work and leisure hours.
就个人而言,当我在工作时间和休闲时间之间划清界限时,我会更加专注于工作。
I’ve written this article because I’ve been fortunate enough to work with some smart people and learn some amazing things along the way. This is just the start of a long and interesting journey as a software consultant and I can say that I am eagerly looking forward to what this industry has to offer to me or rather what I have to offer to the industry. Thanks.
我写这篇文章是因为我很幸运地与一些聪明的人一起工作,并在此过程中学习了一些有趣的东西。 这只是作为软件顾问漫长而有趣的旅程的开始,我可以说,我热切期待这个行业向我提供的服务,或者更确切地说,是我向该行业提供的服务。 谢谢。
翻译自: https://medium.com/@shayan1337/learnings-from-my-first-2-years-as-a-software-consultant-8978eece7f2e
软件服务顾问与实施顾问