在线之间解析典型的IT作业

例如,我录取了一个非常典型的空缺。必须立即说没有指出工资:许多人过滤掉了这些广告-可能是有充分的理由。但这非常具有启发性。为了方便起见,我在句子上编号以列出要求。但是,来源将不会被逐字引用:

1-C ++(Qt5)中的软件开发和现有软件的修订。2-在QtWidgets / QML上开发GUI。3-参与各种系统架构的设计。4-具有C ++开发经验。5-精通Qt5。6-具有开发多线程应用程序的经验。7-了解OOP。8-经验丰富的Linux知识。


现在,让我们看一下要点。或更确切地说,当我遇到这样的建议时,我是如何阅读它的。



1. C ++(Qt5)中的软件开发和现有软件的修订



至此,一切都很好。该库的当前版本和所使用的语言仅作简单说明。



2.在QtWidgets / QML上开发GUI



是的,QML是Qt的一部分,没有人提出异议。但是有一点要注意:当然,可以编写一个同时坐在两把椅子上的项目,但是干扰这两者是不良体系结构的迹象。也许人们只是QML开发?好吧,事实上:该项目是用QML编写的,但是您需要自己的组件,并且它们是使用QtWidgets用C ++编写的...尚不清楚,因此请继续阅读。顺便说一下,我们稍后再回到架构。



3.参与各种系统架构的设计



您是指什么特定系统?问题立即出现:您有几个?一个人需要同时处理这几个项目,还是将经典的Qt编程与QML和其他一些方法混合到一个庞大的项目中?从上一段中的QtWidgets指的是没有任何QML的所谓的“经典Qt开发”(我们制作一个表格-我们为其编写一个类)这一事实来看,很明显,程序员将不得不同时坐在两把椅子上。



4. C ++开发经验



它是干什么用的?这样一辈子从未见过C ++的QML-boxer不会来吗?还是现有开发人员的经验不足以从QML切换回QtWidgets?也许他们不想参与维护旧代码?



在我看来,一切都有些复杂:事实是,标准的QML功能通常不足以满足完整的应用程序-因此,您必须创建自己的QML插件。为此需要C ++。换句话说,为人们准备的项目已经部分地用QML编写,但是后来他们遇到了非常少的机会-然后QML盒子要么技能不足,要么忙于他200%的时间,只是在创建表格上工作,但是QML -C ++中的组件他以某种方式无法编写。显然我们将要做什么:这是对经典代码的支持以及新QML组件的创建。



但是,这不是一个,而是两个空缺。在经典的Qt代码中,通常会有大量难以修复的错误,而坐在支持团队中的程序员将忙于修复超过100%的时间(进行返工)。您也将无法“不时”编写新的QML组件,而您必须一直这样做。可能他们认为一个人将主要支持旧代码,有时“迅速而以某种方式”将其替换为QML。在这种情况下,出现了一个问题,谁参与了所有这种耻辱的架构?记住第三点:“我们就是那些救援人员。” 简而言之,做您想做的事,没有人要处理体系结构,没有人要雇用项目架构师,并且经理不是架构师,也不了解这个主题,因此一切都归咎于我们。



5.对Qt5的了解



真正?不,我只是简直不敢相信,对某事的了解不足,您就可以去某个地方找到工作。也就是说,通常值得一提,否则,它们会带来坏事吗?也许我们会在此时解密某些内容?事实证明,当他们写这篇文章时,他们认为他们目前的开发人员对Qt的了解不够(无论这意味着什么),如果这样,那么他们已经在试图节省程序员的钱。



6.具有开发多线程应用程序的经验



确实,他们破译了。使用Qt开发多线程应用程序需要非常好的知识。但是我个人在此要求上读了一些完全不同的内容,而不是他们写这个短语时可能要表达的意思。首先,让我们弄清楚为什么Qt根本是多线程的?



Qt的经典部分是基于事件的库。但是,后来添加了一些功能,使您可以运行线程。但是,整个接口仍然在单个主线程中工作,并且无论您如何将它们与信号插槽连接,直到您跳出上一个函数之前,其他接口都不会被调用。



通常在非接口级别需要多线程:在Qt应用程序中,客户端-服务器分离经常以一种或另一种方式使用-如果服务器在架构上设计得不太好(例如,其调用严格同步),则在这种情况下,将需要线程来组织等待在界面级别。申请空缺是什么意思?



首先,客户端和服务器之间的前端设计不佳或根本不存在。我们尽力编写了代码,并且至少部分业务逻辑与客户端代码混合在一起,并且我们将不得不部分处理系统编程(完成系统程序员在服务器级别上未完成的工作)。在这里我必须说,在这样的团队中通常有一个系统程序员-但非常具体。是他来参加采访,向您问有关TCP / IP协议栈的问题,尽管是他被迫设计系统,以便窗口中根本没有系统代码。顺便说一句,他获得了最高的薪水-您将不得不使用多线程编程来弥补他的缺陷。



第二:由于同步调用,该程序已经非常慢,以至于公司的管理层(不要与经理混淆)已经收到了投资者的用户反馈。这种反馈是简单的,但是却非常激动……现在,它要求程序员加快速度,并尽快完成。下一段很可能会向我们暗示这种情况。



7.了解面向对象



哦……这是“我可以用C ++编写代码,但我不知道什么是OOP”一类的东西。那样行不通。也许除了研究生以外,他们只用C ++编写了一个C风格的课程,并且可以通过年龄和对空缺的反应立即识别出来。因此,意味着别的东西。到底是什么



根据我自己的经验,我可以认为该程序是众所周知的搞砸了我们。当然,一切都像往常一样开始,非常酷,有趣和有趣:正确的体系结构,抽象层以及通常伴随着胜任的项目的一切。但是随后功能争夺战开始了,模糊了抽象的层次。最有可能的是,如果证明该项目是旧项目,则其原始开发人员在QtWidgets上进行了开发,但他们离开了很长时间-不久以前,开始雕刻QML的非常年轻的学生设法代替了他们工作(向老板保证这很酷) ...反过来,他也长大了-意识到他们最初编写的类似面条的代码最终从抽象变成了馄饨(请参阅反模式)。现在,对于每个窗口,将调用十二个几乎为空的微类,而不是一个普通的表单类,它们在它们之间(而不是直接)通过某种增压注射器(在几年前很流行)处理数据。这种杂耍以以下事实结束:在经过数十个额外的层之后,您偶然发现了相同的类似面条的代码,在项目的一个僻静角落中的某个地方,“待办事项:当时间出现时,人工重写所有内容”



结果,对代码的理解程度不高,以至于无法再对其进行开发。程序员很久以前就弄清楚了所有内容,并将其丢弃在更热情好客的地方。但是,项目管理人员没有学到任何东西,现在(在看到一个简单的QML脚本之后)认为可以借助另一个灵丹妙药快速“解决”该问题。以下几点告诉我们,很可能是这种情况:



8.熟悉Linux的经验丰富的用户



最终,很清楚该项目的目的。一个人可能会争论,一个人可能会争论(在评论中),但是在困难时期,Linux开发根本不是自由软件的理想(我们都可能梦想过)。在百分之九十九的情况下,这些人都是监视所有事物和所有人的想法的安全防护人员,而对于Linux,我们的意思是Astra,因为Major同事表示是这样。也就是说,这不是一家IT公司,没人听说过那里的常规架构方法,所有问题(从经验中)都可以通过“解决问题”来解决。因此得出结论:没有给出薪水是有原因的。在这里,您需要聘请三名上级(每个中级和六月的人数适当)来完全重构代码,而不是寻找“能解决所有问题的人”。但是,雇主买不起因为这只有在具有成熟投资市场的正常经济中才有可能。但这是一个不同的话题,并且是在其他时间。



All Articles